Tiles, tiles, tiles...
So here I am again, a week later.. I did not really follow up my goals from last time. I have a hard time putting all my ideas on paper so I've decided to instead of writing a long and complicated design document I'm going to develop the game as it comes and instead make lists of features I want to implement and then create a planning to introduce them. So below follows first a little more describing image of my vision and a list of "steps" which will gradually build upon the game. These are a bit technical and doesn't really delve a lot into gameplay, as there's not a lot of it in these early stages.
"RPG4 is a hard, yet forgiving, strategic dungeon crawler similar to a rougelike. Turn and tile based with planning required in order to be successful. The game will be filled with interesting skills, spells, abilities and items you can flesh out you character with as you descend through the either handmade or procedurally generated dungeons RPG4 will have to offer."
- The first step is creating the tile manager and the tile. The tile class is abstract and will be extended with different type of tiles. This step will be capable of displaying tiles on the screen with different textures, animations, depths, alpha values (different extensions of the Tile class). The tiles that will be available in this step: wall, floor, blood ("decoration"), rock and water. These tiles will be able to demonstrate the capabilities above. Some tiles have their texture determined depending on the surrounding tiles. The user will also be able to scroll around the map by holder the right mouse button and moving the mouse around.
- This step will implement the actor and the player class. The actor class will be abstract and currently only exist for the player class to inherit from. The player class will be able to move around the map using the arrow keys and using the mouse by clicking on a tile next to the player. The player cannot walk upon some tiles, such as the wall and water tiles.
- This step will refactor the player class moving anything that is not player class-specific to the actor class. The NPC class will be implemented and extending the actor class. The concept of turns will also be introduced. All the actors will be enumerated upon allowing them to update. On the player's turn it will wait for user input. All NPCs will each tick arbitrarily either move or just stand still for the time being.
- This step will add the ability to interact with tiles and NPCs. Each Tile and NPC will have different actions when interacting with it. For the time being though, interacting with tiles will only cause the tile to change texture and interacting with an NPC will only cause the NPC to turn towards you.
- This step will expand on the interaction with tiles. A list of Tiles will will also be added to the Tile class. This list will be the "targets" of a Tile. When the player interacts with a tile, each tile in the "targets" list will also be indirectly interacted with. This will allow for remotely interacting with tiles via another tile. This step will implement the switch and door tiles to demonstrate this.
- This step will make it possible to save the map to an external file and load it. The maps will be saved as plain text for the time being. As the game will be a single player game, the only one being hurt by cheating is the player, therefore encrypting the maps might not be needed.
- This step will add fog of war to the game. The whole map will be covered in fog of war and only the tiles closest to the player's starting area will be uncovered. As the player explores more of the map will be revealed. Only the closest tiles to the player and tiles within the players sight will be illuminated as the player moves around. Other uncovered tiles will be darkened but still visible, other actors on these Tiles will not be visible though.
- This step will add a mini map to the game. This is the first GUI step. The tiles will be drawn a whole lot smaller in the mini map and tiles with special interactions will be highlighted. What the user sees on the main screen will be shown with a rectangle on the mini map.
- This step will add a message box at the bottom of the screen. It will display important messages, what actors say and other valuable information to the player. This message box will also be used to interact with some tiles and actors. The player will not be able to type in the message box but mearly select options presented to the player.
- This step will add dialogues to NPCs. The message box will be used to talk to actors. The player can select different options with responses in the message box to hold a conversation.
I think this kind of list of steps and implementations is just what I need to keep my mind clear and work on one specific task at a time. I've also decided to go down the route of C# and XNA. This is the language and framework I know best and with the ability to easily port it to Mono and MonoGame later on, possibilities of Mac and Linux ports are not far away.
As I am not really familiar with presenting ideas such as these to other people it's easy for me to presume you know what I'm talking about. I just discovered I didn't even tell you what platform the game would be for in the last entry so if there's any unclarities or questions you have I'd be glad to answer them as that also helps me develop the skill of presenting ideas to a totally new person that doesn't know anything about it.
That's all for now, I'll have a lot of other stuff to do the following week so I do not think a lot of time will be spent developing my game but the week after that I think I'll get to some programming!