Ask HN: Game development for non-game developers

  • The first thing to wrap your head around is that game development is really a collection of multiple disciplines / subsystems / processes / arts that all come together for a single product.

    Sure making a website or app you have to consider frontend + backend, but with game development there are many parts that you have to spend time on (or at least make thoughtful decisions to de-prioritize). 3D modeling and shaders or 2D graphics and sprites, physics, game logic, sound, networking, serialization / persistence, character animations, story, particles / fx, lighting and post-processing, music...you can find all these different areas you may want or need to spend time with. For a AAA game there are entire teams and functions that spend years on just one chunk of this. Teams and budgets are more like movie budgets than app or website budgets for a reason. Sticking to 2D can help a lot. As can sticking to singleplayer. As can starting with a simple and well-trodden genre. To create Tetris you obviously don't need all of these, but it's easy to come up with an idea that seems achievable at first glance to a novice but quickly realize you underestimated the project even dramatically more than web or mobile app or desktop app developers often do because there are yet more components that take real hours of work with games.

    RE: engines and technologies, you have to determine if you want to create a 2D or 3D game, if networking / multiplayer matters, what platform you are targeting, and a few other things before you choose an engine.

  • Celeste and Slipways both started life as small indie projects in the Pico-8 development environment. Personally, I find it much easier to get my head around gaming ideas in that system because everything is constrained. There aren't a million APIs to learn. The artwork is restricted to 128x128 pixels and 16 colors. Sound is similarly limited in 8-bit-esque ways. There is a kind of freedom in the system's restrictions that is hard to articulate, and its great for doing "sketches" (so to speak). If an idea you tinker with in Pico-8 feels like something you want to expand, then maybe move on to the more "robust" engines. As @zzo38computer said, "it depends on what kind of game you will want to make." If, by any chance, you purchased the Racial Bundle from itch.io last year, then you have a license to Pico-8. It isn't free, but it's super cheap and supports a great indie developer, and comes with a huge amount of community support.

  • I think that it depend what game you will want to make. Often, the older systems will work just as well (or sometimes maybe even better); sometimes the newer ones do, and not always the same one. Not all games will need camera angles, although if you are doing 3D graphics then camera angles and lighting will probably be important. Not all games use multiplayer either. Although it is true that they are probably more common in game development. Some game engines are specific for some kind of game, and other are more general. Sometimes using a plain programming language is good, and sometimes the use of a VM code is good.

    For example, if you write a game for NES/Famicom, then it is likely to run on many computers with many operating systems, likely supports user-definable key bindings, volume controls, possibly multiplayer by internet, you do not need to implement any of these things by yourself since it is already there. And, it will work on NES/Famicom, too. There is also less likely the user will have to worry about malware. (One problem with this is that the colours might be somewhat different in different emulators. I had once proposed a format to include the file with the RGB colours (which can safely be ignored, but if used might result in better colours) with the game, but doing so doesn't seem to be so common now.)

  • I am a non-game developer, and I have been looking into this as well for 3D games.

    1. It seems the major game engines are Unreal (C++, many AAA titles) and Unity (C#, widely used). Godot is open source and uses a python-esque GDScript. There is also Roblox Studio (Lua) which is its own walled garden.

    For multiplayer, you can use Unity and Unreal’s systems or Steam or you could try to roll your own with something like Agones.

    For Assets, major tools are Blender and 3DS Max. You could also use tools like Shapr3D or MagicaVoxel. Or buy on sites like Turbosquid but the meshes/textures may not be organized well.

    2. Reasoning about geometric transformations can be challenging. Also animations, character rigging, organizing assets, memory management, framerate performance.

    All of this is in addition to game design, which is its own thing. Good luck!

  • Game Maker studio (it sounds like a joke I know) is a pretty solid engine if you're working in 2D.

  • I'd recommend Unity because it has good support for both 3d and mobile. Many great tutorials are on YouTube

    Difficult things are lighting and multiuser networking. Cameras and input are not so hard anymore.