A space exploration game where you play as a spaceman who has crashed in a small solar system. You need to find the missing parts of the ship to save yourself and your crew while investigating strange alien ruins. This project was made in Unreal Engine during 4-weeks halftime as a school assignment: "Advanced Level Design: Open World".
Since a was still recovering from finishing Outer Wilds and had found an interesting plugin for alternative gravity in Unreal Engine I decided to push the boundaries a bit and turn the Open world assignment into Open Space. My goals were to create something in the vein of Outer Wilds, experiment with the Unreal Engine Plugin: "Directional & Planet Gravity" and expand on my own Dialogue/GameState system.
A fun and interesting design problem to solve was how to help the player navigate around the planet. For this purpose, I placed several Landmarks placed around the globe. For Example; the Crashed Spaceship's tail points towards the Hub, so if the player sees the Ship from any direction they will know where the Hub is. There are also different types of rock depending on which side of the planet you are on, one side has sharp and pointy rocks, while the other has more tall and cylindrical rocks.
Part of the assignment was to have a hub area that you return to. I've always liked the kind of hub areas that change over time and that NPCs you meet in your travels return to, so I made that. The Hub is placed right beside the Ships crater, and since you can only carry one Ship Part at a time, you have to walk through the hub everytime you find a Ship Part.
I use the Unreal Node: "ProjectWorldToScreen" to see if the Hub is within the players view frustum so I can add plants and NPCs to the Hub when the player is not looking.
The motivation behind Tide Planet was that I wanted a planet with more vegetation and ice-covered poles. I also thought it would be fun to have a water planet with different islands and then I got the idea of Tide Water that the player could get swept away by. After that came the tropical theme and the twin moons to explain the crazy tides. There are three islands on the planet, excluding the poles. To help distinguish the islands they each have a specific prop on them, like jellyfish or seashells and different tree layouts.
Running around on rotating rings around a small core was something I experimented with in the early prototypes of this game. I thought it was pretty cool and fun so this whole planet is built around that idea. One problem I had was how to get between the different layers of rings in a smooth way. What I did was to place big drill-like contraptions that the rings rotated around, which also works well as navigational landmarks making traversing the space easier.
When researching tidally locked planets I came across the term Eyeball Planet, where the sun-facing side was incredibly hot and the dark side was freezing cold. I also thought it would be fun to have something hidden on the dark side that the player wouldn't be able to see until they came close to the planet. The Volcano was originally part of the Tide Planet where the tide was Lava at first but was moved to this planet since it fits very well with the Hot/Cold theme and also made the planet look a lot more like an eyeball.
The Dialogue and GameState system started out as a simple dialogue check state system that could play different dialogues depending on how many times the player interacted with it or if they had interacted with other actors before. It could loop a set of dialogues or play them sequentially and then only loop the last one. The system was expanded upon and now anything can set States that affect the dialogue and objects can listen to States and for example activate when a certain state has been reached.
Anything can have a Dialogue Component that has a list of which dialogues it can play. It will check the list and pick the first one where all Required States are met. For Example "PyramidActivated": true & "TalkedAboutPyramid": false opens up a dialogue about the pyramid to play once and closes it after the pyramid has been talked about. After a dialogue has been played it can set new States that can change the dialogue for the next time or affect something in the world. All NPCs also have a default dialogue option with no Required States. This is redundancy to avoid having to check all possible combinations of States.