From Zero to Game Designer: cách bắt đầu xây dựng trò chơi điện tử ngay cả khi bạn chưa có kinh nghiệm

2 năm trước, tôi chỉ là một học sinh trung học 17 tuổi, không biết gì về lập trình. Nhưng dù sao thì tôi vẫn thúc đẩy và trong vòng vài tháng, tôi đã xuất bản trò chơi đầu tiên của mình trên Steam.

Bây giờ, tôi đã tạo hơn 10 trò chơi cho máy tính để bàn, web và di động, với hơn 1,9 triệu lượt chơi kết hợp.

Bất kể trình độ kỹ năng của bạn, bạn cũng có thể tạo ra một trò chơi. 2 năm trước, tôi nghĩ điều đó là không thể, nhưng dù sao cũng đã thử. Đó là khó nhấtđiều tôi đã từng làm. Nhưng nó đáng mà. Bây giờ, tôi nhận ra rằng phát triển trò chơi cũng giống như bất kỳ kỹ năng nào - bạn chỉ trở nên tốt hơn bằng cách làm, thất bại, sau đó cải thiện.

Tôi đã tự học tất cả những gì tôi biết. Và bây giờ tôi sẽ dạy bạn.

Để làm game, bạn phải trải qua 6 giai đoạn phát triển game: Thiết kế. Nghệ thuật. Mã. Âm thanh. Đánh bóng. Thị trường.

Phần còn lại của bài đăng của tôi sẽ cấu trúc từng giai đoạn thành như sau:

  • ? Một người mới tôi đã tuyển chọn từ kinh nghiệm của tôi và những người khác.
  • ? R esources tôi đã tìm thấy hữu ích nhất.

1. Thiết kế?

Lời khuyên?

Bạn có một ý tưởng tuyệt vời. *

Nhưng làm thế nào để bạn nắm bắt nó bằng văn bản?

Mọi người sẽ có cách riêng của họ để làm điều đó tốt nhất. Một số soạn tài liệu thiết kế 60 trang. Những người khác, giống như tôi, viết một trang giấy ghi chú tồi tệ, không thể đọc được cho bất kỳ ai khác. 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 :

  • Cái móc. Điều gì làm cho ý tưởng trò chơi của bạn trở nên tuyệt vời? Đối với tôi, đây là điều quan trọng nhất để viết ra. Khi bạn nắm bắt được điều này, bạn có thể viết ra ba điểm tiếp theo dễ dàng hơn nhiều. Trò chơi của bạn về thứ gì đó kích thích tư duy? Tai tiếng? Có phải nó đang tạo ra một sự thay đổi mới cho một tác phẩm cổ điển cũ? Hoặc, nó đang làm điều gì đó chưa từng được làm trước đây?
  • Cơ học. Người chơi của bạn làm gì? Và nhằm mục đích gì? Đây là cách chơi của bạn. Nó có thể đơn giản như nhấn QWOP để di chuyển trong trò chơi QWOP, chạm vào các nút để trò chuyện trong Mystic Messenger, cho đến hàng tấn tổ hợp phím trong Pháo đài người lùn.
  • Câu chuyện. Người chơi nên nhớ câu chuyện nào về trò chơi của bạn? Họ nên rời khỏi trò chơi của bạn với những cảm xúc nào? Mỗi trò chơi đều có một câu chuyện. Nếu câu chuyện không rõ ràng, nó được tạo ra bởi người chơi. Một câu chuyện có thể được tạo ra từ những con số ngày càng tăng vào năm 2048, những đế chế đang trỗi dậy trong Nền văn minh và những tương tác thầm lặng ở Thung lũng Monument. Hãy nghĩ xem câu chuyện nào sẽ được tìm thấy trong trò chơi của bạn.
  • Tâm trạng. Trò chơi của bạn tạo ấn tượng gì? Hình ảnh là gì? Âm thanh? Ấn tượng đầu tiên quan trọng. Ấn tượng đầu tiên sẽ thu hút - sau đó giữ chân - người chơi đang chơi. Có lẽ, bạn sẽ mang đến cho trò chơi của mình một cảm giác cổ điển với đồ họa pixel và âm nhạc chiptune. Hoặc, một cái nhìn hiện đại, sạch sẽ với các hình học phẳng và dụng cụ.

