Dev Log 4 - Our internal tools

Sea Of Rifts

In this naval roguelike RPG you assemble a motley crew of misfits and sail into a broken ocean to solve the mystery of why the world is falling apart. Engage in tense ship to ship combat and experience a new unique story every time you play. The helm is yours Captain.

Hello again, mateys! Alex is back with another tale of brave game development. Today, I'm going to talk about the in-house tools I've made that allow us to create Sea Of Rifts. I love making tools. It's very satisfying to have a workflow that works just right and is perfectly suited for your own needs. Here is what we needed the tools to do: [list] [*] Make it easier to test the game [*] A lot of the game is generated only when the game is played making it difficult to debug. Therefore providing ways to visualise the generation is very useful. [*] Allow non programmers to create content for the game [*] Not take too long to develop They can be a bit rough as long as they are functional [/list] [h1]Debug menu[/h1] [img]{STEAM_CLAN_IMAGE}/44778071/24d24f519e6fae65881d63fa0451b24e0376c0ca.png[/img] The simplest but most used tool we have is the in-game debug menu. This allows us to easily, for example, injure a crewmember or give the player a specific item to test interactions in the game. If you're starting out on your own game, I highly recommend you put a debug menu into your game early. I've made mine so it's easy to add new options by calling a single method: At some point, I also want to add that the content of the buttons can be dynamically changed so there can be toggle and multi-state buttons. It’s also worth noting we can start the game in a debug mode where the ship is already populated with crew, and they can also be automatically assigned to duties so you can get right into testing the game. [img]{STEAM_CLAN_IMAGE}/44778071/0bea7f96d2cea11f636c774dda46bf231f95aecb.png[/img] [h1]ProcGen Visualization[/h1] [img]{STEAM_CLAN_IMAGE}/44778071/4e23f7ae1e6e563b0bde74b850be7bbb2e467076.gif[/img] Often the first step to understand a programming problem is to visualise it. I therefore wanted an easy way to show an image with custom information inside the game. Luckily for me, we already had a place to do that - the in-game map! With some switch statements inside the map UI code, it's easy to add more data to view and then use the debug menu to choose between them. We use this to visualise places for world events to spawn, how wakes are rendered after ships, where to place trees, and so on. [h1]Narrative tools[/h1] [img]{STEAM_CLAN_IMAGE}/44778071/9768e9108ba6a786520e23dec281f6375f35c35e.png[/img] Sea of Rifts is all about creating memorable stories for the player. We have a bunch of different mechanics in the game to create these, and they all need content created for them. Thankfully, we are making the game in the Unity engine, and it is fairly easy to write your own editor windows for it. This is a lot better than, for example, having the data come from text files or spreadsheets, since you are sure the data is valid, and it can also be a much more rewarding workflow for the person working with it. The first one I made was to hook gameplay up to Ink, the narrative scripting language we use in the game: This allows us to write out the interaction in Ink and then hook it up with the gameplay. Choices made by the player can change parameters in the game state, and skill tests done by the crew result in different outcomes triggered. For writing Ink we are using the default Inky editor. If you want to know more about how tools can help you in your own game, then I did [url=https://www.youtube.com/watch?v=rNP3BOBxY9E]a talk[/url] some years ago on the topic that’s still worth a watch. That’s all for this time! Please give Sea Of Rifts a wishlist if you haven’t already :)