Sunday 15 October 2017

Lanarts Update October 15th, 2017

Download here!




Boy has it been a long time since I released. Releasing can be a very hard mindset - Lanarts always has some features that are more experimental than they should be. My friend Pat reminded me how sorely needed Lanarts releases are, so here goes (the last time I regularly released was in 2012!).

Greatly improved random world generation:

As I alluded in my last Lanarts development blog (it wasn't even a release), a major addition a while back was the random generation of the overworld that connects dungeons. This has been greatly enhanced to the point that the map has arguably more interesting features than when the map was hand-made. Notably, as with other rogue-likes such as Dungeon Crawl Stone Soup, hand-designed 'vaults' can be blended into otherwise procedurally generated rooms. In addition, many additional dungeons and bosses have been added to the game.

Lives mode:

Non-hardcore mode now has 100 lives per player, shared by all players in a lives pool. This makes death still relevant - you want to save the players who keep dying - but make the game feel much lower stakes, as a casual mode should. A previous iteration had the game only end when everyone died. This was exciting - however, it discouraged everyone working together. 

Split screen:

Play with a controller plugged in and automatically play with your friends! Currently the only way to set the classes of other players is by setting the L2, L3, etc environment variables, eg L2="White Mage". If you want the first player to play with a controller, use LANARTS_CONTROLLER=1. I understand this is a brutal interface, more work to follow!

Pixel lock is banished:
Pixel lock was the name given to a 'feature' of Lanarts where, due to enemies being considered solid objects, and the 'pushing' mechanism that the game provides you being quite limited, that some times you would get completely stuck and have to fight your way out. This created some of the tensest moments in the game - a seasoned player would fear corners greatly. However, it greatly limited design space! Suddenly the biggest worry about a group of enemies was not their combat power, but the fact that they would physically pin you as a fundamental part of the game. Now, you simply move half speed through enemies. The resulting game play feels intuitive, you don't notice the weird aspects of pushing enemies anymore, and there is much more room for big groups of enemies.

New game advancement structure:


Key items that unlock areas is a major theme going forward. Currently in the game, you must first get a blue key, then a yellow key, and then three 'Lanart's to progress through the game. Lanarts (which obviously exist to give the game's name a concrete reference) are currently objects with no effect other than being collectable, and found in major areas / when bosses die. Collect 3 lanarts, enter the final area, beat the final boss Pixulloch, and you win the game.

Missteps and not-missteps:
Why does Lanarts take so long to make? First and foremost, Lanarts is a learning project. I'm really not afraid to take my time and make mistakes. However, I should take more time to talk about my mistakes.

One mistake was trying to rewrite Lanarts in a new engine. I learned a lot about MOAI, hacked a lot to make it work how I wanted it to, but at the end of the day questioned whether I was really better off using a large engine that I don't understand. This isn't to say using MOAI wouldn't have immense benefit - but rewriting is such a costly task that you better be getting serious metaphorical cash for your endeavour. I saw potential but a lot of hard work ahead.

Now let's get into something I did right - the most crucial thing I did for Lanarts development I believe was to abandon the MOAI version. The key insight was that I started afresh with the MOAI version and did some really cool things because I had a fresh slate - but that didn't mean I couldn't do those things in the old code base! So, while the previous development blog promised a procedural overworld and a new stat system, these features were actually tied to what was essentially a mock-up of Lanarts.

Porting over the procedural overworld was a very important task - especially for my motivation. Before, my most exciting feature (greatly more sophisticated world/level generation) was tied with a version of my code that needed monumental work. When I ported over the code, I gained a newfound appreciation for my old code and I felt like working with it was well worth it. Some rounds of cleanup later and, while not ideal, I am very satisfied with the state of things. I can truly do a lot of things really nicely.

What about the stat system which I was excited about last blog? Turns out I was thinking about stat systems all wrong. When you see a stat system with a lot of distinctions, it can be exciting - but only as exciting as those distinctions actually mean in gameplay. One thing I've learned about Lanarts is that it doesn't work well as a subtle game. Stats need to be very clear in their impact. As such, I took a key component of the stat reformulation - damage types, and kept only that. To increase the clarity of damage types it was important to simplify the stat system. Now in Lanarts you have to worry about your power, which adds 5% of your base damage for every point, and their resistance, which subtracts 5% of base damage for every point, and what types are relevant. Previously, stats would also interact with your base damage and complex solutions were used to avoid degenerate cases. Overall a big win, and that leads me into my other feature.

Damage types, new classes:

Play as the Red Mage with strong spells of fire or the White Mage with lightning power! Necromancers largely pay with their own life for their devastating magic, and summon shadow creatures to aid them. Use ultimate spells to clear out large areas.