Hướng Dẫn Lập Trình Game Cho Người Chưa Biết Gì
2 năm trước, tôi chỉ là một cậu học sinh trung học 17 tuổi, không hề biết gì về code. Nhưng tôi vẫn không ngại tìm tòi học hỏi và trong vòng vài tháng tôi đã cho ra trò chơi đầu tiên của mình trên Steam.
Tính tới thời điểm hiện tại, tôi đã làm ra hơn 10 tựa game khác nhau cho cả web, và mobile, với tổng cộng hơn 1,9 triệu lượt chơi.
Trong bài viết này, tôi sẽ chia mỗi giai đoạn thành 2 phần:
và mà tôi đã rút ra được
cần thiết cho các bạn
1. Design 📝
Bạn đã có một ý tưởng tuyệt vời*
Nhưng làm thế nào để bạn có thể viết nó lên giấy?
Mỗi người sẽ có một cách riêng. Một số có thể soạn tài liệu lên đến 60 trang. Những người khác, giống như tôi, chỉ viết một trang ghi chú khá cẩu thả, chỉ có thể một mình hiểu. Thành thật thì tôi không biết điều gì tốt nhất cho bạn nhưng tôi có thể đưa ra gợi ý về những gì cần viết:
Điều gì làm cho ý tưởng trò chơi của bạn tuyệt vời? Đối với tôi, đây là điều quan trọng nhất để viết ra. Một khi bạn nắm bắt được điều này, bạn có thể viết xuống ba điểm tiếp theo dễ dàng hơn nhiều. Trò chơi của bạn có phải là thứ kích thích tư duy không? Hay gây tranh cãi? Là nó có một kết cục bất ngờ? Hoặc, nó đang làm điều gì đó chưa bao giờ được thực hiện trước đây?
- Người chơi của bạn cần phải làm gì? Và vì mục đích gì? Đây chính là phần gameplay của bạn. Nó có thể đơn giản như cách nhấn QWOP để di chuyển trong trò chơi QWOP, hay bấm các nút để trò chuyện trong Mystic Messenger, tới hàng tấn combo wombo nút bấm trong Dwarf Fortress.
- Người chơi nên nhớ về cốt chuyện của trò chơi như thế nào? Những cảm xúc nào họ nên có khi hoàn thành trò chơi của bạn? Mỗi trò chơi đều có một câu chuyện. Có thể là những con số trong 2048, hay xây dựng một quốc gia trong Civilization, hoặc những tương tác thầm lặng trong Monument Valley. Hãy nghĩ về câu chuyện sẽ được người chơi cảm nhận trong trò chơi của bạn.
- Trò chơi của bạn tạo ấn tượng gì? Hình ảnh? Âm thanh? Ấn tượng đầu tiên rất là quan trọng. Ấn tượng đầu tiên sẽ cuốn người chơi vào trò chơi. Có lẽ, bạn sẽ cung cấp cho trò chơi của bạn một sự rung cảm retro với đồ họa pixel và âm nhạc chiptune.
- Notes for Mac (👍)
- Google Docs (👍)
- Trello
- Google Drive
- GitHub (👍)
- Unity Collab.
2. Art 🖌
Nếu bạn đã lên kế hoạch cho ý tưởng của mình; xin chúc mừng, bạn đã làm được khá tuyệt vời! Bây giờ, bạn có thể phát triển trò chơi thực sự.
(Nếu bạn không biết cách viết code, tôi khuyên bạn nên thực hiện bước 3, , trước )
Không biết làm thế nào để vẽ? Đừng sợ. Bất cứ ai cũng có thể vẽ ra một thứ đẹp đẽ với 3 nguyên tắc hình ảnh cơ bản: màu sắc, hình dạng, không gian.
Hãy suy nghĩ về cách bạn có thể làm cho nó trở nên – có một bảng phối màu riêng biệt, phông chữ, hình dạng và (các) biểu tượng – nhưng vẫn thực tiễn. Những thông tin quan trọng có thể đọc rõ và dễ hiểu hay không? Có gặp phải vấn đề phân tâm do màu sắc / phông chữ / biểu tượng?
Bạn có hai lựa chọn:
. Vẽ ra từng khung hình của animation. Đối với điều này, bạn nên sử dụng các sprite sheet với
TexturePacker
(hoặc nếu bạn đang sử dụng Unity, thì xài Sprite Packer).
. Vẽ từng chi tiết động, sau đó tạo hiệu ứng cho vị trí. Có thể nhanh hơn, dễ dàng hơn và tiết kiệm bộ nhớ. Nếu bạn đang thực hiện 2D và sử dụng Unity, hãy thử chỉnh sửa các trục sprites hoặc
Anima2D
.
patterned asset để tạo hình ảnh lát gạch và lưu bộ nhớ.
asset với các đường viền không thể mở rộng được nhưng bên trong thì có thể mở rộng để tạo các hình ảnh có thể mở rộng và giúp tiết kiệm bộ nhớ.
Đặt kích thước của từng asset là bội số của 4 hoặc lũy thừa là 2 để tiết kiệm bộ nhớ. Điều này phụ thuộc vào cách bạn đang nén asset.
Photoshop (👍).
Sketch.
Photoshop (👍).
Gimp.
Paint Tool SAI.
Blender (👍).
Maya.
Max.
Behance
(👍).
KennyNL
.
Open Game Dev Art
.
Dribbble.
Behance
(👍).
itch.io
(👍).
Debug.Log(“Oh boy! Time to code!! ^_^”);
Bước đầu tiên của bạn? Quyết định về một và một (Integrated Development Environment – về cơ bản, nó là một ứng dụng cho phép bạn viết mã).
Bước thứ hai? Lập trình.
Bạn không biết cách viết code? Đừng lo lắng. Bạn có thể học.
Những nguyên tắc cơ bản của CS này là đủ để bắt đầu. (Tất cả các ví dụ code ở đây là trong C ++, một trong những ngôn ngữ chính mà framework phát triển game Unity 3D sử dụng.)
1) . Bản chất của Code chính là Data. Data đó được lưu trữ trong các biến. Bạn có thể khai báo một biến như sau:
int i = 0;
Trong đó, int
là kiểu dữ liệu. i
là tên biến. Và = 0
gán 0 là giá trị biến.
Vậy đây là gì?
string s = "pusheen is best cat";
string
là kiểu dữ liệu. s
là tên biến. Và “pusheen is best cat”
là giá trị biến.
Một số kiểu dữ liệu phổ biến: int
và long
là số nguyên. `float
và double
là số thập phân. Và chuỗi (string) là bất kỳ câu nào.
2) . Nếu câu lệnh đánh giá nếu một điều kiện nhất định là đúng. Nếu có, thì code bên trong câu lệnh if
sẽ được chạy:
if (true){ //true is always true! doThings(); //I'm inside the if statement's brackets; run me! }
Nếu điều kiện không đúng, sẽ chuyển qua đánh giá các điều kiện else if
khác nếu có:
int i = 1; if (i == 0){ doThings(); } else if (i == 1){ doOtherThings(); //I'm gonna be run! }
Hoặc, chỉ cần chạy một số mã khác với else
:
int i = 60000; if (i == 0){ doThings(); } else { doOtherThings(); //I'm still gonna be run. }
3) . Trong khi các vòng lặp code tiếp tục khi một điều kiện nhất định vẫn đúng, khi điều kiện là sai, vòng lặp while loop sẽ thoát.
while (someBool == true){ //condition doThings(); //We'll keep doing things until someBool is false }
Vòng lặp while loop này sẽ chạy trong bao lâu?
while (true){ doThings(); }
Đối với vòng lập là while loop trong đó:
int i = 0; while (i < condition){ doThings(); i++; //increment after doing things }
Điều đó tương đương với:
for (int i = 0; i < condition; i++){ doThings(); }
4) Chúng ta có dữ liệu và giờ thì cần phải đánh giá và sử dụng dữ liệu đó. Ngoài ra, ta cũng có thể lưu trữ dữ liệu đó thành một dạng cấu trúc – hay còn gọi là cấu trúc dữ liệu. Cấu trúc dữ liệu bạn nên biết là arrays, lists, queues, stacks, và sets.
Ví dụ nhanh về Arrays:
/* Say you have numbers 0 through 9 that you want to store somewhere. You can store it in an array! */ int[] arr = new int[10]; /* The [] brackets declare an array. We assign a new array to arr of size 10 - that means it can hold 10 elements. Arr now looks like this: arr = [ 0 0 0 0 0 0 0 0 0 0 ] */ for (int i=0; i<10; i++){ arr[i]=i; //We assign whatever i is to the the ith index of arr. //Did you know data structures' indices start at 0? 😲 } /* After the for loop, our array data structure should look like this! arr = [ 0 1 2 3 4 5 6 7 8 9 ] */
5) Các Function về cơ bản là một dòng mã nhỏ mô tả một chuỗi mã lớn. Ví dụ: nếu bạn call:
EatBread();
và EatBread() trông như thế này:
breadAte=true; printf("I CAN FEEL THE CARBS COURSING THROUGH MY BODY"); }Sau đó, lệnh gọi EatBread()
thực sự là một cuộc gọi đến hai câu lệnh trong EatBread()
function.
Nếu bạn làm điều gì đó không đúng, exception sẽ xuất hiện. Chúng là những lỗi màu đỏ giận dữ ở đó để cho bạn biết hãy revise lại nó.
Để tìm hiểu thêm về các function, hãy vào đây; cho trường hợp exception, hãy vào đây.
Sau đó, có những thứ khác bạn nên biết:
6) . Bạn sẽ viết code bằng ngôn ngữ nào? C ++? Javascript? C #? Mỗi ngôn ngữ được viết hơi khác nhau và có thể cho phép bạn làm những việc khác nhau.
7) . Khi bạn biết những điều cơ bản, bạn sẽ phải tìm hiểu API cụ thể của công cụ trò chơi của mình. Về cơ bản, các API là một loạt các công cụ mạnh mẽ được bao bọc trong các lớp và chức năng đơn giản mà bạn có thể gọi. API giúp cuộc sống dễ dàng hơn. Cách dễ dàng hơn.
8). Unreal và Unity đều có rất nhiều dự án miễn phí mà bạn có thể tham khảo. Điều này sẽ cho phép bạn khám phá cách mọi thứ kết hợp với nhau. Ngoài ra, bạn có thể xây dựng ý tưởng trò chơi của riêng mình.
if (you.getThisFar()==true){ veryProud=true; you.didIt(); //CURRENT MOOD: THE SHKEST }
Lời khuyến khích: Tôi biết việc viết code là đáng sợ lúc đầu khi bạn gặp phải những rào cản liên tục thất bại. Nó không có nghĩa là bạn dở code mà đó là một thách thức, bạn sẽ phải thất bại để có được thành công.
Nhưng nó cũng như bất kỳ kỹ năng nào khác khi bạn sẽ tốn thời gian để học hỏi và thuần thục.