
Ask HN: How do I start building a game? - insdel
Assuming a good background in C++, also in python. Some experience with the web too. Less on graphics. I am interested more in libraries, languages, platforms. I want to start from simple. In general, what architecture should I aim for?
======
jaberwocky333
Sounds like almost exactly where I started from. Depends on the game your
making but be careful of libraries. Game programming is very different from
other types of development. SDL is a good place to start. Godot seems find as
well. You'll want some form of architecture that updates components of
entities all at once rather than foreach entity object updating its physics,
then sound, then tracking etc This is for performance and debugging reasons.

This is a good start [http://cowboyprogramming.com/2007/01/05/evolve-your-
heirachy...](http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/)

Source - Just finishing up this game
[https://store.steampowered.com/app/1058510/Zunius/](https://store.steampowered.com/app/1058510/Zunius/)
Art, code, music and sound done by me

Drop me a line a leonf at coafresearch if you want to chat further

~~~
insdel
Thank you!

------
DecoPerson
First, figure out your goal. Do you have a specific skillset in mind that you
want to learn? Examples are:

\- Game design

\- Map / world design

\- Environment art

\- Modelling

\- Substance / surface specialist

\- FX

\- Animation

\- Sound

\- Gameplay programming

\- More technical forms of programming, like graphics, core engine, sound,
networking, AI, etc

Or do you just want to expose yourself to the all the parts of creating a
game?

Depending on what you choose, your path will be different.

Examples of game design paths:

\- Design the mechanics for a card game (think Magic the Gathering). Create
enough example cards for two decks. Get some friends to play. Write up an
analysis of how the game went and learn from it. Iterate and continue to
learn.

\- Download Unreal Engine 4 and make a single- or multi- player experience. It
should use a few core mechanics that are interesting and fun even in
repetition. They should make people want to continue playing and discovering.
Don't worry if the game looks ugly -- just use the free models, textures, FX,
sounds, etc available to you. Do lots of playtesting, iteration, reading, and
learning. If you're not a strong C++ programmer, use UE4 blueprints.

\- Make a gamemode for Garry's Mod. Like above, focus on making it fun.

Example of map / world design paths:

\- Pick a favorite game that has community map tools. Make a map for it.
Playtest, iterate, learn. Don't worry about making it look pretty. Map design
is like game design -- it needs to be fun long after the "wow" factor has worn
off.

Examples of gameplay programming:

\- Download UE4 and make a single- or multi- player experience. Focus on
creating some technically advance mechanics, like wall climbing mechanics (ala
Uncharted or Assassin's Creed), or some fun physics-based mechanics, like
rockets, or spells, or explosions. Look at the game Control [2] -- it has some
great examples of abilities that would be good for a gameplay programmer to
recreate for learning purposes (though, design-wise, I think these abilities
have a lot of problems).

\- If you're not a strong C++ programmer already, consider Garry's Mod or UE4
blueprints instead.

For more technical forms of programming:

\- Write your own engine. Focus on the parts you want to learn. If you want to
be a graphics programmer, don't worry about a physics engine -- just focus on
the graphics code. Make it look good and perform well.

As for modelling, environment art, substance creation, FX, animation and sound
-- I'm not familiar enough with these fields to give good advice. I do know
that it's important to focus on the field you want to learn. There's lots of
few tools available for these artistic fields, such as Blender and Houdini
Apprentice. For sound, see [0].

If you have a vision of a game you want to bring into existence and simply
want to make it so, prepare to make compromises. You want to start small. In
game dev, we call it "low scope." Get To The Orange Door [1] is a good example
of an achievable vision for a lone highly-skilled individual. The models are
low poly, the animations are simple, the art style is simple which makes
substance/surface creation and graphics programming simpler, and the core game
loop supports the addition of new mechanics (like a new gun) without the work
ballooning out into something like "oh now we need to modify every enemy to
know how to act when being attacked by this gun."

You can achieve a lot by yourself. You just need to choose your battles well.

[0] [https://instabug.com/blog/game-audio-
tools/](https://instabug.com/blog/game-audio-tools/)

[1]
[https://store.steampowered.com/app/541200/Get_To_The_Orange_...](https://store.steampowered.com/app/541200/Get_To_The_Orange_Door/)

[2]
[https://www.youtube.com/watch?v=4vShD7ZFwm0](https://www.youtube.com/watch?v=4vShD7ZFwm0)

~~~
insdel
Thanks for the valuable information! I 'll follow your advice.

