rpg ultima science fiction c++ squirrel yaml-cpp RandomLib SFML
Here I will attempt to chronicle the efforts of creating a science fiction Ultima-inspired RPG.
I'm a hobbyist game developer, and this game will be freeware and open source. I suppose if the code turns out good enough I may follow up with a commercial game, but that's another story.
So far I have this:
Decades ago, colony starships headed off from Earth. Half of these lost contact with Earth. Today, mankind has invented faster-than-light space travel. A task force of starships are being sent to recontact these lost colonies, or at least discover their fate.
You are an agent manning one of these starships, and you have reached the star system one of the lost colony ships was heading for. You are sent out in a shuttle to survey one of the planets.
You are shot down from orbit. It turns out that space pirates have surreptitiously acquired faster-than-light technology and have taken this world, conquering the lost colony. Now you have to deal with the space pirates, the untrusting colonists, and the hostile native wildlife. Adventure ensues.
I figure this art style will be a fair trade-off between attractiveness, required skill, and required effort. If it's going to be programmer art, hopefully it'll be good programmer art.
Gameplay-wise this is a top-down, tile-based, turn-based RPG in the style of the first five Ultimas, only with a science fiction theme. And hex tiles. You have to talk to people, collect items, solve puzzles, and shoot bad guys. All the while you have to figure out how to get off this world, reach your starship and your crew, and maybe do something about those space pirates.
Tech-wise the game going to be written in Squirrel with a C++ core. Squirrel will be used for the main game logic, and C++ will manage the infrastructure of the graphics, resources, and the application itself. The graphics (and audio, when I get to it) is powered by SFML, I'm using yaml-cpp for some of my config files, and RandomLib is providing my game with, well, randomness.
There's still some stuff I need to bake into my C++ core before writing the game proper in Squirrel. For one thing, I'll probably bake in a game state system so that I don't have to worry about it in the Squirrel side.
I also need some kind of GUI solution, which is filling me with trepidation. This I will likely detail in another post, but my project has certain constraints and conditions that limit what kind of libraries I can use, this project being freeware and open source being one of them. I'm also developing on a Mac, so there's that too. Meanwhile, all the possible GUI libraries I've seen seem lacking in their own special way, and building my own GUI system would lead to madness.
Wish me luck.