Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This is a little bit of a hijack but if I wanted to start coding games as a side project, where would I start?

Which platform? Mobile, PC, console? Any good introductions on the subject of solo game development? I know I can google this, but I trust HN users more than the Google algo.



I started doing game dev in DOS after reading Tricks of the Game Programming Gurus by Andre LaMothe in the 90s, so keep that in mind for the following advice.

Depends on what you want to do. If you want to code games because you find the programming aspect interesting, start small by writing your own versions of some simple games. I personally wouldn't recommend any frameworks or libraries other than (maybe) SDL. Implement everything in the simplest way you can think of that will actually work and only go back and refactor if you need to, that's the time to look up how other people have solved that problem [0]. Resist the urge to over engineer. I might be biased but I say target PC first. Windows specifically, but Linux isn't much worse as long as you never plan to deploy the thing. This is because these platforms are incredibly open and there is a lot of information and tooling available. After you get a feel for it, and have a good idea of what you want to make next, start incrementally branching out in directions that interest you.

If you have a good idea of the kind of game you want to make and want to start making it with as little friction as possible, then your best bet is to find an engine that is already well suited to that kind of game and learn just the things you need to in order to make it happen. Again, you'll want to start small regardless of what it is you actually want to make, just ensure that you're always moving toward that goal. That is very much not my path, so I have little other advice.

[0] If you look it up first without trying it yourself, you won't have a good understanding of the problem space. You'll end up believing in the commonly accepted answer as dogma and severely limit yourself.


My father got me that book when I was getting more seriously into game programing and it's an absolutely wonderful tome. It has a lot of very good points about not just programming but also game design and how to achieve interesting and seemingly intelligent NPC behavior with a few simple tricks.

Parts of it may be a bit dated now, though.


My parents also got me that book as a teenager. I learned C from that book: I knew Pascal which we were taught at school and once I realised that you just substituted BEGIN and END with { and } it was easy to learn the other aspect.

I really regret that I don't have it any more for the sentimental value it held.

I see archive.org has it in their library [0], though it is is marked as "not for borrow"

[0] https://archive.org/details/teachyourselfgam00lamo

EDIT: Doh, I recogonised the author's name, but I'm thinking of a different book: "Teach yourself game-programming in 21 days"


LaMothe wrote a lot of game dev books.


I'm not much of a game programmer, but lurk /r/gamedev. The common advice is to start small - think toys rather than MMOs. From there, it's said one should follow what they're interested in, and focus on follow-thru, not tacking on features to their dream game that is supposed to compete with Skyrim. Console development is always going to be more trouble than the more open platforms of computers and phones. Myself, I've always thought it'd be pretty fun to make a menu-heavy game with just web technology, which then of course CAN be played anywhere.

There are lots of engines out there that can take care of things for you, or act as full fledged studios, like Game Maker. Some prefer to start from scratch of course. Again, the idea should be follow what you're interested in so that you can actually get something done.