* Bạn gặp khó khăn khi nghĩ ra ý tưởng? Khối sáng tạo đánh vào tất cả chúng ta.

  • Tham gia một trò chơi hackathon / jam. Bạn và những người tham gia khác sẽ có nhiệm vụ tạo một trò chơi trong một khoảng thời gian ngắn. Trong suốt và sau đó, bạn sẽ được đáp ứng với sự hỗ trợ từ các thiết bị gây nhiễu khác. Và sự phấn khích và sáng tạo trong một mứt? Truyền nhiễm. Không biết bắt đầu từ đâu? Hãy thử Ludum Dare, một trong những trò chơi bịp bợm lớn nhất.
  • Giữ một danh sách các ý tưởng. Tôi và các nhà phát triển khác mà tôi biết ghi lại ý tưởng của chúng tôi. Bằng cách đó, chúng ta có thể tham khảo lại những cái cũ khi chúng ta hết cái mới.

Khi nàng thơ chạm vào, hãy dừng bất cứ điều gì bạn đang làm. Viết ra ý tưởng đó. Lần sau khi ma thuật sáng tạo, bạn sẽ không bị bỏ rơi vì ống hút.

Tài nguyên ?

Tất cả những điều dưới đây đều được thử và đúng. (?) nghĩa là tôi sử dụng nó hiện tại.

Ghi chép:

  • Ghi chú cho Mac (?)
  • Google Tài liệu (?)
  • Trello

Cộng tác (dành cho nhóm):

  • Google Drive
  • GitHub (?). R tương đương git và Unity .gitignore.
  • Hợp tác thống nhất. Dễ nhất trong số ba. Phiên bản miễn phí có những hạn chế.

Lưu ý - Unity là công cụ trò chơi mà tôi sử dụng để tạo trò chơi, vì vậy tôi sẽ đề cập đến nó xuyên suốt. Hãy sử dụng một động cơ khác.

Thiết kế trò chơi:

  • Nghệ thuật thiết kế trò chơi của Jesse Schell
  • Gamasutra

2. Nghệ thuật?

Lời khuyên?

Bạn đã lên kế hoạch cho ý tưởng của mình; chúc mừng, điều đó thật tuyệt vời! Bây giờ, bạn có thể làm việc trên trò chơi thực tế.

( Nếu bạn không biết cách viết mã , tôi khuyên bạn nên thực hiện giai đoạn 3, Mã, trước Nghệ thuật. Bạn không muốn tạo ra tác phẩm mà sau này bạn sẽ trở thành thùng rác vì bạn không thể viết mã.)

Không biết vẽ? Đừng băn khoăn. Bất cứ ai cũng có thể làm cho một cái gì đó đẹp đẽ với 3 nguyên tắc thị giác cơ bản: màu sắc, hình dạng, không gian.

Giao diện người dùng

Hãy nghĩ về cách bạn có thể làm cho nó trở nên độc đáo - có một bảng màu riêng biệt, (các) phông chữ, (các) hình dạng và (các) biểu tượng - trong khi vẫn hoạt động . Thông tin quan trọng có dễ đọc và rõ ràng không? Màu sắc / phông chữ / biểu tượng có làm xao lãng điều đó không?

Hoạt ảnh 2D

Bạn có hai lựa chọn:

  • Từng khung hình. Vẽ ra từng khung của hoạt ảnh. Đối với điều này, bạn nên sử dụng sprite sheet với TexturePacker (hoặc nếu bạn đang sử dụng Unity, Sprite Packer).
  • Dựa trên xương. Vẽ từng chi hoạt hình, sau đó tạo hoạt ảnh cho vị trí, vòng quay của chi đó và những gì không có trong trò chơi. Có thể nhanh hơn, dễ dàng hơn và tiết kiệm bộ nhớ. Nếu bạn đang làm 2D và sử dụng Unity, hãy thử chỉnh sửa các trục của sprites hoặc Anima2D.

Misc

Dưới đây là một số mẹo nghệ thuật linh tinh chung không chỉ áp dụng cho nghệ thuật trong trò chơi mà còn trong các phần mềm khác.

  • Tile patterned assets to create tiled images and save memory.
  • 9-patch/9-slice assets with unscalable borders but a scalable center to create scalable images and save memory.
  • Make the dimensions of each asset a multiple of 4or a power of 2 to save memory. Which one depends on how you’re compressing the assets.
  • If you’re using Photoshop, use “File > Export > Layers to Files” to quickly export each layer as a file (e.g. PNG, JPEG).

