Easter has gone and Game of Thrones has started their final season, which means it’s time for another update from the Epsilon team! We hope you haven’t missed us too much the past two months, but as mentioned in the last update we’ve decided to slow down the frequency of updates in order not to spoil too much information before release.
In today’s episode we’d like to give you a better idea of how we make the maps for Epsilon, how our eventing works, and how you will be able to do this yourself in the future.
Making maps for Epsilon using Unity is a bit more complex than making maps for RPGMaker games. Whereas before we only had to deal with two dimensions, we now have to deal with a third one on top of it (pun intended). No longer can we just place simple tiles and be done with it, instead we need to consider multiple heights, different perspectives and 3D models we need to place.
To deal with this we’ve written a special map editor for Epsilon. People who follow our mapper Chase on Twitch may be familiar with (an older version of) this editor. The Editor is designed to make it easy to make and edit maps, and to even allow people without experience to quickly throw together a map (although the quality may vary).
To be as simple as possible, the editor is split in performing three main functions. The first of these functions is the placing of tiles. These tiles define how the terrain looks and are simple models that always fit in a 1x1 object space. Some simple examples of these tiles are a flat tile, a cliffside, or a corner of a cliff.
The second function of the map editor is actually texturing these tiles. While creating a terrain looks great, the empty white tiles quickly become boring. As such you’ll want to add some textures to these tiles - things like grass, sand, or other more complex textures. In order to add some variance these textures can also be combined, which would allow you to add some little rocks to a grass tile, for instance.
You should now have a nice looking terrain. However, to turn this into a good map for a game, you’ll want to add some objects. These are things like trees, houses, and other objects not part of the static terrain. Anything that’s bigger than a 1x1 tile, animated, or has some kind of event attached to it is part of this step. These objects can be rotated, mirrored, and tweaked otherwise to get the perfect looking object.
Once you have done all this you can save your map and close the map editor. The map file this gives you allows you to now simply import it in the game scenes. When the map is imported all the tiles get merged together to form one singular object, upon which the objects you’ve put down are placed. After this is done you can add the water on the map, generate the paths for it (these define where players and characters can actually walk), and start eventing.
A game wouldn’t be a game without events. There’s many different kinds of events, from often recurring events, like trainer battles or simple dialogues, to unique one time only events. To save time and effort, we generally hardcode the recurring events, where we just subtly change the parameters of the event itself. For unique events, however, this is not a good solution, as we’d like eventing to be a simple process that everyone can do . To do so we added a node-based event editor for Unity, which allows you to easily create events. In the image below you can find an example of one such event.
This event, while looking somewhat complex at first glance, does something fairly simple. You’ll notice the green “On Interact” node; this node is where the event flow starts when the player interacts with the event. It flows into a node that gives the player a choice. This node takes the dialogue for the question, and optionally a set of choices. If the choices are not given, it will default to Yes and No. Note that the question node type given here is something called a Localized String. This is a type that takes a simple string key, and translates it to the current language the game is set to. The current string key given here demonstrates the question given in the Pokécenter, namely: “Would you like to rest your Pokémon?”
After the player has chosen, the event flows next into a statement that allows you to go into different options depending on the value you give it. In this case, Yes will continue into the next dialogue, and No will end the event.
We will release these tools once they’re stable enough for public use (read: after Epsilon is released), so you will be able to play with them then, and be able to use them to make your own games. We hope you’ve enjoyed another somewhat technical post and deeper look into what it takes to build a game, and hope to see you next time!
All reside, confined evermore, until stirred.