Xin chào. Mình là một cậu học sinh tập tành học làm một con game cho vui. Và đây là câu chuyện về hành trình "Lửa thử vàng nghịch code thử game" của mình

Ước mơ

Ngay từ nhỏ mình đã chơi và trải nghiệm những con game huyền thoại từ thời kỳ sơ khai. Chỉ cần một chiếc điện thoại có thể trải nghiệm hơn cả trăm trò.
Và một trong những con game đã tay nhất mình từng chơi là DanTheMan. Mình đã phá đảo khá nhiều lần trong thời gian rảnh. Cách duy chuyển, combo đều mượt mà phê không có gì để chê.
Hồi đó chưa biết tiếng anh, chỉ biết đấm đá. Giờ biết cũng chẳng muốn hiểu
Hồi đó chưa biết tiếng anh, chỉ biết đấm đá. Giờ biết cũng chẳng muốn hiểu
Là một người thích hỏi sẽ "ra sao nếu... ?" nên mình luôn muốn game có thêm nhiều cơ chế để tăng sự thú vị cho game. Nào là phép thuật, C4, thanh gỗ con robot đang cầm... Sẽ ra sao nếu mình có thể xài những thứ đó để phá đảo game ?
Câu trả lời đơn giản là tải mod hoặc tự làm. Nhưng thời đó thì mình thích tự làm chủ, thích thêm gì thì thêm không bị giới hạn bởi gì cả. Thế nên mình quyết định thử sức với lập trình và không dừng lại ở mod mà còn muốn làm một tựa game hẳn hoi.

Tìm hiểu cách làm

Mình hứng thú làm game khi lên lớp 8 được trải nghiệm pascal. Máy tính in ra theo những gì mình muốn. Cảm giác cứ như vừa khai phá "Châu lục thứ bảy" vậy.
Khoảnh khắc khai phá ra "Châu luc thứ bảy"
Khoảnh khắc khai phá ra "Châu luc thứ bảy"
Làm game là lập trình. Lập trình thì viết code. code cũng là ký tự mình viết được cả thôi thế có gì khó đâu.
Đó là những suy nghĩ ngây thơ của một đứa chỉ biết vô nét chơi liên minh mà cũng bị lừa mất cái tài khoản yêu dấu.
Mình từng nghĩ làm ra một con game là vô cùng ngầu. Bạn bè hăng say chơi chung với nhau. Giờ nó không khác lắm. Làm ra một con game khiến mọi người vui vẻ khi chơi nó còn hơn cả ngầu.
Để làm cho mình ngầu lòi tôi đã nghiên cứu rất nhiều thứ về game trên youtube. Một mớ lý thuyết khổng lồ. Những thứ mà tới giờ đã chẳng đi đâu xa. Lúc đó mình còn không hiểu là mình đang xem hay nghe cái gì nữa. Thấy cái tiêu đề ...game design... thì cứ xem thôi. Chẳng nghiêm túc mấy.
Sau khi tổng hợp lại thì mình chọn soul knight để học hỏi và cho thể loại là metroidvania mang phong cách anime.
Toàn bộ quá trình chỉ có một mình mình. Tự học, tự nghiên cứu. Lúc đầu chẳng đáng nói. Nhưng lúc sau đuối hơn trái chuối và có lúc mình cũng chỉ muốn bỏ đi cho xong.
Nhưng biết sao được. Mỗi lần chơi lại DanTheMan đấm đấm đá đá tôi lại nghĩ game của mình sẽ tuyệt lắm khi có cầu lửa các thứ. Tuy thỏa mãn nhưng vẫn có cảm giác thiếu thốn trong lòng.

Nghiêm túc lên kế hoạch

Hè lớp 8 cũng là lúc kế hoạch bắt đầu. Sức học mình cũng ổn nên ôn thi lớp 9 không quá nặng nề.

Tập vẽ

Một hành trình đau lưng đến giờ vẫn tiếp diễn. Khả năng vẽ hiện giờ của mình đã lên mức trung bình. Thế mạnh là kiến trúc. Và thể loại vẽ sẽ chọn là pixel art.
Tập vẽ một chút còn game đợi 2077 rồi ra
Tập vẽ một chút còn game đợi 2077 rồi ra

Một cốt truyện thật hay lẫn tăng điểm môn văn

Mình từng nghĩ một ngàn từ là vô cùng dài và viết tới đó là đủ. Nhưng từ khi đọc tiểu thuyết mình mới biết một ngàn từ là quá ít so với cả triệu từ trong cuốn tiểu thuyết mình thích.
Việc viết khá bấp bênh nhưng nó đã thành thói quen sau mỗi buổi tối viết nhật ký. Có thể nói viết bài trên spiderum cũng là một cách để luyện tập.
Và giờ phần hứng khởi nhất. Lập trình ! Mình đã nghĩ nó dễ như ăn bánh. Bấm bấm mấy chữ giống hacker trong phim sợ lỡ tay đánh sập điện nhà mình.

