Hello, I'm making my first game for my first game jam. What a surprise, right?
I'm a programmer, so I want to make a game without a game engine. I'll be using C++ with mainly SDL2 for window creation and input and OpenGL for graphics. I intend for the game to be cross-platform, but I'm developing on a Mac first because I have been doing that for the past few years and I enjoy it. I want to support Mac OSX, Linux, and Windows. I possibly may make a WebGL version if there is time, but that is a stretch goal.
I'm hopefully not over ambitious in my game. I haven't made anything like this so I may scale it back if I think I can't finish it within the time frame.
Since this is my first game, I would like to make it as simple as I can without losing motivation for making a game. This game will be an almost rogue-like game where the world is simulated in turns. You control a main character that will kill enemies, level up stats, drink potions and find treasure. The aim of the game is to improvise, adapt and overcome the underworld and to find the Holy Grail.
Attacking enemies is based on randomness and simplified attributes. The main character has these attributes:
- Strength - Determines melee and damage
- Constitution - Hitpoints
- Dexterity - Attack speed
- Intelligence - Determines what potions you can identify and use.
Each are ranked 3 to 18. You may have noticed how similar this is to Dungeons and Dragons; that is because I ripped it off; there is already a wealth of knowledge on these stats and how they apply to damage an enemies, so it seems like a good idea to use them. There is no charisma or wisdom though, I don't want to add NPCs that you can talk to where that would matter.
The player is awarded a stat increase after killing enemies and reading books for the most part.
The player has a boosted stat increase with items:
- Potions (will last x amount of turns).
Each item has a rank and separate attributes to boost player stats. The player will start out with a wooden stick. I like the idea the player starts out really weak and progresses up into an absolute killing machine.
The player loses the game once the main character's hitpoints reach 0. A player loses hit points to enemies (and maybe traps). Right now, I do not want permadeath but I may change my mind.
The game will be tile based with 16x16 pixel tiles; so it will be simple looking, hopefully not too terrible. This is technically the underworld, but I'm leaning towards a cold, dungeon-like setting.
There will be 3 to 5 "levels". I haven't determined how large they should be. I do know that the player has the chance to obtain the Holy Grail at the end.
Setting up the initial shader compilation and general program set up. I'm not going to bother with art early on, so I bought some sprite tiles from Mr. 0x720 here. Testing colors as well.
Implement sprite cut-out rendering Implement text rendering Implement in-game tile editor Implement map saving and loading Create first dungeon room Implement movement
Slowly but surely it's taking form. The text rendering is a bit weird here though. Some of the text doesn't line up correctly. I'll debug that at a later time.
I decided to go with an existing tile editor that works in-game so I can get faster iterative changes. I went with stb_tilemap_editor.
Now to move on to map saving.
I need a map format and I don't like JSON or XML, so I'll just create my own really simple format that would be easy to parse. I think I will use the following format and add to it as I go along. I will use IDs to represent objects within a map and a configurable amount of layers. stb_tilemap_editor has a concept of linking objects together and object properties. I think I will skip that for now and hard code as much as I can get away with.
width = 24 height = 16 spacingX = 16 spacingY = 16 maxLayers = 2 Layer 0 = 0, 0, ..., n Layer 1 = 0, 0, ..., n
So that's done now. Parsing plain text is a little slow.. but I doubt it's too noticeable for such small levels.
Implement event log display Implement stats Implement inventory
- Implement pick up items
- Implement combat
Blob monster chase
First draft of inventory GUI/code inventory is implemented. Event log is also implemented, need to add a scroll bar to it. I haven't finished combat, so I'll have to scale back a bit since I only have a couple hours to work on it after work. So I'll hold back the mini map and scrollable camera when traversing dungeon rooms.
Day 4 and 5
Don't have a whole lot of time after work to work on this game so I'm doing some low maintenance work at the moment to clean it up before the weekend.
Not much to show, but I've made the codebase much cleaner and wrote gui elements for taking actions such as attacking and examining.
Implement first state of a dungeon generator
I've been reading things about dungeon generators and came across a strategy to generate non-overlapping rooms of various size using a BSP tree. That was fun to implement. Now I just need to translate the rooms into rooms in my game.
Implement moving camera Translate generated dungeon data to drawable tiles
Chill day today. Tomorrow will be matching tile sets and themes to the generated dungeons. Need to add the rest of the mobs and then place the grail in a random room in the dungeon.
I have a feeling balancing will be difficult. I have a holiday on Monday, so it should be a very productive 3 days!
I've got a windows build now.
Learned a lot, made a prototype kind of thing. Can't really say it's a game... but it's something. I learned how to manage my time a bit more and built some knowledge on what to expect for the next time I do a gamejam. I lost a little momentum when I realized I don't really like roguelikes, so I focused on some technical bits with the code. But that's what it's all about. Learning was done.