I recommend Godot ( https://godotengine.org/ ). It solves many of the problems you suggested.


The very first game you should make is a Pong/Breakout/Asteroids/Galaga/Frogger clone. It seems simple, but you need to have a surprising amount of systems: graphics, audio, controls, collisions, game states, menus, scoring, user interface.

The engine and language does not matter for this first game. The only thing that matters is completing one small game.

After that, you'll have the level of knowledge to make somewhat informed choices about project #2, where you can expand and innovate. You can use hobbyist engines like Godot and have more control, or more professional engines like Unity or Unreal if you want access to those tools and asset libraries.

/r/gamedev has a useful article: https://www.reddit.com/r/gamedev/wiki/faq#wiki_getting_start...


Breakout is a great candidate for a toy game. As is snake. I often make Breakout clones to familiarise myself with new systems.

If you're looking to get things done fast I think Unity is an excellent choice. After coming from years of working with custom engines and Frostbite, Unity feels like such a breeze.

As for r/gamedev I'm quite active there myself and while I like it and it's gotten a lot better recently it still has an issue where it's largely hobbyists and inexperienced indie developers. Their uninformed opinion will often drown out more qualified voices. So take information there with a grain of salt.


Why don't you start with an idea and self-awareness of your strengths?

You might be good at puzzles. Or stories. Maybe visuals ain't your thing and you can write a text based game - there are great engines for that. Maybe you're a great dev and can start hack your own Dwarf Fortress and keep on doing it for the rest of your life.

Gaming and tech behind is so varied that whoever you are, you'll find something that plays to your skills.


I started contributing to an old open source strategy game, I played as kid, couple of months ago

It was extremely pleasant to fix some old bugs that kept annoying people (and me!)

I spend more time in the game guts, than playing though

I believe it's easier to start with existing game, than creating new one from scratch


I second Godot. You can make cross platform/mobile games with it. The IDE itself is built with the engine which is rather cool.

Fair warning, the syntax is python inspired but not compatible, which most of the time that will trip you up.

My second suggestion, is for your first project to develop a top down 2D (instead of a classical side scroller), using itch.io assets. To get a nice jump feeling for a side scroller 2D game, you straight ahead have to start using a state machine and fiddle a bunch, no hand holding with that.


Love2D is an awesome opensource 2D Lua gamedev engine. Super fast for prototyping and great dev UX. I think it also supports mobile now as well.


I'd go with Unity, targeting desktop for simplicity. There's an abundance of high quality tutorials (a respectable amount made by Unity) and the learning curve is gentle, imho.


I think the first thing to figure out is: do you want to make games or game engines? Or is there a specific part of game development that you are particularly interested in? Back in the year 2000 I was very into Level Design. Back then the FPS genre just took off and I happened to stumble into a "Worldcraft.exe" in a folder in the CD of Half-Life.


Check out this itch page for some suggestions:

https://itch.io/jam/game-off-2020

Scroll down to the " Help—I’ve never created a game before!" section and there are some suggestions like Phaser or Godot.


Thanks, this is a good starting point.


I would suggest you start by just coding a text-based game. Yeah, you heard me right. Maybe a text adventure or whatever. A D&D game printing out damage as logs. FTL clone, with text descriptions only. Anything. You can create a surprisingly engaging game just with basic standard input and output - even multiplayer games (the MUDs were basically this). Print a basic ASCII map, and now you can do Nethack.

The reason for this is: we all want to make beautiful AAA games. But if you have no clue where to begin, it means that you need to develop your intuition for the game logic first – otherwise, you would probably know what to look for :)

If you start by downloading Unity or similar, now you'll be bogged down trying to learn all its systems (without a clear understanding of _what_ you need to learn and what you can ignore, for now). You'll also be bogged down by the need for assets. Sure, you will have a full blown 3D engine, but it's still incredibly boring when all you have is a bunch of cubes or premade assets, so you are right back to square one. Only with more complexity. A lot more - the more visually complex the game, the more code you will have to write that's only concerned about visuals. Getting a character to, say, swing an axe and make it look right and that it is actually hitting something involves a surprising amount of work. Yeah, you could use existing sample games nowadays, but that isn't really teaching you much.

Then it depends on how much background you have. If you were, say, a front-end developer with any experience, you could use that to add some basic visuals. Think Tetris. You can do a lot with very rudimentary tools, as long as everything is kept simple.

At some point, you might _need_ to display graphics (maybe that's the whole point of your game idea). I say "might", because Dwarf Fortress, which is the subject of this thread, never really did. In which case you have some more decisions to make. Is it a 2D game? Maybe use something like Pygame, Löve (for Lua), etc.

At some point you'd be looking into Godot, Unity or similar. And guess what, you could take your basic text-based game, and re-use parts of it as the brains for your game.

Don't get into the game-engine building rabbit hole. It's very fun if you are into that, but know you are unlikely to release anything by going that route. Ask me how I know.

Platform: start with whatever machine you use for development. Presumably you know a lot about it, don't start a side-quest :) Specially, avoid consoles for now. Cross-platform development is getting easier than ever - sometimes all you need to do to start running your game on mobile is to click a dropdown. But that simplicity is deceiving, there's lots you'll have to learn about other platforms. Stick with what you know, until you are comfortable.

I'll let others provide reference material, my sources are outdated as I'm past my Gamedev.net days (for the time being).


Thanks for the in depth answer. I like your structured advice and it makes a lot of sense on multiple levels.


have you seen HandMadeHero? https://handmadehero.org/

Plus what do you mean by coding games specifically? Is it game engine programming? Game design? Or other related stuff?





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: