Huh, nice and original idea, it seems. I'll take a look when I find some spare time.
Thanks! If you have any critique, I'd love to hear it.
----------
This month in development:
Project Site:
http://antumbrastation.com/bedsui-project.htmlLatest Version: 20171205
Save GamesI added the ability to save the game, which was probably the last major feature needed to make this truly playable. Currently, one can only save while in between lieutenant fights.
Game BalanceI nerfed the party druid, Cedarwood. A friend was helping with some play testing, and on one of his runs he slipped up and Cedarwood died. Instead of playing through the loss, he started a new game because Cedarwood’s magic attacks were too critical to try playing without. I probably would have quit then too. When I play, I almost always defeat enemy lieutenants by first cornering them and then blasting with Cedarwood’s lightning spell. To balance the team, I removed Cedarwood’s ability to use magical scrolls, giving that ability to the underpowered Freja. The player still gets two magical attacks at the start of the game, but losing one character won’t cost both those spells.
Game PacingOver the holidays (American Thanksgiving), I got a chance to see my brother and have him play test T31LoSB. He’s seen previous prototypes of the Tafl/Chess combat system, but never played this incarnation, and he focused on the sluggishness of the actual battles. First was how long commands take to type out. Take the following two commands:
move range <row column>
threat range <row column>
The crucial piece of info the predictive text matcher needs to guess the command is all the way at the end. The player has to type out “move range” and “threat range” every time. Compare the alternative:
<row column> move range
<row column> threat range
With the commands structured to have row and column first, the predictive text matcher can uniquely identify the command as soon as the ‘m’ in “move range” or ‘t’ in “threat range” is typed. Much less annoying. At some point in the future I’m planning to go over every command and make sure the crucial info is front loaded to optimize typing speed. For now I just fixed the more obviously annoying commands, such as the example two.
The next issue was how many turns are needed to win a battle. There’s too much time spent on initial piece deployment; openings last longer than in chess, despite each side having half as many pieces. Chess is played on a tiny board, 8 by 8, compared to battlefields in T31LoSB, 15 by 30. The bigger playing field slows down everything with the extra moves wasted just covering the distance, so I tried cutting down the board to 9 by 18. It’s quite a size reduction, having less than one half the squares the old, larger board had, and it feels faster (at least to me).
The smaller board has had other useful effects too. The computer AI has an annoying tendency to leave its lieutenant unguarded, making for easy, boring wins. On a smaller board the computer’s pieces are naturally clustered close, so it’s more likely a piece will be near by to protect the lieutenant. The AI hasn’t changed, but it plays stronger.
The density of pieces, both the player’s and the computer’s, also increases how often tactical combinations arise; closer pieces mean more possibilities and more interesting positions.
Improving the Tactics Puzzle ModePerformance wise, puzzles still take roughly fifteen seconds to generate, but I’ve implemented a multi threaded Consumer/Producer pattern to get around this. While the player is solving one puzzle, a background thread generates new puzzles and enqueues the new puzzles into a thread safe queue. When the player needs a new puzzle, the main game thread pops one of the pre-made puzzles off the queue. From the player’s perspective, new puzzles are generated instantly.
The tactics puzzle mode now has a puzzle solution screen. Previously, when the player failed a puzzle the game would just move onto the next puzzle with no explanation of why the player’s moves were wrong or what the correct solution was. I still haven’t done anything about the first issue, but now the game will explain the optimal solution. The player can step through the moves of the solution, seeing the board for every move.
I’ve added procedurally generated walls to the two-on-one puzzles. More kinds of tactics emerge now.