I've got a general question for you programmers out there. I'm dabbling in the field myself (degree in computer science, but not actively programming for a career), and I was wondering how one even starts making a game like this, like what steps do you take to actually get this to a working state? I'm sure you can't just start coding then figure it all out later, especially making ascii-based games requiring tilesets etc. I'm just wondering what order you do things in, the steps needed to get something like this working, and things like that. I'd be interested in making little games like this as a side project, but I just have no idea where to start or anything. Assume I'm not completely dumbfounded by programming, I have some minor experience in Java/C++ and a little bit of python, I just wouldn't know how to get everything to work together, or how to implement save states, or even how to make the whole graphics portion of it.
Yeah, I would definitely be one to get it semi-working and then add stuff as I go. But I was more wondering along the lines of what exactly I need to do to get it working. I can code fine, but I have no idea on how to make it into a working exe or even where to start to actually have it do stuff. I can do logic and programming, but I don't know how to, say, make the whole game into a package that can be run and worked on, or even how to display anything graphically. I'm sure, using ZSS as an example, that I could do the actually gameplay elements like programming AI for zombies and stuff, but I don't know how to package it all together and get it to work, like I have no experience with compiling or anything like that.
A lot depends on what sort of game you want to build.
ZSS is written in Python using Libtcod (
LIBrary for
The
Chronicles
Of
Doryen). A guy who goes by Jotaf wrote
a pretty excellent tutorial for python+libtcod that walks you through the stuff you're feeling a little lost on -- it starts with installing libraries and software, copying files into a directory, then opens up a blank file and steps through coding it line by line. At every step, the reasoning and expected logic of the code is exhaustively explained. The tutorial steps through iteratively developing a game from the ground up, sometimes going back and revising things initially done in a quick and dirty manner to make them more flexible. It covers making a window, drawing to it, keyboard and mouse input, saving and loading, handling data internally, map generation, building to an exe file... it's pretty sweet.
Of course, it's making a generic roguelike. You won't end up with ZSS or anything with fancy graphics at the end. It does, however, provide a great tutorial for how to do what it does, and I stepped through this same tutorial when initially building the game. Though I hope you'd have trouble seeing the evidence -- I deviated wildly from the tutorial at every step, and used it mostly to answer the same sort of questions you had; "I can already build structures in the general sense, but how do I lay in the foundation/plumbing/electrical for this building I want to make?"
If you're looking for more graphics support than an ASCII game, you'll want to use a less specialized library than libtcod, and get help specific to that. You may need a bit of luck to find a similarly robust tutorial to the one I linked above, but there are still resources out there. For 2D things, there's SDL in C, SDL or SFML in C++, and PyGame in Python. Maybe Direct2D for Windows-only applications? I'm not sure for Java. In 3D I think you'll be looking at OpenGL or Direct3D, but I think if you're going for 3D you'll probably be better off going with something like Unity rather than trying to roll your own engine, because that gets complicated and you probably want to be making games, not writing graphics code. I don't have significant experience working directly with any of these libraries (though I have worked on teams where others did), so I don't have much commentary beyond that. I could tell you about graphics in Adobe Flash or Adobe AIR, but it doesn't sound like that's where you're looking.