Resources ?

Creating UI:

  • Photoshop (?).
  • Sketch.

UI principles:

  • Google Material Design (?).
  • Apple’s UI Do’s and Don’ts.

Creating 2D assets:

  • Photoshop (?).
  • Gimp.
  • Paint Tool SAI. Good for smooth/anime styles.

Creating 3D assets:

  • Blender (?). Powerful but steep learning curve.
  • Maya. Good for animation.
  • Max. Good for rendering.

Free assets:

  • Behance (?). Fonts + icons + other designs.
  • KennyNL. HQ, game-ready UI/2D/3D art.
  • Open Game Dev Art. Large library of user-generated art.

Inspiration:

  • Dribbble. Designs from invite-only designers.
  • Behance (?). Designs from anyone with an account.
  • itch.io (?). Beautiful indie games.

3. Code ?

Advice?

Debug.Log(“Oh boy! Time to code!! ^_^”);

Your first step? Decide on a game engine and an IDE (Integrated Development Environment — basically, an app that lets you code). My recommended game engines+IDEs are in Resources below.

Your second step? Code.

Don’t know how to code? No worries. I got you. You can learn.

These CS fundamentals should be enough to start. (All code examples here are in C++, one of the main languages the Unity 3D game development framework uses.)

1) Data types and variables. At the root of all code is data. That data is stored in variables.You can declare a variable like this:

int i = 0;

Let’s break that down.

int is the data type. i is the variable name. And that = 0 assigns zero as the variable value.

So what’s this?

string s = "pusheen is best cat";

string is the data type. s is the variable name. And yep — you guessed it — “pusheen is best cat” is the variable value.

Some common data types: int and long are integers. float and double are decimal numbers. And string is any sentence. (Even an empty one — “”!)

Want to know more? Go through this and this.

2) If statements. If statements evaluate if a certain condition is true. If it is, run the code that’s inside the if statement:

if (true){ //true is always true! doThings(); //I'm inside the if statement's brackets; run me! }

If the condition isn’t true, we can evaluate other conditions with else if:

int i = 1; if (i == 0){ doThings(); } else if (i == 1){ doOtherThings(); //I'm gonna be run! }

Or, just run some other code with else:

int i = 60000; if (i == 0){ doThings(); } else { doOtherThings(); //I'm still gonna be run. }

3) For/while loops. While loops continue while a certain condition is still true, executing the same lines of code over and over again. When the condition is false, the while loop exits.

while (someBool == true){ //condition doThings(); //We'll keep doing things until someBool is false }

Think: how long does this while loop last?

while (true){ doThings(); }

For loops are basically while loops where:

int i = 0; while (i < condition){ doThings(); i++; //increment after doing things }

That’s equivalent to:

for (int i = 0; i < condition; i++){ doThings(); }

4) Basic data structures. So, we have data, and we ways to evaluate and manipulate that data. We can also store that data into some structure — a data structure. Data structures you should know are arrays, lists, queues, stacks, and sets.

Here’s a quick example of an array:

/* 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 ] */

To solidify your knowledge of 2–4, go through this.

5) Functions and exceptions. Functions are basically a small line of code describing a big bunch of code. For example, if you call:

EatBread();

And EatBread() looks like:

void EatBread(){ //<---this is a function. breadAte=true; printf("I CAN FEEL THE CARBS COURSING THROUGH MY BODY"); }

Then the call to EatBread() is actually a call to the two statements within the EatBread() function.

If you do something bad in your code, an exception might get thrown. They’re angry red errors there to tell you, hey, back up, what you did right there just ain’t ‘workin out logically. Go revise it.

To learn more about functions, go here; for exceptions, go here.

Then, there’re other things you should know:

6) Language. What language are you going to code in? C++? Javascript? C#? Every language is written somewhat differently and can let you do different things.

7) API (Application Programming Interface). Once you know the basics, you’ll have to learn the specific API of your game engine. APIs are essentially a bunch of powerful tools wrapped in simple classes and functions that you can call. APIs make life easier. Way easier.

Lastly:

8) Look at an example project in your chosen game engine. Unreal and Unity both have a ton of free example projects. This’ll let you discover how everything comes together. Plus, you can build your game idea off of the project. (I built my first game off of Corgi Engine.)