Ngôn ngữ lập trình

Mình chọn học C là ngôn ngữ đầu tiên. Lúc đó còn chẳng thèm ghi chú lấy một từ và cũng chỉ qua loa nghĩ mình sẽ vượt qua như trên lớp tin học. Nhưng đó không phải tự học và cũng toàn kiến thức cơ bản về cú pháp chứ chẳng phải cách tận dụng. Giống như việc có điện thoại cũng chỉ lướt face xem youtube.
Mình vận dụng điện thoại để học code. Không được suông sẻ lắm nhưng đành thôi vì không có máy tính để làm. Ngày ấy mình ngây thơ đến nỗi nghĩ rằng có thể làm một con game trên điện thoại. Và thật ra là mình đã làm được... đại khái là thế.
Cảm thấy C dài dòng đến phát ngán nên quyến định bỏ đi và kết thân với C# (đọc là xi sáp) - Một ngôn ngữ mới thuận tiện cho việc làm game.
Mình nghiêm túc hơn, thất bại nhiều hơn. Và cũng bắt đầu ghi chú. Những dòng chữ dài đằng đẳng mà mình không muốn nhìn vì chẳng thể hiểu nổi một từ mà vẫn cứ ghi.
Và sau bao nhiêu nỗ lực thì cuối cùng mình đã làm ra trò người treo cổ. Không phải là tối ưu cũng chẳng hề vui khi chơi. Nhưng niềm vui khi dành ra vài ngày hoàn thành một dự án là một hạnh phúc nho nhỏ trong lòng.
Mình khá mệt khi viết ra một chương trình không sử dụng cách nhanh, dễ, gọn hơn để làm. Sau đó thì mình học tiếp một cách vui vẻ cho tới khi...

Mảng và thuật toán sắp xếp

Có thể hiểu mảng như một cái thùng có thể chứa nhiều thứ cùng loại bên trong. Nhưng vị youtuber thân mến đã mang đến cho tôi thuật toán sắp xếp nổi bọt, sắp xếp thứ này, sắp theo trình tự kia, sắp tới sắp lui một cái mảng.
Mình chẳng hiểu một từ gì khi nói đến những thuật toán đó.
Vì muốn mọi thứ phải thật hoàn hảo và có chiều sâu nên mình quyết định cắm đầu vào học và từ bỏ ngay sau đó vì một sự thiếu sót trong nghiên cứu.
Mình còn không biết IDE - chỗ để thực hiện code - là một thứ có tồn tại trong khi mình đang sử dụng nó. Mình làm theo mọi chỉ dẫn. viết code và chạy chương trình. Chương trình của người dạy chạy theo ý muốn trong khi của mình lại xuất hiện lỗi.
Mình kiểm tra lại. Chắc mình sai mấy cái cú pháp ấy mà. Khi nhìn dòng lỗi. Mình nhận ra một hàm không thể dùng trong IDE đang sử dụng.
Thử mọi cách tải đủ loại IDE khác. Không có cái nào cũng không hoạt động. Vì mình nghĩ không học thứ đó những thứ còn lại sẽ không học được. Và thế là mình quyết định nghỉ.
Một thời gian dài trôi qua kể từ khi đó. Mình cũng mất một lượng kiến thức lớn vì không có nền tảng tốt. Nhưng cho đến khi mình thực hiện một trong những quyến định có tính "cách mạng" với việc học lập trình.

AIDE

Lâu lâu mình lại ở trên Appstore dạo quanh xem có gì thú vị. Đập vào mắt mình chính là một IDE hỗ trợ công cụ lập trình game. Thêm cả lập trình một cái web nữa. Lại còn có tài liệu để học.
Mình hứng khởi tải thử và nó không sử dụng C#. Đó là một ngôn ngữ khác. Mình đã khá phân vân liệu có nên học không. Nhưng đó có thể là cơ hội duy nhất nên mình không suy nghĩ nữa và bắt tay vào học cách sử dụng.
Khi mình thử khóa lập trình game bằng libGDX - một công cụ làm game. Mình đã vô cùng bất ngờ khi nghịch code và game chạy được hơn cả mong đợi. Hình ảnh, âm thanh đều có thể sử dụng được không như một chương trình chỉ in ra chữ.
Đó là lúc mình có thể tin tưởng công cụ này để bước tiếp con đường lập trình còn dang dở.
Mình miệt mài học Java, ngôn ngữ libGDX sử dụng để làm con game mơ ước của tôi. Và mình đã "fall in love" với Java khi mọi thứ mình học đều có thể hiểu được và ghi chú rõ ràng hơn trước.
AIDE không có một số tính năng cho Java. Nhưng kể cả vậy đó là những tính năng có thể thay thế nếu vận dụng libGDX.
Cắt ngang những thứ mình đang học. Mình cùng mẹ lên dì chơi. Và vô tình ở lại vài ngày.

Bước ngoặt: Lên dì chơi

