Chartered Waters[codename] is a roguelike(like) that I have been working on for the past week or so. It was intended to be a seven day roguelike, but stuff happened and I have no chance of matching that deadline. Instead, I've decided to try and flesh the game out.
I'm also planning on posting little dev logs of what I've worked on so far. There are some features l really like in my game >_<
It's about trading, really. I liked the Uncharted Waters games, or rather Uncharted Waters Online in particular. I also wanted to make a trade game from before. Then I wanted to make any game at all, so I decided to go for it. The creative title is clearly a mirror into the brimming font of creativity my mind is.
I initially thought of making a static world, but procedural generation is both awesome and fun. Also, a true roguelike should have procedural generation for as much as it can get away with. Another nice thing to have would be AIs running around and competing with you, buying and selling to maximize their profit. Therefore, these are the goals I have.
1. Make a trading game, like Uncharted Waters.
2. Make it have procedurally generated terrain, town names, ship names...
3. Make it open source.
4. Have AIs that are basically the same as the player run around the world.
5. Make it as fast as I can. No endless development. Put something playable on the market,
then improve on it.
6. I can't think of any more.
Screenshots:501 KB, Dropbox link to game. The zip obviously only works natively on Windows. If
The Program can't start because MSVCP120.dll is missing from your computer.
download
these x86 version.
View the README for some controls.
I shall link the following in later posts.
Quick dev logLink to Github commit recordsDay 1:
The language I used is C++, and additional libraries are libtcod, SDL, and libnoise.
The first thing I did was code a bunch of classes. They are Item, Ledger Item, Economy Item, Ship, and Town.
The reason there are three types of items is because I wanted a couple features that were best served by having Ledger and Economy inherit from Item.
Item stores what an item is aboutthe ID, the name, and the base price. It doesn't store any 'transient' properties like how many there are, or at what price they were bought at.
Ledger Item is basically the items stored in your inventory. They have a private list of how many you bought at how much each. This allows you to see the average price you bought items at so you can turn a profit!
Meanwhile, Economy Item is the items stored in the Towns. They store info on how many there are of it, what the demand for it is, and the price.
This comes to economy. How do I simulate supply and demand? I could go full simulationist, tracking producers and item sinks, but I decided I didn't have enough time to tweak that enough to make it work.
So I decided to basically cheat and make a S-curve which decided the price multiplier depending on the ratio of supply to demand. It works pretty well, but there's a few serious problems. For example, if you have enough money to buy out the town's whole stock, you can basically buy and sell repeatedly for free money.
Day 2. Terrain generation, and a prototype of A* pathing.
Day 3. Name generator, and "game states" to hopefully make UI less painful.
Day 4. Married A* pathfinding with the world map, making it aware of the terrain and pathing around it.
Day 5. Changed item IDs to strings, and pushed all the definitions into external json files.
Day 6. Coded the shop UI. You can now buy from, but not sell to, a shop.
Day 6.5. Mostly finished the shop UI.
Day 7. Finished buying from the shop.
Day 7.5. Implemented selling.
Day 8. Locking the camera to the ship is a thing. Also, you can now scroll the map. I immediately bumped the world up to 256x256 from the original 128x64.
Day 9. Item spawning was created.
Day 10. Item lists are fully filled out, and the shop and ship windows have undergone
a cosmetic change.I occasionally post things about CW on my blog
here.