if (you.getThisFar()==true){ veryProud=true; you.didIt(); //CURRENT MOOD: THE SH⭐⭐KEST ??? }

A word of encouragement: I know. Coding is scary at first. Nothing makes sense, you’re hitting constant roadblocks, and you might want to quit in the face of failures and exceptions. It doesn’t mean you’re bad at coding. Coding is challenging. It’s understandable to feel incompetent at first.

But it just takes time, like any other skill. It’ll get easier. And it’ll get fun (at least, it did for me).

Important game programming concepts:

  • Object orientation.Makes programming feel more natural.
  • Naming conventions.Name your classes, methods, and variables as something that obviously conveys its purpose. For instance, a melee attack function should be named meleeAttack(), not mA() or protecbutalsoattac(). You (and others who read your code) should know what’s going on.
  • Decomposition.Put code that repeats itself into a separate function. Call that function instead of duplicating the repeatable code.
  • Singleton design pattern. Allows data that a lot of things need to be stored in one place.
  • Static avoidance. Beyond singletons, I’d avoid making static variables— their lifetime is the game’s lifetime, they’re slower, and they can have unexpected behaviors in the editor.
  • Observer design pattern. Allows things that must happen depending on another thing to not waste the computer’s time checking that other thing.

Important Unity-specific things:

  • Coroutines.IEnumerators and Coroutines allow you to start doing things, continue doing things until some time has passed, then stop. I use them all the time: for bursts of visual effects; for lerping movement; for waiting for a scene to load before grabbing the scene’s objects.
  • ScriptableObject.These contain data with less overhead than MonoBehaviors.

Resources ?

Game engines:

  • Make your own. Requires C/C++. Low level. Really, really low.
  • Unity (?). 2D/3D. Requires Javascript/C#. Mid-level. Cross-platform.
  • Unreal Engine. 2D/3D. Requires C++. Mid-level. Cross-platform. Notes: 2D support is not great.
  • pixi.js (?). 2D. Requires Javascript. Mid-level. Web.
  • GameMaker Studio. 2D/3D. Requires GML. Beginner level. Cross-platform.
  • Corona. 2D. Requires Lua. Beginner level. Cross-platform.

IDEs:

  • Visual Studio Code (?). For MacOS. Gives me no lag and has awesome, VSCode-exclusive features (such as inline reference info, quick navigation (⌘T)).
  • Visual Studio (?). For Windows.
  • MonoDevelop. Comes with Unity. Tends to lag.

Free Unity assets:

Đối với Unity, rất nhiều tài sản miễn phí tồn tại trên Unity Asset Store, GitHub, bitbucket và các trang web khác. Tôi sử dụng ít nhất 2 trong mọi dự án. Làm cho cuộc sống của bạn dễ dàng hơn với tài sản, nhưng nhận ra rằng chúng không hoàn hảo. Nếu bạn phát hiện ra lỗi, đừng ngần ngại sửa chúng và / hoặc ping các nhà phát triển.

  • TextMeshPro (?).
  • LeanTween (?).
  • Nấm.
  • Động cơ Corgi.
  • Hệ thống Đối thoại.
  • Ngăn xếp xử lý bài đăng.
  • Keijiro Takahashi. Hoạt động tại Unity. Có các dự án hiệu ứng hình ảnh Unity mã nguồn mở tuyệt vời !
Cuối cùng nhưng không kém phần quan trọng, giải pháp số 1 của tôi cho các vấn đề về mã hóa: Google!

4. Âm thanh?

Lời khuyên?

Đầu tiên: Bạn có muốn âm thanh không?

Âm thanh có thể làm nên điều kỳ diệu cho sự đắm chìm và tâm trạng. Tuy nhiên, nó có thể tốn bộ nhớ.

Nếu câu trả lời là có, âm thanh nào?

Bạn sẽ bao gồm âm nhạc ? Hiệu ứng âm thanh ? Thuyết minh hay tường thuật ?

Đối với bất kỳ điều nào ở trên, hãy ghi lại và trộn chúng theo cách phù hợp với tâm trạng trò chơi của bạn . Ví dụ: Bastion sử dụng âm thanh miệng và nhạc cụ hữu cơ, phù hợp với thế giới trò chơi của nó. Crypt of the Necrodancer sử dụng sự pha trộn giữa nhịp điệu điện tử và rock chiptune để phù hợp với trò chơi đầy màu sắc, nhịp điệu.

"Sự đắm chìm là vua."

-Darren Korb, Supergiant Games

Nếu âm thanh của bạn không phù hợp với tâm trạng của trò chơi , nó có thể làm giảm sự đắm chìm. Làm thế nào sẽ bạn âm thanh phù hợp với trò chơi của bạn?

Tài nguyên ?

Công cụ âm thanh:

  • Logic Pro. 200 đô la. Chỉ MacOS.
  • FL Studio (?). $ 99–899. Có bản demo miễn phí.
  • Reaper. $60–225.
  • Audacity (?). Free. Limited capabilities. Useful for cleaning audio.

Retro sound effect generators:

  • Chiptone.
  • Bfxr.
  • Leshy SFMaker.
  • as3sfxr.

Free sounds:

  • Soundcloud (?). Soundcloud has a ton of gorgeous gems under Creative Commons (CC). Here’s a playlist to get started. Make sure to provide attribution if needed.
  • Incompetech (?). CC music. Must attribute.
  • Bensound. CC music. Must attribute.

5. Polish ?

Advice?

Hey! You’re here! You made it; that’s absolutely incredible (I’m serious, if you get this far, I’d love to hear about your game; hit me up)!

You’re done.. right?

Well. There’s a 99.99999% chance there’re bugs.

It’s time to bug test.

Bug testing your game

  1. Get others — not you — to play it. Preferably in front of you, because if they encounter a bug, they might not realize or have a hard time describing it.
  2. Play it on all targeted platforms. It may work in the editor, but does it work where it matters? For Linux and the different versions of Android especially, I find that things get a little wonky.

Alright. You’ve found a bug. What now?

  1. Check the console for exceptions. Found one? Great! Find the file and line number where the exception was thrown. If the exception sounds like something from Mars, Google it and learn about it. Then figure out why that line number is throwing that exception.
  2. Still can’t figure it out? Write to console. Start tossing in them log statements in the place(s) you think is causing you trouble. Print variable values, and see whether what’s printed is what’s expected. If not, fix that.
  3. When worse comes to worse, check logs. The logs of your project will give you way more info than the console. Read the last lines where the exception occurred. Google anything you don’t know. Can you fix it now?
  4. Sleep. It’ll get fixed in the morning. This is just a bad dream. Right? ?

Common errors

  • NullReferenceException.
var.doThing(); //throws NullReferenceException: Object reference not set to an instance of an object

Problem: You’re doing a thing on a null (nonexistent) variable.

Quick fix: Check if the variable is null before doing the thing.

if(var != null) { var.doThing(); // do the thing safely! }
  • SyntaxErrorException.

Problem: Your code has invalid syntax.

Quick fix: In the Exception message, it should tell you what character is throwing the error. Change that character.

Note: If the character is a double quote, make sure you’re using dumb quotes instead of smart quotes:

" //dumb quote ” //smart quote. I promise these'll give you trouble at some point in your life. ?
  • Pink or black screen.

Possible problem: Some shader can’t render.

Possible causes: You’re using a 3D shader for a 2D game. Or, you’re using some shader feature unsupported by the target OS. Be sure to use mobile shaders for mobile games.

After you’re done debugging, polish your game off by optimizing its memory usage and performance. This’ll make it download faster and heat up people’s devices less.

General optimization tips

  • Set the target frame rate. The frame rate could be 20 for a visual novel or 60 for a first-person shooter. A lower than default target frame rate allows the game to spend less time rendering frames.
  • Animation / particles / occlusion culling. Culling means that things invisible to the camera aren’t rendered. Characters’ll only animate, particles’ll only update, and 3D models will only be rendered when in view.
  • Compress textures and audio. Crunch compress textures. Stream music and decompress sound effects on load. Decrease the audio quality. Note that compression may or may not decrease the quality of assets noticeably.
  • Object pooling. Avoid instantiating and destroying many objects at once to prevent huge spikes. Instead, object pool them in a List, Queue, or other data structure. Things like bullets should be object pooled.
  • Don’t let raycasts hit things that don’t need input.Raycasts are like little rays that shoot from your fingers or mouse everytime you tap or click. Remove objects that don’t react to those inputs from raycast calculations.

If you’re up for a challenge:

  • Optimize shaders. Give each renderer a material. This’ll save resources in the beginning since the game doesn’t have to create new materials for everything. Have the shader for the material only include what’s functionally needed (for example, a button that doesn’t need masking can use a Sprite shader instead).
  • In Unity, Use AssetBundles instead of Resources. AssetBundles will save memory by pulling from online (e.g. dropbox) or local storage (e.g. hard disk). I haven’t tried too much due to the poor documentation, though.

Resources ?

All of these are from Unity but can be applicable to other engines.

Scripts:

  • Optimizing scripts in Unity games (?)

Art:

  • A guide to optimizing Unity UI (?)
  • Art Asset best practice guide (?)

Memory:

  • Reducing the file size of your build (?)
  • Memory

Platform-specific:

  • Practical guide to optimization for mobiles (?)
  • WebGL performance considerations (?)
  • Memory Considerations when targeting WebGL (?)
  • Olly’s seven stages of optimizations for mobile VR

6. Market ?

Advice?

Congrats! ?? You’ve made something. It’s time to show the world what you’ve made.

Cá nhân tôi, tiếp thị là giai đoạn tôi lo lắng nhất. Nếu bạn cũng nghi ngờ, cộng đồng nhà phát triển trò chơi rất hữu ích. Bạn không đơn độc trong việc này. Và bạn đã đi rất xa - cũng có thể vượt qua đến cùng, phải không?

Bạn sẽ không bao giờ biết nó có thành công hay không trừ khi bạn thử.
  1. Bản nháp. Tạo bản nháp của trang trò chơi của bạn trên tất cả các nền tảng phân phối trò chơi được nhắm mục tiêu của bạn. Tìm danh sách các nền tảng trong Tài nguyên bên dưới.
  2. Mạng lưới. Nếu bạn đi hết quãng đường mạng, bạn sẽ muốnemail báo chí trò chơi , giới thiệu trong lễ hội và tham dự hội nghị .

With game press, email your unlisted game page a week before release. Give people some time to write about it. It’s likely they won’t write about it at all. I’ve found that press loves a compelling developer story, unique/controversial concept, and, most importantly, a presskit.

How do you find emails? You can..

  1. Find writers you like and Google their name. Their email is bound to come up somewhere: Twitter, LinkedIn, etc. Or..
  2. Find the magazine/new’s company-wide email on their About page. It’s usually in the format of [email protected]

Do not email press about your game if they explicitly don’t cover your genre/targeted platform.

Festivals can get you awards and/or professional recognition by other developers and press.

Conferencesare what you make of it: they can be all about networking with other developers, companies, and press (go get them business cards!); updating your latest game dev know-how; playing others’ games; or meeting up with internet friends.

Game conference tickets are expensive. If you’re a student, think about applying for scholarships for them. The IGDA Scholars program gives you some especially amazing networking and event opportunities.

3. Youtubers/Streamers. You can get video coverage of your game by:

  1. Ranking high on game distribution platforms.
  2. Emailing. If you email, don’t talk about yourself; talk about the game. Keep it sweet, short, and compelling. Use eye-catching photos and gifs.

How do you find emails? Look at their About page. If you can’t find it there, Google them and see if their other social media have it.

4. Social media.

Social media is an amazing marketing tool. Agar.io found its rise from 4chan, Butterfly Soup got mad boosts from Twitter, and some form of social media always ends up in my top 4 referrers:

My favorite social media platforms for marketing are in Resources below.

A last note Publisher or self-publish? Game marketing is a lot. Do you want a publisher to take care of all that? Want to go the Hotline Miami x Devolver Digital route, or rely on Farmville and Doki Doki Literature Club’s word-of-mouth?

With a publisher, you’ll have to do your research to find a good one. After, you’ll sign paperwork and go through legal hoops. Plus, it’s a huge financial investment.

By yourself, you’ll have to put a lot of time and effort into learning marketing. You may love it. You may hate it. And you might not do a great job of it, either. But it’s free, and you learn valuable skills.

For me, I’ll always self-publish. I love learning new things. Also, I firmly believe that a truly great game will succeed no matter what, as long as some marketing effort was put.

6. Hit that Publish button!

??Yooo, you DID it!! ?Now relax, sit back, grab a yummy drink, and take some time for yourself! You’ve worked so hard. You deserve it.

And remember that, even if your game doesn’t get the reception you expected, that’s ok. It’s not gonna be perfect your first time. My first game on Steam only has 255 downloads.

The facts are, you made a game. You learned so much. That’s enough.

And there’s always a next time!

Resources ?

Game distribution platforms:

  • Steam (?). PC. Requires $100 USD fee per game.
  • Origin. PC.
  • GOG. PC. Free to publish. Game must get accepted.
  • Mac App Store. MacOS. Requires Apple Developer account.
  • itch.io (?). PC/Web. Free to publish.
  • Game Jolt (?). PC/Web. Free to publish.
  • Armor Games (?). Free to publish. Must apply to be a developer.
  • Kongregate (?). Web. Free to publish.
  • Newgrounds (?). Web. Free to publish.
  • GitHub (?). Web. Free to publish on your own site with domain name formatted as “___.github.io”.
  • Amazon. Web/Mobile. Free to publish.
  • Google Play (?). Mobile. Requires one-time $25 USD fee.
  • iOS App Store (?). Mobile. Requires Apple Developer account.

Game press:

  • IndieGames.
  • Siliconera.
  • FreeGamesPlanet. Super nice admin.
  • PCGamer.
  • Kotaku.
  • Rock Paper Shotgun.
  • Polygon.
  • Giant Bomb.
  • EuroGamer.

Game festivals:

  • Independent Games Festival (IGF). Deadline around October.
  • Indiecade. Deadline around May/June.
  • Swedish Game Awards. Deadline around July.
  • South by Southwest Festival (SXSW). Deadline around December.
  • The Game Awards. Deadline around November.

Game conferences:

  • Game Developer’s Conference (GDC). San Francisco.
  • Penny Arcade Expo (PAX). Seattle/Boston/Philadelphia/Melbourne.
  • Electronic Entertainment Expo (E3). Los Angeles.
  • Tokyo Game Show. Japan.
  • Steam Dev Days. Seattle. For Steam developers only.

Emailing:

  • presskit()

Social media:

  • reddit (?). Pick an appropriate subreddit. Some of my favorites are /r/WebGames,/r/IndieGaming/, and /r/visualnovels.
  • Facebook (?). Post on your Facebook Page (if you have one) and personal facebook (if you’re comfortable). There’s also tons of Facebook Groups where you can show off your game! Here’s some:

GameDev Show and Test

Welcome to GameDev Show and Test - a sister group to the Indie Game developer groups. The purpose of this group is to…

Indie Game Developers

Independent Game Developers group for small companies and individuals designing and publishing their own games. **READ…

Indie Game Promo

Indie Game Promo has 47,645 members. Sister group to Indie Game Dev and Indie Game Chat for the purpose of promoting…

  • Tumblr (?).
  • Twitter (?). Try using tags like #gamedev, #indiedev, and #screenshotsaturday to get discovered.

Community:

  • /r/gamedev (?).
  • Ludum Dare (?).
  • Indie Game Devs (?).

Conclusion

Không có mã gian lận để tạo một trò chơi. Chỉ là rất nhiều quyết tâm và nỗ lực.

“Đằng sau mỗi Half Life, Minecraft và Uncharted đều có DƯƠNG là máu, mồ hôi và nước mắt.”

- Ken Levine

Bạn sẽ bối rối. Bạn sẽ mắc sai lầm. Bạn thậm chí có thể khóc (tôi đã - và vẫn còn).

Nhưng nó ổn. Nó có nghĩa là bạn đang phát triển. Nếu bạn đang nỗ lực nhiều như vậy, tôi tin vào bạn và trò chơi của bạn: Bạn có thể làm được.

Nếu bạn thích đọc bài báo đầu tiên của tôi, hãy nhớ đưa ra một? (Hoặc vài - bạn có biết bạn có thể cho nhiều hơn một?) Nó có nghĩa là cả thế giới?

Bạn cũng có thể theo dõi / gửi tin nhắn trực tiếp cho tôi trên Twitter, Tumblr và GitHub, và mua cho tôi một ly cà phê nếu bạn muốn.