Awaken Sentinel

———————————————DISCONTINUED———————————————

Keep in mind I’m writing this a year after I stopped making this game. I didn’t bother with portfolio or whatsoever back then.

Awaken Sentinel is the first game that I started making seriously on Unity game engine. It’s a multiplier FPS with open-world aspects. I can’t provide any further information to the game, nor the story, as the whole project started just because I wanted to learn something and I didn’t plan on publishing at all/have the finished product. I worked on this game a bit more than a year. I was interested in FPS games back then, so I wanted to create my own FPS game. That’s literally how it started. I just wanted to make an FPS game. It took so long for me to make such small progress because I didn’t plan anything and I kept changing throughout the development. I changed the concept/theme multiple times. I was also very new to the whole game development. I didn’t know where to start/how to start/how to make a successful game. I first started making this game alone by myself, but later when I realized I needed some help I recruited several developers to work on the game with me. I especially needed assistance regarding modeling, animations and sound designs as I had no previous experiences with them. As I already mentioned, I was a newbie in game development when I started making this game. I had ambitious goals (this is something that every starter indie game developers have I believe. They try to replicate their favorite game.) on the game, Awaken Sentinel. Something I learned throughout this game development, which is also something that I will never forget is, never start with big ambitious goals when you’re just starting out. I realized this after attempting to create big games 2 - 3 times. It’s highly probable that you will lose your motivation quite shortly after. Start with something small, put your hands on the end product of yours. This will get you more motivation to create bigger projects and complete them. However, as I mentioned, Awaken Sentinel was like the first serious game that I was developing. I didn’t want to let go after developing for like a couple of months.

Awaken Sentinel is formally known as Color Wars. The original idea was that different colored people would fight as a team together, but I ended up discarding this whole concept, as it could be offensive in a certain way.

WARNING: Before you continue reading, please note that I was new to the whole game development industry. I didn’t know/care much about the copyright and whole licensing. Most of the assets (animations, models, but not scripts/code) that I used on this game are ripped off from another game or downloaded without giving proper credit. I didn’t bother that much at that point as I wanted to replace those models with the models that were created by my team back then.

I only started taking a screenshot after around half a year later. Early screenshots are not available.

FPS mechanics were quite easy for me to understand and implement within Unity. Not only there’s a lot of features and functions I could use directly, but there were also a lot of Unity tutorials / well-written documentation I could easily follow. Using those two resources, I managed to create a basic FPS shooter without any problem. Although, Unity was still one of the “newer” engines back then. FPS tutorials were not that in-depth, to say the least. Tutorials only covered the basics. Any more in-depth complicated functions had to be made purely by myself by looking at the documentation and trying it out.

Because this was FPS and I was super excited about the whole multiplayer thing back then, I wanted to integrate the multiplayer system to my game. I did make a successful functional multiplayer functionality using Photon networking (basically, an awesome multiplayer networking solution for different game engines, particularly Unity), but I quickly faced one problem. Resources. Multiplayer means, that there needs to be a host computer that hosts the whole multiplayer server so the clients can communicate with each other through the host. This means, that I would need to have the server of some sort running 24/7. No one wants to sacrifice their computer and host my game’s server 24/7. This means I had to buy a server (server is not free…). It’s not a one-time purchase either. I had to pay around 10 dollars per month (this was the cheapest plan). But here’s the thing: is it worth it for me to spend 10 dollars per month on a server for a game that no one knows about and it’s not even released? I ended up not buying a server at all. This also contributed to the end of this game development.

(The character is t-posing because the animation synchronization was still in progress. I just noticed the character looks small…)

I also made a login system using “Database Control (Free)” which I downloaded through Unity’s asset store. It was a free solution for me to create a login database system. This, however, does not have any encryption to the database whatsoever, meaning that there’s a high risk of it getting hacked/leaked to the public. I wasn’t concerned about the whole security part, though. I eventually wanted to upgrade it to a more safer solution once I earn some money through the game I published.

After developing for some while, I wanted to work on the graphical side of the game. At the very beginning, without any post-processing and proper lighting setup, this is how the game looked like:

After proper lighting configuration and post-processing, this is how it looked:

I know there are still a lot of major issues with the lighting and post-processing configs. Especially the vignette that’s so extreme. Anti-aliasing on the text “Fall Damage” as well as on the trees can be improved significantly. NOTE: Following screenshots and video is taken BEFORE the graphics update.

One feature I made that I was proud of was real-time scope. In case you don’t know what this is, here’s how it looks like:

Unlike traditional UI overlay scope, this real-time scope must be done by having two separate cameras, one drawing the scope (lower FOV) while the other drawing the regular view. Because there have to be two cameras rendering the scene, the performance cost was a bit extreme. I also added some post-processing effects to make the effect look more dramatic.

Here’s a youtube video I made on NANO Engine channel (my old channel) to demonstrate the game better. There has been a lot of updates after the update, though (things like graphics update, launcher update, which I’ll discuss later.). P

(Yes the game was still called project color wars.)

As you might notice in the video, UI looks very odd and doesn’t fit the game. This is something that I started taking more seriously after discontinuing this game. I also featured recoil in the showcase video. However, because I never tried making a recoil system before, the recoil system that I used for this game was hard-coded. Meaning it wasn’t dynamic and written in a clean code at all. It might’ve looked good on the outside, but if I want to make any changes/minor adjustments to the recoil pattern, I would have to re-write the entire code again.

Here are some more gameplay screenshots:

Other than that, I also made a launcher for this game. Game launcher checks for the latest update and updates the game if a newer version is available. It also prevented players to play with the older version. This was required to fix critical exploits that ruin the multiplayer experience. Game launcher checks for the latest update by accessing the publicly available text document which stores the latest version data. This text document is stored on a cloud hosting service, in my case, I used one drive. I originally wanted to go with google drive, but google drive didn’t work out as I couldn’t get the direct link to the file. The launcher then compares the fetched version code with the version code of the game. If they’re different in any way, it updates the game by fetching the newest version of the game, which is also hosted on a publicly available cloud storage service. Although this might sound like an optimal solution, there’s a problem. It is technically possible to decompile the game and manually change the version code of the game to match the latest version code. This allows the user to avoid the update.