Có vài điều mình bị hấp dẫn khi qua dì chơi. Trước đây mình từng ở nhà dì một thời gian dài. Buồn buồn thì bật tivi. Vui vui thì ra ngoài hít thở không khí trong lành. Không gian phòng rộng rãi dù là nhà trọ. Mình khá thư thái khi ở đây.
Và thích một điều nữa là anh họ mình có laptop hay cho mình chơi mấy trò như pubg hay xếp bài lúc rớt mạng. Đôi lúc hai anh em cũng ra net để chơi đột kích so tài rìu với Ỷ thiên kiếm.
Khi mình rủ anh làm game cùng. Mình đã khá mong chờ hai anh em cùng nhau làm. Nhưng sau khi thấy mình chật vật không biết xài máy tính, tải rồi xóa không hết file làm phần mềm lỗi tùm lum. Chỉ còn bản thân tiếp tục nghiên cứu.
Anh mình chỉ tham khảo thôi nhưng gặp ngay đứa nghiệp dư là mình. Tải rồi xóa file là phần setup đau cả mắt nhức cả đầu.
Trải qua khoảng thời gian setup đầy ác mộng cho libGDX trên máy tính. Mình đã từ bỏ việc xài libGDX và sử dụng IDE khác để làm game. Một thứ không được khuyến khích cho người mới vì nó không tập trung để làm game mà còn nhiều thứ khác.

Eclipse và thành công đầu tiên

Giữa đêm mình nhìn lên màn hình. lúc đó là 11 giờ tối. Sau một buổi tối setup khốn khổ thì Eclipse đã tải xong. Mình mỉm cười nhẹ rồi tắt máy đi ngủ để mai tính tiếp.
Sáng hôm sau. Mình mở máy tính lên. Vào Eclipse với không một chút kì vọng. Và việc đầu tiên khi tạo một file mới là chương trình "Hello World!". Mình chạy thử chương trình. Việc nó không in ra bất kì lỗi gì làm ngày hôm đó vui quá trời không diễn tả nỗi cảm xúc luôn. Cuối cùng cũng có cái gì đó xài được.
Mình đã có khoảng thời gian vui vẻ vừa học Java vừa làm game. Đây là lần đầu tiên mình thật sự làm game. Phần cơ chế game cuối cùng mới có sự khác biệt. Nói cho to lớn thế thôi chứ mình chỉ làm theo hướng dẫn từ 5 năm trước. Kênh là RealTutsGML. Cũng đã dừng đăng video từ khá lâu rồi.
Tuy vậy nhưng các tính năng vẫn xài được. Đặt cho mình nền tảng về cách một game được vận hành như nào. Cách mà lập trình thật sự áp dụng vào game đôi lúc rất đơn giản nhưng cũng rất khó để nghĩ ra câu trả lời.
Khoảnh khắc mình di chuyển nhân vật. Né đạn bay tứ tung. Giống phim "Ma trận" trên đồ họa 2D. Mình cũng muốn để cái video để mô tả game đó như thế nào nhưng tiếc là đã xóa mất rồi. Lý do gì thì phần 2 sẽ rõ.
Hình ảnh minh họa. Vẽ trên ms "pain" để tối đa hóa dung lượng máy tính.
Hình ảnh minh họa. Vẽ trên ms "pain" để tối đa hóa dung lượng máy tính.
Mình đã trải qua 9 bài hướng dẫn. Trung bình một video 40 phút. Sau những giờ phút học hỏi thứ mới là vài ba phút nghịch con game còn chưa được hoàn thành. Chỉ đơn giản là né đạn sống càng lâu càng tốt nhưng vui hơn biết bao trò chơi khác cũng né đạn nhưng khó hơn. Nhiều chế độ hơn. Có cả skin để cho đẹp mắt.
Di chuyển thì không thể như DanTheMan do thể loại khác nhau. Nhưng nó vẫn rất mượt mà và đã tay né đạn boss không trượt phát nào. Điểm cao nhất của mình cũng gần 4000 điểm. Và nghịch code một chút mình lên hơn 4 lần số điểm :)))
Có lẽ niềm vui khi chơi là do chính tay mình làm ra. Dù là bất cứ thứ gì. Cứ quyết tâm, đầy nhiệt huyết và nắm lấy cơ hội khi có thể để đạt được ước mơ của mình.
Lâu lâu nản là chuyện bình thường. Nghỉ ngơi một chút, nặng thì vài hôm. Nhưng đừng lâu quá kẻo quên hết mọi thứ, công sức khi ấy thành công cốc mất. Và nhớ lên kế hoạch rồi làm chứ không như mình làm được vài ba hôm rồi nghỉ một tuần. Rồi lại làm vài ba bốn bữa, nghỉ hai tuần...
Chặng đường vẫn còn đó. Mình vẫn đang tiếp tục bước trên con đường làm game đầy mơ ước này.
Đây là bài viết đầu tiên của mình trên spiderum. Mong nhận được sự góp ý của mọi người.