sss asked me about my thoughts on when a playable version would be out, and my response has turned detailed enough that I figured I’d make a post about it. But first, a brief announcement: My host is performing some maintenance this Friday, so my site will be down for about 30 minutes around 7 AM Pacific Standard Time.
As far as a playable version, I’m shooting for end of June. As a brief reminder, here are the three large tasks for writing my engine:
(1) Design and implement a GUI that the user sees and interacts with.
(2) Design a backend that contains all the game’s actual data
(3) Write a middle layer that takes user inputs from the GUI, and queries (and modifies) the backend appropriately, and then send the results back to the GUI to display.
I believe that (2) contains the bulk of actual lines of code.
For (1) I’m using IntelliJ’s GUI builder tool. It’s not the greatest ever, and the GUI will probably be more than a little rough at first, but it should be enough to create something playable. With that tool, creating a GUI consists of dragging and dropping some GUI elements onto a canvas, and registering a bunch of buttons.
The most complicated part of (1) is drawing the dungeon. However, I came across an excellent tool called Grid Cartographer: http://www.davidwaltersdevelopment.com/tools/gridcart/
Essentially, this tool allows me to draw a dungeon, and save it as both an image file, and an XML document. So I can use the XML document to load the actual dungeon data into the backend, and for the frontend, rather than manually drawing lines and filling in squares like I did for Potion Wars, I can just render the dungeon image that I drew. Using that tool, I’ve managed to implement the dungeon view with a minimum of pain (so far).
I expect (3) to have the most complicated logic (particularly when it comes to combat), but the vast majority of it should be about as simple as the GUI code (take a command from the GUI, and invoke a couple of methods on the backend).
I think I have a reasonably good chance of having all the GUI code written by the end of February, and the controller code written by the end of April. I expect it’ll then take about a month to translate (and edit) the content of episode 1 day 1 from LaTeX to the mostly-JSON format that I’m using for Crimson Glow. Then, I expect it’ll take about two months to debug the engine from end to end, because you can only test so much with unit tests. GUI code in particularly is notoriously hard to test automatically.
Spankers, Spankees, and Switches of All Ages (18 and above),
Just the monthly progress update. I’ve managed to get a _lot_ done over the holidays in between family obligations. Basically, there are three big pieces to the program:
- The code that the user interacts with. This is responsible for displaying the game, and receiving commands from the user
- The code that models the current state of the game.
- The code that takes the user’s commands (given to it by 1), modifies the model (2) appropriately, and tells the view (1) what to display next.
I’ve finished most of the first pass of (2). Right now, I’m working on the code for saving and loading (which doesn’t require much. I’m using a library called Jackson, which does most of the work for me). Once that’s done, I’ll be finished with the first pass of (2), and then I’ll move on to (3).