Devlog 1: Humble Beginnings

Hello everyone, Jonathan here. This is the first Armadahex Devlog, hopefully the first of many. This week - codenamed "Week 0" - has mainly been lots of project preparation and setting up for the rest of the semester.

We created the Capstone Discord server, which included creating channels and roles for each project, creating a server icon, and getting everyone to join. Through a lot of organization, anyone can find who they need instantly, and either text or call with them.

Armadahex's channel on the Discord server

The server icon was put together quickly in Adobe Photoshop. It consists of pyramids ("capstone") and the letters C and S, to signify "cap" and "stone." The mix of paint and colors in the background is a symbol for the mix of projects we'll be creating this semester.

Capstone server's logo on Discord

In terms of Armadahex specifically, we've finished setting up our GitHub repository and project. This will provide invaluable code backups and source control integration through Git. We'll be using GitHub to keep track of changes to the code and log progress towards specific milestones.

Armadahex's front page on GitHub

We also wrote a simple guide for this project's development, detailing key expectations and how to contribute. Anyone who wishes to help out can read the document and get a general idea of what to do. Link to Google Doc.

On the art side, Zoe drew up some great icon designs. We can use them for desktop icons or for profile pictures on social media platforms. We probably still need a larger logo, but this is a great start.

Some icon prototypes for Armadahex

Additionally, Juniper started work on the game's soundtrack, which blends aspects from the 2012 movie "Battleship" with a unique atmosphere. Sound clip. She's also shown interest in more programming ventures, and has started learning about GitHub. Juniper has already contributed to the Unity project; helping out with menus and UIs.

Sound clip with stylized background video

Kyle Diehm started work on the Unity water shader, a major aspect on the visuals of this game. The water will have to be semi-realistic, ideally with waves, foam, specular highlights, and LOD rendering. It'll also have to be able to interact with the 3d terrain and ship models.

Unity's shaders in the Universal Render Pipelines can be made in a few ways, but commonly through "Shader Graphs." These shaders run on the GPU instead of the CPU for more advanced and resource-intensive applications.
Water shader prototype made by Kyle

Nick Ward provided input into different networking solutions. Ultimately, we've decided to go with Photon Engine's PUN 2, built for Unity development. It's becoming deprecated and is a few years older than the alternatives, but its ease-of-use and simple nature is perfect for our use cases. Battleship, being a turn based game, with many events being fired only occasionally, would not benefit as much from advanced real-time client physics simulations or similar features.

Two Unity GameObjects synced across multiple instances

Photon offers a free cloud hosting service, which will work fine until 20 "currently connected users." After that, we might need a Windows server to self host Photon's software. Again, though, this is limited to 100 CCU. These limits will just be a future problem for now.

Another consideration when choosing Photon was authentication. Authentication is important to monitor who's playing our game and to restrict access for certain individuals / identities.

Photon provides a few easy methods for authentication, through services such as Steam or Facebook. However, they will not work for us. Steam charges $100 to obtain a developer account, and while Facebook might be fine for a mobile game, it's much too awkward for us. This has lead to the need for custom authentication, which we quickly created through a Node.js Express server. All this server does is take HTTPS requests from Photon's servers and provides raw JSON data in response. Depending on the result, Photon's cloud servers either allow or deny a user's connection. 

VSCode terminal showing requests and responses through the simple API

The server can be seen at https://auth.jomity.net. If it's giving a 502 error, that's just because it's not running currently. A more permanent solution will be configured soon.

Comments