Devlog 4: Solid Progress
Hello and welcome to what is hopefully my last attempt at completing GTA V without taking any damage. I have a max HP of 1 so any damage from any sour- Oops, wrong intro. Let's try that again.
The math to convert between them is quite complex, but worth it. Having multiple corresponding coordinate systems allows for unique problem solving not possible with a more constrained system.
Hello and welcome to the fourth Armadahex Devlog! This past week, which covered Week 5 (3/22 - 3/29), was very eventful, and the results are starting to look like a real game now! This is important, because there's in-class presentations very soon. (EDIT: rescheduled for next week)
To start off with, Juniper continued work in the sound design department with another awesome piece. This victory track will play at the end of every match that a player wins. Maybe this will unintentionally cause subliminal conditioning, rewarding players for winning, causing them to want to win (and hence play) even more. For legal reasons, this is purely theoretical; we're not trying to psychically manipulate anyone.
Armadahex victory track
Going back a few weeks, Zoe completed work on our logo. But with a recent revelation, we discovered emerging AI technology that is capable of transforming existing artwork to new heights. What previously was only possible with a large art studio is now becoming more accessible, enabling smaller groups like ours or even single creators.
We tried using a few different tools, such as Midjourney (which uses stable diffusion models) and Bing Image Generator (which uses OpenAI's DALL-E model). We also experimented with having the AI both create designs from scratch, and with having it be entirely influenced on Zoe's logo.
Interestingly, the ones that were derivative from Zoe's were much more in-line with our artistic vision. Here are some examples.
AI generated prototypes based on Zoe's work
Ultimately, though, we decided upon one design.
Final Armadahex logo
Using an AI generated logo is largely advantageous from a visual perspective, but it does have downsides. It has obvious artifacts and deformations when viewed in a larger format. Also, due to recent laws and court rulings, these designs cannot be copyrighted.
After running into some issues, and some discussion internally with our shader expert Kyle, we updated our Unity version to 2023.1.0. This version is still in beta, but contains crucial bug fixes and advanced features.
Most notably, the new Unity version also brought a new URP version, which introduces the "Render Objects" feature and the "full pass" render feature.
New render features in URP asset
We also were able to enable some other features of URP which take place in so called "Volumes", including bloom and motion blur.
Global volume with camera effects
For the rest of the progress, we implemented the hexagonal grid, with corresponding coordinate logic. Prefacing all this work is the hexagonal grid "bible" on Red Blob Games. Our custom coordinate system is particularly interesting, because it combines three different hex coordinate methods. Specifically:
Index / Spiral Coordinates
LP / Polar Coordinates
Axial / Cube Coordinates
Coordinate conversion code in VSCode
Going rapid-fire now, the coordinate logic was combined with custom hexagonal mesh renderers to create the hexagonal map. The current style is just for testing purposes. The actual map will be slightly larger, and the hexagons will be more subtle.
Hexagonal map in Unity
In order to be able to visually see which ship / hexagon is currently selected or hovered over, we also had to create/modify custom shaders. The ship outline shader is a screen-space shader designed for URP, and can be found on GitHub. We had to modify it slightly to work in our enviroment. The hexagon highlighter is a regular URP Lit shader. It was tough to get the alpha to work on all sides of the mesh, but was ultimately fixed using the new "Render objects" feature.
Ship outline and hexagon shader
Visually, we added moving clouds from the Asset Store. The main challenge here was making sure they worked across such a large area, but still responded and stayed with the camera. We also added a procedural skybox with an included sun. This asset allows the sun to automatically follow the scene lighting. It also contains a bunch of parameters for a custom sky. In the following image, there's also some untextured placeholder terrain. We'll probably texture the terrain with assets from an AI texture website. It's amusing that our initial schedule anticipated us doing this in the second week. How things change...
Clouds and sun in Unity enviroment
Shader parameters
Finally, we also added the submarine model and allowed ships to randomly generate on the map. Interestingly, this involved breaking each ship into "segments" which get assigned to a hexagonal tile. When trying to place a new ship, we first check if any of new segments will be placed in tiles that already contain a segment. If they will be, then we try again at a new position.
Everything so far, combined
Anyways, that's it for this week, folks! This Devlog is already taken a while to write up, and glossed over a lot of smaller things and specific bugs we encountered (and subsequent hours of head scratching). Just look at how many scripts we have already:
Our scripts
And for those confused by the joke in the beginning of this devlog, maybe consider watching this highly informative and educational YouTube video.
I wish you all the best :)
Comments
Post a Comment