a.05.01 Releasing July 2
This prototype improves entity AI and brings other smaller improvements and bug fixes
Demonstration of Room/Line-Of-Sight Awareness
In this update I wanted to focus on improving the entity AI. There were still plenty of ways to cheese them, and they didn’t seem too smart. I had thought this update would take longer to work on because this deals with adding more complexity to AI, but it instead only took a few days, surprisingly, to implement these features. Entities and the player are now aware of the room they are in. While this information isn’t used by the player, entities can check to see if the player is in the same room they are in. This allows for stationary entities to have a longer range (it bypasses their required range for full awareness, just not their partial awareness range) if they are on the other end of a room. Room awareness also keeps mobile entities from choosing a random spot to fire from that’s in a different room. Originally, sometimes this random spot may be a room that’s directly on the other side of a wall of the current room, yet the path to go there is actually quite a distance away, essentially making the entity leave the fight. It now prefers to stay in the room the player is in (including if the player moves to a different room as well). In addition, mobile entities ensure that they stay in a similar y-level to the player – this means that the entities won’t go underneath the player or above the player in the cargo bay rooms depending on where the player is in said room. To ensure entities don’t start firing at the player when they’re in a completely different room (like in the situation described before), entities with projectile weapons require a line of sight in order to continue firing. After a couple of seconds, they will stop firing if the player takes cover (line of sight is from the entity’s center, but with the stationary turret, its weapons are offset on two sides, meaning it can still damage you before it stops firing if you don’t take enough cover). Cover was already effective, but now entities will show more intelligence in firing because of it.
Mobile entities alert when damaged
The last improvement to entity AI involves entity assistance. When a mobile entity takes damage, it alerts any entity within a range of 50 meters. This has a time limit (to ensure performance) of how many times it can occur, and entities won’t be re-alerted of a new location until they reach their idle state after a while. When an entity is alerted, it will go to the location of where the entity was when it took damage. The player has a chance to destroy the alerting entity and get away from the area, but nearby entities may have a chance to arrive before then.
Locked doors with unlock requisites
There’s a variety of other smaller changes I made in this update. Some of these are bug fixes. In order for entities to be aware of the current room they are in, they needed rigidbodies to utilize OnTriggerEnter. This happened to fix a bug where they weren’t triggering doors to open/close. Also in the realm of doors, their lock-state indicators have improved visibility (especially with bloom), and now use a texture so that they’re more color-blind friendly. They also keep track of the characters that are in their door trigger zone. This is used in their routine cleanup functionality; if an entity dies in the middle of a doorway, this doorway no longer gets stuck open because of this cleanup function. They also render their reflection probes periodically in this function so that they don’t retain any entity lights (which the reflection probes pick up despite them not being a part of the layer they’re supposed to render; I have no idea if this is a Unity bug or if it’s intended). Each door offsets their routine timer at the start of the game so that they don’t all perform work on the same frame (which would have likely made a noticeable performance impact at a fixed interval). Doors now implement their unlock requisites, at least in terms of objectives – many doors start out locked (yellow, hex pattern; the red, cross pattern doors are permanently locked because they would just lead to empty space), and are unlocked when the player uses the emergency power terminal (the demo objective).
New antialiasing option (can’t believe I forgot that…), with loader placed on cameras + limiter used on UI cameras to prevent unwanted UI issues
Outside the realm of doors, the dev console has had a number of improvements. It retains scrollable history of any console output (useful for the help command or tracking changes with variables). The console now uses the fonts used in the rest of the project. The selected-object indicator is more bold and has outlining to make it more readable with any background. It also uses a different mask (2DRectMask instead of Mask+Image) so that masking works properly at runtime (i.e. you won’t see overflow when there’s scrollable content). There’s a new command as well, showfps, which enables a GUI element outputting FPS and render speed. Some other fixes include the mouse invert option not being implemented in the controls menu and the issue of being able to bind keyboard/mouse buttons to gamepad and visa versa. There is now an antialiasing setting in the settings menu (UI-based cameras have a limiter due to the TAA setting making UI blurry/fuzzy and sometimes illegible when there is motion/change). The Prismatic Hovering Entity now has animation and a proper implementation of vertical unlocking (i.e. it can rotate up and down to face the player if they are standing on something). Lastly, weapon sounds have been edited (now have much more similar volumes), and the player pistol sound is now different.
On that note, I have decided to take a break from working on this game. I made this decision midway through a.05.00 development that a.05.01 would be the last update for a while. UE2’s scope is large, especially for a single developer, and because of that I’m still nowhere near a minimum viable product. This is why I took a break at the end of May/beginning of June to work on a couple of software projects – to have finished projects. I have smaller ideas that I want to work on. I’m not going to shelve this forever (same with UE1, which I have a new project folder for and plenty of still-usable assets from v3.07 as well as some from UE2), but work will be more sparse for the rest of the summer and even more sparse during university work and eventual mandatory internship work. The next update is to be a.06.00, as the things I had planned next largely revolve around making the next station level, which includes a lot of new models. Entity spawning would be much less hand-placed and recurrent with random encounters/etc., in order to add and demonstrate new features like looting and safe-saving zones. Said features some of the last remaining features needed to bring the game out of alpha.