This post summarizes the progress made on Shift during Iteration 1 (10/31 - 11/6). In this iteration I spent 47 hours on the project, which is more than my intended (and unexpected) limit of 42. I will continue planning the remaining weeks assuming 28 hours work, and be more intentional about limiting time spent in order to meet the spirit of this challenge. I'm just having too much fun. ^^
Progress / Takeaways
Links
Completed Features
- Title screen and application navigation (Exit, pause, etc.)
- Random generation of dungeons, and ability to navigate the map
- Prototype of monster behavior and movement
- Display of player status
- Display of log messages
- Expedition end conditions (player death, running out of turns)
- Basic inventory system and equipment effects
- Random roll-only combat system
Key Lessons
- I probably should have spent more time in general planning how I was going to implement some systems before diving into coding. I will chalk this up to a combination of excitement, and the competing forces of compressed timeline, 'crunchless' constraints, and what was probably to ambitious of a project scope.
- Spent several hours on the project's build and release system, partially due to being unfamiliar with Electron. Initially this seemed not to be worth it, but I think the ability to easily cut releases is paying off even early in the project.
- Electron is not a great platform for game development so far. The application is very large. Additionally, HTML/CSS and React turned out to be more difficult to use for creating a UI than expected. Specific difficulties exist around focus and event handling, scrolling, and detecting component size changes
- The React.js state model doesn't interact well with how I tend to structure games. Integrating a mutable game engine model with React state in a way that rerenders appropriately (and with sufficient performance) took a significant amount of time this week, and I'm not really happy with the current state of it. Since the game is turn-based, I probably should have considered using an immutable game model and building a more traditional React application.
- I probably should have spent more time in general planning how I was going to implement some systems before diving into coding. I will chalk this up to a combination of excitement, and the competing forces of compressed timeline, 'crunchless' constraints, and what was probably to ambitious of a project scope.
- It's easy to work on a project for way more time than intended!
Current Screenshots and Demo Videos
Earlier Progress Screenshots
Electron rendering and layout prototype