The Rewilder playable demo is available for download on Itch.
The first thing that I wanted to do is create a configurable tile map. The map is defined in a data table with the rows and columns.
I have ideas for creating a tool that will build the map based off an image with different pixel colours. I' may implement that later, as my focus is completing the MVP.
Test tile map
I have to admit that one of the things I love most about development is designing tools and processes that make configuration easy.
Today, I created a tile map system that will allow me to quickly change the style of the tils to be rendered.
Data table configuration
Flat tile set
Now that I have proven the tile construction and rendering, I wanted to have each terrain type to possess its its own properties, e.g. its affect on player movement, its fertility, its spread, etc.
Changing and evolving the terrain is crucial part of a core gameplay loop: barren soil can be be made more fertile through the player's actions.
Soil states
After the terrain, the creatures were the next feature to build. The ultimate vision is to have animated 3D characters. For now, however, I just need some temporary stand-ins.
I modeled a pawn in Blender that is configurable with the image and the name.
I generated the temporary images in Leonardo.
Pawn modeled in Blender
Configurable pawn actors
Today, I added some more realistic tile textures so that I can add some nice visuals to the pitch deck.
I also added the ability to change the base colour. Although these are temporary stand-ins for modeled assets, I thought it would be handy to distinguish between the pawns.
Textured tiles
Pawn config panel
Today I added a feature to add a condition to a terrain tile. This could be "flooded", "polluted", or "littered". These conditions may have an effect on the terrain tile's attributes, such as its fertility, movement effect, etc.
The Tile Configuation, below, shows how a tile will be set up in the level map's data table.
The Terrain State parameter determines the base tile, and we can add one or more conditions to the tile.
During gameplay, the player can add or remove conditions to create an environment that will attract certain creatures, or to generally improve the terrain.
"Littered" condition
Tile configuration
The next step was to add hover and selected states to the tiles. The simplest way to accomplish this was to add a "highlight" material to the mesh. I added this to the first material slot (index 0), and this will be the convention for all assets that require this behaviour.
In a later version, I'll probably use a prettier effect, perhaps with a post-process effect or a Niagara particle effect. For now, however, this is sufficient to prove the concept for an MVP/Demo.
The map is configured in rows and columns, which is eventually flattened into a single array.
The Build and ClearTiles buttons were added created by checking the "Call In Editor" option for their respective functions.
Tile highlights
Green = hover; Yellow = selected
Updated tile model
Map information mode
Live level configuration
Enabling a function button for details panel
Map configuration
I continued the tile and creature highlighting, as well as creature movment. We can now select a creature and move it to a new tile. The creature tokens are temporary stand-ins, and will be replaced with higher fidelity animated models.
To keep the functionality simple and maintainable, I delegated the features code into actor components: level, tile map, creatures, and game logic. I also created a debug actor component for outputting debug info in a consistent manner.
As actor components can only be attached to blueprints, and not actor components, I created a structure that contains references to the various manager actor components. This structure is passed into each manager actor component so that they can communicate with other managers as necessary.
Because the manager actor components are passed as a reference, they behave as singletons.
Tile highlights and creature movements
Manager actor components
Manager actor components
Storing the manager references inside a manager actor component
For some reason, my Unreal project became corrupted. My structures were broken and didn't compile, and there didn't appear to be a way to fix them.
So, I ended up starting a new project. Fortunately, I am still able to reference my previous work. The silver lining is that I can optimize some of the code that I was wanting to do anyway.
One of the advantages of doing a clean restart on a project is the chance to remove any technical debt and make improvements to the systems.
Now that I had gotten things up and running once more, I added some of the core gameplay mechanic: assigning tasks to creatures.
In the MVP/demo game, you will enlist the aid of a brownie to clean up and "disappear" litter, making that tile available to attract new creatures, or have existing creatures act upon it.
Litter cleanup
Camera-Facing Creatures
I added a feature for the temporary creature stand-ins where the pawn will rotate to face the camera. On my list is the ability to rotate and zoom the camera, so this would be handy to make sure that we can see the creature pawns from all angles. This will probably be unnnecessary once I eventually replace the standees with 3D models of the creatures. But for now, this was something that was bugging me, so I implemented it.
Runes
I've updated the game so that the player can place a rune where they want to summon a creature. Eventually this will be in a spellbook of sorts, but for now, I just bound it number keys. For now, I have a triangle rune, one facing up, and one facing down. The darker pink hex indicates the base tile.
Camera-facing blueprint
Rune patterns
I initially had the creatures' actions UI the pawns. I found that they were difficult to read from a distance. For now, I decided to move this functionality into the screen's UI. It will allow for a more detailed view of the character in the form of a portrait
UI overlay
Separate Rune Ring
Initially, I was using the texture on the outer ring of the base tile to indicate statuses, such as selecting the tile to move a creature to, an invalid status, etc. I tried to adapt it represent the "summoning status" for the tiles within a summoning rune.
This became a bit problematic and presented challenges in returning to the previous state. I figured in the final game, I'd want to have a magical effect for the summoning feature anyway, so I added a "ring" mesh above the tile that would display the tile's status: placed, conditions met, and summonable, when all of the tiles conditions have been met. For testing purposes, I'm also displaying those statuses on the tiles themselves.
Summon status mesh
Summon status rings
I refined the mechanic for attracting creatures. The concept is relatively simple: When the conditions on the terrain tiles withing a summoning rune pattern are correct, a creature can be attracted (summoned).
For example, a Dvergr (an Earth Dwarf) will be attracted to barren soil that is free from litter. When the Brownie uses his 'Clean' ability to clear the litter, and moves off of the tile, a Dvergr will arrive on a random tile within that rune.
Putting together this entry, I noticed a that the tiles are still "summonable". Item #1 on today's Fix List :)
Two tiles ready; one needs to be cleaned up.
The rune is ready to attract a Dvergr (but the Brownie is in the way)
The Dvergr has arrived!
I spent today bug-fixing, and also added some "progression" logic.
Progression Logic
I initially created a "Tutorial Manager" that would advance through a list of abjectives as the player completes tasks. The game dispatches events on creature abilities, and at various stages e.g. attempted, started, completed, and failed.
The Tutorial Manager worked well enough, but I encountered a quandry when I wanted to add a new rune to their Book of the Fae. While I could add this functionality to the tutorial, eventually we would want to have this functionality as part of the standard game, as it is part of the core game loop.
I changed this progression functionality to be more scalable. We can add multiple level progressions to the levels, and they run concurrently, each with their own responsibility, e.g. tutorial, standard game mechanics, achievements, etc.
Creature summoning game loop
Creature ability event handler
Level table with Level Progressions
I've been doing quite a bit of refactoring, cleaning up the code, and optimzing my approaches and patterns. I have no visuals to share quiet yet, but I'll report once I've completed the updates.
Going Dark
Over the past few weeks, I built out level progression system as well as the tutorial.
They both use the same base class; they have a list of objectives and listen for events that will complete them. For example, when the Dvergr arrives, the level progression will add the Spriggan's rune to your book, and the tutorial advances to the next step.
Game Jam
I had the privilidge to participate in the Out of Office Game Jam. I had some talented artists and designers on my team. I contributed by handling the capacity of narrative design, sound designer, and music.
MVP Release
I have released an early playable prototype on Itch.
I have updated the gameplay demo on Itch.io, and a gameplay video on YouTube, also included here for your convenience.
I have just submitted my application for the Ontario Creates Futures Forward program!
It is a highly competitive program. Hopefully Rewilder will prove to be a compelling concept for them assist me in developing further.
I spent this Satruday at the Toronto International Film Festival's IP Marketplace, promoting my other passion project, Soulcatcher, a dark medieval fantasy. I also brought up Rewilder a few conversations, though there isn't really a lot of investment-worthy IP at the moment.
Now that Rewilder is in a good spot for an MVP demo, I'm donning my Sound Designer and Music Composer hat to add some sound and music to the demo.
I'll be using Reaper for creating the sound effects, and FL Studio for composing the music.
I've been working on creating a music track. I wanted to have an Celtic/Irish/Scottish feel to the music.
Maybe I got a bit carried away with the orchestral bits?
I'll probably revise it and focus on the flute and fiddle, and may be add a harp.
I've uploaded a new version of Rewilder that includes sound effects. I haven't added music track yet.
The new release has sounds for creature spawning, movement, and abilities. I'll likely be polishing these sounds later as I learn more about sound design, or better yet, have the ability to hire a sound designer.