3. FPS GAME - UI AIM INDICATOR
Who you aiming that at? 🔫
To shoot an enemy, the enemy must be in the player's weapon 'collider'. Each weapon changes the collider's width, length, and height. Once inside, the player can shoot the enemy (basically) (there is also hit chances to consider as well as checking if the enemy is behind a wall). Without showing the player if they can shoot and hit an enemy, the player would be confused or not know how far you need to be to attack it. Of course, in the player's mind, if you’re using a Spear instead of your Fists as a weapon, the Spear's reach is greater than the player's Fists. If you’re using a long-ranged weapon, the end point of the weapon collider would be a guess by the player and having the player potentially waste ammo by trying to shoot something they cannot hit is a situation best avoided.
Currently the UI Aim Indicator (TM - *Ding sound*), Shows objects that can be hit by the player's attack. Right now, that includes enemies, as well as barrels (💥explosive and inexplosive!🛢️). In the future this might include other interactable objects such as doors or items, as well as an objective marker.
When an enemy has entered the (invisible) weapon collider, an icon class is created and added to a list (of Icons). The Icon class contains; the RectTransform of an icon marker, the RawImage component of that said marker, a reference to the enemy that entered the weapon's collider, as well as the enemy’s position. It then calculates the direction and angle to the enemy and shows the icon on the Aim Indicator UI bar relative to the player's position to the enemy.
If the enemy exits the weapon collider, the enemy is removed from the icon list (icon.enemyObject = null) and the icon disappears. There is also a check to see if the player can ‘spot’ the enemy inside the collider. This is done with a Raycast from the player to each enemy in the collider. If the enemy is behind a wall but also inside the collider, the enemy icon is disabled. But when the Raycast finds the enemy, the icon is then enabled again. This is done with another List<> that contains all the objects that are seen.
Icon classes only get created if all the icon classes in the list are already being used by an enemy. So, if an already created icon class is not following an enemy and an enemy enters the weapon collider, instead of making a new Icon class, it uses the unused one. If all Icons are following enemies, then it creates a new Icon Class to add another marker to the UI Aim Indicator. (A lot is going on here! 🥵)
Show Icon Function
There's also a check to see if the player is looking at a barrel or an enemy. This changes the RawImage sprite of each marker to either a picture of a barrel or a red diamond indicator.
But wait, that's not all! 👨💼💰💹 Each weapon has a specific number of enemies that it can aim at a given time. Fists, Spear, Spine, and Bible weapons can only aim at one enemy at a time. They all attack the nearest object to the player. So, the UI Element removes all the other icons on the Aim Indicator if they are in the icon list. The only icon marker remaining is following the object that is nearest to the player. The Shotgun aims at all enemies in the collider that the player can see, and the Machine Gun aims at 4 objects at most, removing other icons of enemies that cannot be hit. (a whole lot going on in the script! - hold on... I need a drink... 🍹... ahhh...)
Ok... so where was I... Oh, right - The icons on the UI bar also take into consideration the distance between the player and the object the icon is following. The further away from the player the object in the world is, the smaller the icon is on the screen (the closer the object, the larger the UI icon is). This helps somewhat to recognize what the player is aiming at. 🎯
2. FPS GAME - WEAPONS
The player's arsenal.
The idea was for the player to have 9 weapons in total, one for each number on the keyboard (except for the 0 key 🙁). But then, thinking about it, it felt unnecessary and bloated and would be harder to make them all useful without the next weapon making the previous obsolete. So I cut it down to 7, and then 6. I want the player to use all weapons in the game, not just one or two, where they just keep switching to their favourites. Helping with that is the amount of max ammo the guns are going to have as well as the amount of ammo pickups in the world. Every weapon in the game can also be upgraded/leveled up. So only using one weapon in the game can really make the game more difficult for the player in later levels.
Each weapon starts at level 1 and their max level is level 5 (TBD - might shorten it to 3). Haven't decided what makes your gun level up yet. Initial thinking was that it just counts the enemies you've killed with each gun, and based on that it will level up at a certain amount of kills. The weapon's damage, fire rate, and enemy hit chance increase with each level.
I've created tables in Microsoft Excel for each weapon that stores their level values that is read by a script in the unity editor (and in-game). This makes it much easier for me to edit and tweak individual values at anytime.
Each weapon also carries a set of values that modify a Box Collider that is used to check if the player's attack has hit an enemy. So if an enemy is inside the box collider and nothing is blocking the player from attacking the enemy, then the player's attack hits the enemy!
Some weapons may use this box collider to aim at enemies. For instance, the player shoot a fireball, which is a projectile, if the enemy is in the collider, then the projectiles direction will be where the enemy is in the world, and move towards that.
Weapon sprites were all made in Photoshop, with the help of a Wacom Pen & Tablet. Took photos of myself (my hands 👐) holding placeholder objects as reference. The spear was a roll of Christmas wrapping paper! 🎅🎁
When an enemy walks into the Player Attack Box Collider, the enemy is added to a list that keeps track of every enemy in that collider. So if the player shoots the shotgun, it gets all enemies in the collider and damages all of them. The shotgun's damage is also higher when the enemy is closer than half of the Player Attack Collider size (closer to player), otherwise its the damage output is low. If you use the Spear, it only damages the enemy that is closest to the player (only one enemy at a time).
I still need to code the weapon hit/miss chance when attacking. So far, if the enemy is in the attack box collider, and the player attacks, it hits the enemy 100% of the time. Might be interesting if there's a chance you can miss as well.
The weapon attacks are all controlled by one script (a script called WeaponAttack.cs). So far, I have created 3 of the weapons. Fists, Spear, and Shotgun (there was a Dagger, but it was replace by the Spear). The Fists and Spear use the same bit of code that's under the function called MeleeAttack(). It attacks one enemy at a time. The Spear has a greater reach. The Shotgun uses a function called SpreadShot() in the same class.
OBJECT POOLER - UNITY C#
Instead of repeatedly creating and destroying gameobjects at runtime (bullets for example), you can create a set amount at the start of runtime and call them in the scene when they are needed. When you don't need them, you can then set them inactive in the scene and call on them when needed again. Object Pooling is a great way to optimize your project and lighten your games garbage collection. (Full Object Pooler Script at the end of blog post.)
There are more than a few ways you can implement this. For my current project I decided to have a GameObject called _ObjectPooler and added one script that takes care of all the pooled objects in the scene. This can be altered so you can create a 'Pool Item' class in any other script and call them separately if that's more your style, but for me, at least for the moment, it's simpler to have all the gameobjects being pooled in one location, and calling them in from one location.
I created a script called 'ObjectPooler' and above the class I created a new class called PoolItem.
Next I made the ObjectPooler class a singleton, so it can be easily called from other scripts. (Only one instance of the script is allowed in the game scene).
Just below the 'public static ObjectPooler instance;' line, I created a list from the class PoolItem.
Next, we add the code that will pool our objects. Write the following code after the Start() function.
This will now pool objects into your scene when you play your scene. But we still need to call them to actually use them. Right below the code we just wrote we add a function that will call a pooled gameobject when we want to use it.
This piece of code, when called, will go through each pooled object type we want to call and if one in the list is not active in the scene, then it will return that value/gameobject. Now we have the gameobject we want and can set it active.
In the current project I'm working on, I pooled some 'blood' gameobjects, which are just animated sprite gameobjects. So when I hit an enemy I will grab a blood gameobject from the pool, change its position and set it to active.
When I don't need to show the blood effect anymore, I will call setActive(false) to the blood gameobject, so it can be called again at a later time when needed.
Full ObjectPooler Script
To grab a pooled object (separate script)
When your finished with the object for the moment.
1. FPS GAME - ENEMY BEHAVIOUR
Creating an 'old-school' FPS game. At this stage, I'm focusing on the game's enemies.
Enemies in game have multiple 'behaviour' states and animations that go with each. Behaviour states are what the enemy does at one given time. The main States are Spawn, See, Attack, Pain, and Death.
Spawn: Enemy spawns in (gameobject is enabled). Enemy waits 2 secs, and then proceeds to do its first task.
See: The enemy has detected the player and will proceed to a position where it can attack the player.
Attack: Is in attack position, starts to attack the player. (Attack!)
Pain: Has been hit and is knocked back (stunned).
Death: Health <= 0. The enemy has been defeated.
There are plans to have more behaviour states, like, for example, being Frozen or on Fire. Currently, I'm using a switch statement to handle all the states. The plan is to have around 7 enemies in the game. If things get out of hand, and code becomes messy, I'll have to rethink and change this. But for now, this will do.
The 'brainhead' enemy is a simple melee attacking enemy (no ranged attacks).
The brainhead enemy starts off in the Spawn State, where it will calculate the distance between the player and itself. If the player is less than 10 units away, the enemy 'sees' the player.
It then sets its destination to be the player (NavMeshAgent). A CheckSphere bool is then calculated to see if it is touching the player. If it is, then start to attack the player. If not, and the player is over 50 units away from the enemy, the enemy returns to its Spawn State (stops following player).
Brainhead has two attacks (they deal the same amount of damage and is chosen in its OnEnable method), punches and a headbutt. The enemy will start attacking the player. If the player exits the enemy's CheckSphere, it will finish its attack and return to its Spawn State, which in turn, will quickly change to its See State (because player's distance is less than 10 units away from the enemy).
In between story missions in The Amazing Spider-Man 2, the game gives the player various side missions to complete. One type is called a Heroic Event. Heroic events include activities such as rescuing civilians and stopping crimes that pop up around the player’s position. There are only a handful of activities you can do, and you will be constantly repeating them thanks to the implementation of the ‘Hero or Menace System’.
As you progress through the story, far more crimes than you can ever stop start appearing in the game world and you will lose reputation whether you intended to or not. The Hero/Menace system directs the player to do good in the game but nudges them to doing the same tasks repeatedly.
The goal of the system redesign is to make it less of a nuisance to the player. The heroic meter ‘fill up’ will stay but will be slowed down when losing heroic points. Gaining points will be easier, just so we limit the number of times the player does these repetitive tasks while still keeping them in game. It will be harder to change people’s views, just like it is for Spider-Man in his comic books and movies.
New events will be added. A kid could let go of a balloon and start to cry, Spider-Man can retrieve and return it to the kid. A mugger might steal a purse. You will gain more heroic points if you successfully save people from a burning building than say, a kid’s balloon.
The player does not need an unskippable cutscene animation to a burning building activity every single time when the player already made the conscious decision to get there. I would also remove the news report pop-ups. The system already responds to your choices, we do not need another confirmation.
In the game’s story, Kingpin gives the task force Oscorp technology. When you defeat Kingpin, that defeat should reflect in the game world, and the futuristic tech used by the force should now be removed. This makes the system directly correlate to the story and makes the player feel like the world is responding to their actions.
These changes will not constantly force the player to complete repetitive side missions, but when doing so, the player does not have to sit through pointless cutscenes. The annoyance of constantly being shot at by the task force will be limited, you will be able to web swing more freely, and the addition of environmental story telling would let the player know how New Yorkers currently view The Amazing Spider-Man.
VOID BASTARDS - CHARACTER TRAIT SYSTEM
Void Bastards is a science-fiction first-person shooter and roguelike. The player (a prisoner), needs to survive and ultimately be set free by traveling from ship to ship, gathering and managing resources, as well as crafting weapons and upgrades.
You can remove, replace or obtain additional traits using a gene therapy machine. This machine is always in the ‘Gene’ room, so the player knows every time a ship has one, there will be an option to alter his/her current traits.
The trait system includes ‘negative’ as well as ‘positive’ traits and their effects lend a hand to the games dark humour and can affect moment to moment gameplay. The player could obtain one that makes you run silently, or you could begin with a trait called ‘Smoker’, where your character would give out a random cough, which in turn can give your position away to enemies. This system varies gameplay by forcing the player to strategize their decisions depending on their active traits.
The traits system as well as its randomisation helped facilitate the success of the game. I believe its goal was to flesh out gameplay and vary it to a degree and it does exactly that. Making the player strategize their moves in situations that arise. This system in turn, also gives more depth and personality to the voiceless characters of the game. Void Bastards focuses on creative problem solving, strategy and player skill improvement. The character trait system lends a hand to those areas and improves the quality of the experience.
2. You Got the Power...
More work on game mechanics. ⚙️
Continued work for the game by adding an 'enemy' gameobject. The player can drop on an enemy's head to kill them and gain a score point for your overall score. Plan is to have static and moving enemies in game, but for now the enemy does not move.
Also added coins that the player can collect. These will be useful to buy (in-game) new skins and/or playable characters, as well as unlock other levels if the score requirement is not achieved.
Current 'Coin' Script (moves towards player if close)
Obstacles/walls are now prefabs and a spawner object is attached to the main camera that instantiates obstacle prefabs at a set amount of seconds. This will be improved upon in the future, by creating an 'object pooler' script that instantiates a set amount of obstacles in the scene before game start and then by enabling and disabling them I won't have to keep creating and destroying objects.
1. You Got the Touch...
Started to make a small game (very few mechanics ⚙️).
Wanted to create a game that included in-game ads. Never actually used them in my (released) games. I'm currently working on a larger game project that will include ads (well, that's the plan as of right now), but I am currently focusing on creating 3D models and environments for that project, so I decided to also create a 'small' game, include ads (while trying not to bombard the player with 'em), and release the game on Android and iOS 📱.
THE HOUSE ALWAYS WINS VI
Worked on the Lucky 38 scene (look, lighting, feeeelll).
After modelling and texturing the Lucky 38 building, I went straight into improving the look of the scene. I found some old Unity skybox images (from Unity 5's files) and chose one from there. Created a 6-sided skybox and imported them in. Thought the scene needed more colour, specifically the lighting, and trying to get as close to as how the in-game environment looked (in Fallout: New Vegas). I decided to not only mess around with light settings, but also use Unity's Post Processing Stack (v2) to help me achieve the look I was going for (more orange/tinge-desert/wasteland look 🏜️).
I didn't go crazy with the post processing effects and add every single option available to it (like I have in the past 😳). I added only 3 effects. I increased the intensity of Ambient Occlusion (a small fraction), added a Bloom effect and Color of that effect (cream color), and also added Color Grading. There I added a Color Filter (cream color), increased the Saturation (by 5) and increased the Temperature (by 5) to look 'warmer'. (The word 'color/colour' is the theme of this paragraph! 🌈)
I also wanted to create a 'mock up' (⬅️ if that's even the word for it), which was to create an image that would depict how the model would look in game with UI (HUD). which was basically just going on Photoshop adding the screenshot and slapping the Fallout: New Vegas HUD on top of it.
Fun Fact (well... not really fun, but anyway...): I made the image size of the 'mock up' 1280x720 because that's the first resolution I played the game (New Vegas) in back in 2010. 🤠
THE HOUSE ALWAYS WINS V
Finished texturing the Lucky 38 model. (Also, Happy Birthday to Fallout: New Vegas! 10 years old! 🎉)
First off, ten years ago I bought a game that blew my mind (🤯) and I've never been the same since (plz help 😟). That game was: Fallout: New Vegas. Who can forget? A Fallout game that stood up to the prestige and quality of the first Fallout game, even the second, and/or even Fallout 3. 10 years on and I still remember getting shot by Benny for a platinum chip that I was holding, walking out of Doc Mitchell's house and into the world of the Mojave Wasteland (Goodsprings first), dodging bombs trying to get to Nellis Air Force Base, and even being creeped out by the White Glove Society and their dark secrets in the Ultra-Luxe casino and hotel 🍴. Anyways...
Texturing the model took some time. It was on the job learning with Substance Painter. This is the second time using it for texturing/painting an object that I modelled and I did an OK job of it if I do say so myself (previously used Quixel Suite to texture models). Not the best work, need to improve. Keep moving forward, as they say (who's 'they' you ask? got no clue. But nonetheless, getting better and improving my skills is the point I'm trying to make 😵).
The model was split into sections for the texturing; the top piece was done separately from the bottom, for example. Would have done things differently looking back. Which would have been having the UV's for different parts of the model be separate. So, the railing could've had its own UVs instead of being clumped with the bottom floor UVs. It would have created more space for other parts of the model and the texture quality would've been improved slightly.
PC struggled a bit when loading or even sometimes saving files in Substance Painter. With all the layers that I added to each section of the model, it nearly became too much. Hiding some layers that I wasn't working on at the time did help a bit though.
To get the textures as close as possible to the ones in the actual game. I kept switching back and forth from Substance Painter to reference pictures of the model used in game. Most references were screenshots I took from the G.E.C.K. editor that comes with Fallout: New Vegas on PC. Photoshop and image color pallet sites helped me a bit with the colors, but even then, I had to sometimes go with my eye and my gut still (, and my heart 💘).
Next up is either creating a skybox or using a pre-made one and working on the lighting of the scene. Something that resembles the orange/yellow tinge lighting that was used in game ☀️. ♥️♠️♦️♣️
THE HOUSE ALWAYS WINS IV
The initial ambient occlusion & normal maps are done.
Instead of having every 3D objects' UVs (of the Lucky 38 building) fit into one space, I divided them up into pieces. The top 'hat' of the building has its own, the middle, bottom, and the floor (also the sign has its own as well). I started with fixing all the normal maps of each 3D object that needed fixing in Photoshop, and then went on to editing all the AO (ambient occlusion) maps afterwards. This took some time, and when I say 'some', I mean a lot/tons/heaps (/a bag full?) of time.
In the game Fallout: New Vegas, the 3D asset in-game is a bit different from one in the intro cutscene of the game, as well as looking at the building from far away as the player in game. In regard to the lighting, the cutscenes and at night, the building has lights that are attached to multiple places of the building. In the game's G.E.C.K. toolkit, the lights are not attached to the asset of the building.
Right now, my plan is to work on the textures of the building, and then start work on the lighting afterwards. I'm thinking of choosing the lighting of either the in-game day or in-game night lighting of the asset. Time to stay indoors, stay away from everybody, and begin painting textures onto the asset. 🎨
Fallout: New Vegas 2010, Obsidian Entertainment, Bethesda, intro cutscene.
Fallout: New Vegas 2010, Obsidian Entertainment, Bethesda, Lucky 38, Fallout Wiki, viewed 25 March 2020, <https://fallout.fandom.com/wiki/Lucky_38>.
THE HOUSE ALWAYS WINS III
One of the things that I wanted to get right with this model (The Lucky 38 Hotel & Casino seen in Fallout: New Vegas) was the small detail on the object that 'holds up' the sign. I've had some problems with Unity in the past when wanting pieces of an object to be somewhat transparent or completely invisible, but in this case, surprisingly, it was very simple 😵.
Instead of modelling all the small details, multi-cutting, adding more polygons and waste precious computing memory and time ⏱️, I decided to just create a flat mesh, and make an albedo/texture map that takes into account its alpha channel. The 'alpha channel' is a colour component that represents the degree of transparency or opacity of a colour. And in this case, will be used to make part of an objects mesh completely invisible to the naked eye (and... I guess... a clothed eye as well 👕).
After creating the UV map for the object, I used a snapshot of it in Photoshop (the Adobe kind) and began to create the shape I intended the viewer to see. After shaping it out (as seen in the pic below (the black part)). I then selected all the white parts in between and in the alpha channel, I 'painted' them black. I also painted the dots around the sides black as well (seen as pink dots in the pic below).
Why black you ask? Well son, in the alpha channel black means completely transparent, while white means it will not be transparent 🙃. And anywhere in between those two full colours, will create a degree of transparency. In the picture below, I made the Red Channel and Alpha Channel visible, while the others hidden. The red-ish pink is the alpha channel shining through, and those parts will be transparent.
After that, I hid the shape I created (once again, the black part, in the pic above). Now the albedo/texture map is now completely white, but the alpha channel is still there (in the background, waiting, watching 🕵️). I saved the file as a .psd Photoshop file (I've had previous trouble with .png files and Unity when it comes to transparency and alphas. But maybe I'll try it out, see if it works), I then imported the file into the Unity game engine, dragged it onto a material, and changed the rendering mode on the material from Opaque to Cutout. Now the alpha channel is taken into account and voilà! Opacity levels in effect.
P.S. The 3D model in these pictures were the colour red to make the small details more visible.
THE HOUSE ALWAYS WINS II
Finally finished modelling this bad boi ☝; The Lucky 38 Hotel and Casino (at least the first version of it). Also be prepared to see a lot of grayscale pictures of a 3D model 😞.
Well, maybe not finished yet... I might create simple shapes in Maya for the light sources (of the lights on the building), Making those created models emit light in the Unity Game Engine. But that's way down the line. All other pieces are modelled.
Instead of modelling the whole building, I decided to just create pieces of it. Being a 'round' building and all, I can just centre the pivot of each object to the centre of the building, duplicate and then rotate it to fit in the empty spaces. This helps cut down the time of the UV unwrapping/mapping, and also leaves more room on the UV map for more detail to put on the texture maps.
'Large' pieces of the Lucky 38 Building
For the Lucky 38 sign, I found two fonts (on dafonts.com. Links to fonts at bottom of blog post) that resembled the fonts used in the actual model in-game (Fallout: New Vegas). So, I downloaded 'em and installed 'em! And Jumped on the old Abode Illustrator train (and rode that shit till the sun went down! ... Too far? ...probably... anyways,). I just used the default Font tool and wrote 'Lucky' and '38'. Saved them as Illustrator files (.ai) and then went on the old Maya train (and rode that shit til--... I'll stop...).
Maya lets you import Adobe Illustrator files and turn them into 3D objects made of polygons. After spending way too much time cleaning and decreasing the polygons on each text model, I used a Non-linear deform called Bend on the 'Lucky' model. The bend deformer does what it sounds like it does; bends shit. Bent it just enough to sit on the 'backboard' of the sign (︵).
Something I got to look into is having/showing two sided faces, so that it can be looked at from the front and back. As you can see in the images below, I'm going to try to make the 'side-middle' part of the sign just be faces and make the gaps (as seen in the in-game model) transparent. It's the double-sided face problem that needs solving (so it can be seen from both front and back, not invisible when looking at the back of it. I read somewhere on the interwebs that Maya has an option to make faces double-sided, but I don't know if that will transfer over when importing to Unity. Unity might have an option similar to this, or I might need to research into creating a shader that inverts and shows the model's faces as double sided. If push comes to shove, I might just duplicate and invert the model, or even extrude out the model to make it 3D. Lots of testing to be done either way!
The 'low poly' model (if you can even call it that at this point) is made up of just above 10,000 polygons! (Je - fucken - sus) Which is the model I will be primarily using. The high poly model is over 42,000 polys, which will be used for the initial detail maps (ao, normal). I also plan to create LOD (Level of Detail) models. So, when the camera is zoomed out and the building is in the distance, the model in the scene will switch with a lower poly model of the low poly model (if that makes sense to you), reducing the poly count.
Initially I thought about fitting the UVs of all the objects on one map and making that map size at least 4096 x 4096 (4k), but now I'm leaning towards separating them out, to make sure every object has enough space and detail (they rightfully deserve!). Well, ♫Heigh-ho, heigh-ho, it's UV mapping time, here I go! ♫ 👉
P.S. To make up for all the colourless photos of the model here's a picture of Kermit the Frog on a log, singing The Rainbow Connection (rainbow not shown). ⇩⇩⇩
'Airstream' by Nick's Fonts, <https://www.dafont.com/airstream.font?text=Lucky&psize=l>.
'Fontdinerdotcom Huggable' by Font Diner, <https://www.dafont.com/fontdinerdotcom-huggable.font?psize=l&text=38>.
G.E.C.K. screenshots taken from the Fallout New Vegas G.E.C.K. toolkit
The Muppet Movie 1979, ITC Entertainment / Henson Associates, The Rainbow Connection, The Disney Wiki, viewed 29 December 2019, <https://disney.fandom.com/wiki/The_Rainbow_Connection>.
THE HOUSE ALWAYS WINS I
Couple of months back I started modelling the Lucky 38 building seen in the game Fallout: New Vegas. But I put it on hold to complete a 3D asset pack I was working on (Diner Prop Pack - available now!). As of the start of November I've picked this project up again and there's no turning back baby!
I started off this project by looking at some reference images on the old Google machine. Although a good start, most pictures were screenshots of the building from a distance and I needed to get some references that showed the minor details (I needed to get in close 🔎). Images from the world wide web were a good start for blocking out the model, but it was time to get down to the nitty-gritty.
I remembered that the PC version of Fallout: New Vegas included the G.E.C.K. (Garden of Eden Creation Kit) toolkit, which allows you to edit and create any data for use with Fallout: New Vegas. - on a bit of a tangent, I remember creating a new skin/material (texture map) for the 10mm Pistol in Fallout 3 with G.E.C.K., and I also changed the damage of the gun to something like 999999. Which was fun for a while, just running around with my custom decked out 10mm Pistol. Those were the days 😢 - So I opened up GOG galaxy on my PC and downloaded my copy of New Vegas.
Before continuing with this project, I had to boot up New Vegas just for old times' sake. Took me straight back to 2010 (simpler times back then...). Anyway, after helping the town of Goodsprings get rid of the attacking Powder Gangers (⟵ game reference), I quit the game and opened up G.E.C.K..
There I found a better reference to the Lucky 38 building... It was the Lucky 38 building itself! I took a ton of screenshots from all different angles, but being an in-game asset, some of the pieces were cut off/hidden/deleted. Pieces that were never going to be seen in-game by the player (some of the top section of the building for example).
A few screenshots of the Lucky 38 Building asset in G.E.C.K.
As mentioned earlier, some parts of the asset were missing (most of the roof pieces), and the top of the building differed from the top of the building from a level in the actual game (example in pics below). So, ended up just looking at the two assets and tried to put them together where they made sense.
The rest of the model was created just by looking at the reference images, and then modelling it in Maya, while listening to Spotify Daily Mixes and Discover Weekly playlists (which by the way, seemed like I was listening to the same songs over and over, So I switched to a Jukebox Jives playlist to switch things up a bit and then I proceeded to do The Twist 🕺.)
Current state of my model
Currently I'm still modelling pieces of the model (still got to do the front gate and stairs, as well as the smaller details, like the railing near observation points and whatnot.), then try to cut down the polygon count as much as possible for the Low Poly model as well as correct the UVs for texturing.
G.E.C.K. screenshots taken from the Fallout New Vegas G.E.C.K. toolkit
DINER PROPS: V - WE'RE LIVE PAL
The 'released' blog post (this is gonna be a short one folks)
The Diner Prop Pack submission to the Unity Asset Store was successful (So there's that). Initially it was declined because I didn't format the text description correctly on the store page and I also needed to add the poly count of each object in the description as well. But after doing that, I resubmitted, and a couple of days later it was accepted.
Links to Diner Prop Pack:
- Unity Asset Store
DINER PROPS: IV - SUBMISSION CITY
Version 1.0 done.
This month I finished modelling the assets needed for the initial release of the asset pack. This 'pack' in Unity contains 67 prefabs, and 3 example scenes. Initially there were going to be more objects included, but I crossed some out due to just wanting to release as soon as possible. I might update the Diner Prop Pack and add some more objects in the future, but for now, this is it (↑).
After finishing and resizing the models, I created three example scenes, made sure every prefab had a collider attached to it, and checked if there were any spelling mistakes in the file names. I then submitted the asset pack to Unity to hopefully get accepted and be sold on the Unity Asset Store. The submission included setting up the basic information of the store page (name, description), and also adding artwork to the page as well.
There could be a long wait before they get to testing my submitted work. The Unity Asset Store Publisher employees (😎) need to test what versions of Unity it will work on, check if there are overall errors in importing the pack to a Unity project and also the fact that it said on the web page that it might take some time due to the high demand in submissions. So, what I might do is upload the pack onto my itch.io page as well, so the project isn't just sitting on my computer collecting (digital) dust.
I scribbled out a checklist a few months back, which you can see just above (also looks totally destroyed 💔), which helped me continue working on this project. And, as you can see the next picture contains the objects that I didn't get to model (yet! (maybe. we'll see)). (Also wasn't trying to win a handwriting contest so get off my back OK!) ✍
DINER PROPS: PART III - STILL GOING
Yep. Still working on this diner asset pack.
This past month started great. I modelled and textured a few models in about a week, which included modelling; stools, a sugar dispenser, coffee machine, coffee jug, popcorn machine, and a food menu sign (WOW! Some exciting stuff! 🔪). But then I took a week off from working on it. I just needed a break.
After recharging my batteries, I resumed working on the project (No Rest for the Living). I modelled a couple of more objects, fixed a few errors in some of the normal and occlusion maps, and also resized some of the assets as well.
I also created some prefab variants for objects (pics above ↑), which saved me some time, having not to model any new pieces. I just changed the appearance by adding or removing pieces from each model and/or creating different textures (albedo maps).
To get this project finished, I crossed a few items off that I won't be modelling and aren't essential to this 'pack', well at least for 'version 1.0'. I just need to finish this project as fast as possible at this point. I've only got a few more objects to model, and then I'll start getting the package ready to upload onto the interwebs (😎).
There are so many projects that I have started, never finished, and moved on to working on another. But for this project, I painted myself into a corner in the best possible way. I've created all these models (↑), it would be stupid to stop now, scrap everything and start a new project. So, the adventure continues...
DINER PROPS: EPISODE II - CTRL + D
Just been modelling assets this whole month. That's it. End of blog post. Goodbye. Take it easy. Au revoir. Auf Wiedersehen. (I joke 😊)
After modelling and texturing a few more props, I decided to start planning out a diner scene with the models already made. The above picture (⇧) is the initial layout of the scene, and will probably be changed in the future, to comply to an example of a level that could be in a game. Making it more focused and thinking about what the goal is for the player in that said space. (Also, the lighting of the scene has not been worked on, so don't judge the lights Sonny Jim!)
Off the bat, the scene has helped with what the scale of each object should be. I tried scaling them as close as possible in Maya, but when importing into Unity, some just needed a little adjusting. I'm planning to put some more time into resizing some props when all the models are finished and imported into Unity, and then freezing each of the adjusted objects transform components. Even though I'm trying to scale them to a reasonable size when working on them as I go.
During modelling in Maya, I figured out for this pack of assets, it helps to model the low poly object first and then the high poly afterwards. This helps me keep the poly count to a minimum. For some models, I started creating the high poly first and then by subtracting edges, faces, and vertices, I ended up with the low poly. But doing so, the assets still ended up having a lot more polygons than intended with the final low poly model. I also need to keep in mind that some of the smaller objects don't need to have little details extruded out in its low poly model. The object will be looked at from a distance and not inspected from a centimetre away.
Also, a tip: When creating assets, YouTube and/or TuneIn radio (or even Spotify) are your best friends. You start listening to a 60s ,70s or 80s radio station on TuneIn or a Top 100 songs playlist on YouTube... mate. In the words of the band Starship... "Nothing's Gonna Stop Us Now".
3D ASSET CREATION - DINER PROPS
A couple of days ago, I decided to create some 3D art assets. They will be put into a unity package, and ultimately upload it onto the Unity Asset Store when finished.
I decided to go with a diner theme for these 3D models. Before a came to that conclusion, I looked up diner assets on the Unity Asset Store by just typing in the word 'diner'. About 11 packages popped up. All have a price tag to them, the lowest is $4.99 while the highest is at $55. Right now, I'm trying to decide if I should make this package free (which will make it the only package free when 'diner' is typed in the search bar) or sell it at the lowest price possible on the Asset Store (which is $4.99). I think I'll have more of a final answer when I've modelled and textured most of the assets, and see how the package looks as a whole.
I will also upload the package onto my itch.io page as well if its legally allowed to be uploaded there as well as on Unity's store. Unity's store guidelines might state that the packages uploaded to their store have to be exclusive to that store.
I'm also trying to use the least polygons on each object without losing the shape of that said object. The texture maps (albedo) are just plain colours to create a that simplistic look, and all map sizes are at 512 x 512. The albedo maps can be edited so that the colours of the objects can be changed (you might not like the colour red!).
As of right now I've modelled 13 assets, and my goal is to model at least one every day. I have a total of 69 models that are planned to be created, but that number could change depending on what I think is missing from the package or what models aren't needed.
RAGE - id GO BACK
With the release of Rage 2 this month, I wanted to take a trip down memory lane for a moment and look back on the original game; RAGE. I remember picking the game up in 2011, and by the middle of 2012 I had completed the single player story 3 times (I had no life (I still have no life)). Something drew me too the game, it's not the best game ever made or that I’ve played, but it is one of my favourites, nonetheless.
Rage is a first-person shooter and racing game developed by id Software and published by Bethesda Softworks released in 2011 for PC, PS3, 360 and later released on Mac as Rage: Campaign Edition. The game also has some RPG elements which include an inventory system, the ability to customise weapons, the choice of different ammo types for each weapon and of course a main story quest as well as multiple side missions. The game uses the id Tech 5 game engine, which I am very fond of, and a bit disappointed that Rage 2 isn’t using the game engine. But I get why it isn’t, id Tech isn’t made for open world games, and the developers of Rage 2; Avalanche Studios, wanted to make the world of Rage 2 bigger and with a true open world experience that Rage fell short of offering.
Rage is set in a post-apocalyptic world created by an asteroid wiping out most of the population. A crystal call Feltrite that came from the asteroid has fiddled with the DNA of some people turning them into mutated monsters. Multiple cryogenic pods were made before the asteroid impact called Arks. Your character has been woken up, everyone else inside your Ark is dead. You emerge to the outside to see what the world has become around you. You are the Ark Survivor.
As you start the game, a character called Dan Hagar finds you and takes you to his small town in the wasteland. He gives you your first quest as well as your first gun (the settlers pistol). Your objective is to go the bandits hideout and take them all out. Once you arrive at the hideout, the game loads a separate level that you now must make your way through and eliminate every bandit. The somewhat open world section of the game is usually for travelling to different levels which you just used to get to the Hideout. Rage has a somewhat more linear approach than say the game Borderlands where you can complete multiple quests in one area. You usually go on one quest at a time in Rage, and there aren’t many times that you complete two quests at once when in the same level.
Rage being a somewhat linear experience, makes the player not continually stop gameplay and go into his/her quest menu and map to see what objectives can be completed in the one area. I ended up usually going into the log (which is used for selecting quests, seeing stats, crafting items, changing weapons) to craft items, so it wasn’t a regular occurrence.
In Rage you; get a quest - go to objective - complete objective (maybe find rewards in level) - go back to quest giver - earn reward/get another quest/continue story. It may seem simple, but the game makes every quest mean something to the player as well as the quest giver. It doesn’t feel like you're doing chores for the NPC characters, because you are always going into new areas (or even old ones but in reverse) and finding new items and weapons. But most importantly it doesn’t make the player question why the NPC Character isn’t doing the quest on his/her own. The wasteland is a dangerous place and some people don’t want to go out there alone or ever, and you, the Ark Survivor seem like you enjoy the thrill of danger and you look well equipped to do so.
There are vehicles that are used to get around the wasteland and to compete in town races too. The races have the same gameplay loop as the main missions. Choose race, finish in top 3, get race credits to spend on improving your vehicles armour, speed, and/or appearance.
I enjoy the post-apocalyptic setting in games when done right, and a big factor for me is that you feel alone. I know this isn't the only way to do the setting right, but it makes a game setting more of a spectacle when you first wander into a new area. I'm alone, no one to help me and the only way to progress is to move forward into danger. It's a great feeling and even greater one when you complete the task at hand, it makes you want to go on more adventures.
One down side to the game according to everyone it seems, but one that I didn't mind was (spoilers!) having no end game boss fight. The last area you're in, you have to turn on a couple of consoles, and after turning each one on, a horde of enemies start spawning and you have to take them all out. When everyone is dead, you then interact with the final console, and the game ends. It didn't bother me as much as others.
We've all seen boss fights at the end of games. Yeah you will probably get a big sense of achievement when taking down a massive mutant monster, but all you will be doing is learning the boss' movements and shooting bullets at it till the health bar goes down. There's nothing wrong with that, but I like that id Software tried something different. Either that or they just ran out of development time, but either way I commend them taking a chance and not doing the norm.
Rage is a game that I could come back to anytime just to have fun and waste(land) a little time shooting mutated monsters, and I'm hoping that Rage 2 does that exact thing as the original. Avalanche Studios seems to have ramped up the 'RAGE' (and colour!) for Rage 2, but I also hope that it still is fan service for the fans of the original Rage game (so much use of the word 'fan' in that sentence).
ultraplayer 2013, One of the most detailed worlds in video game, reddit, viewed 8 May 2019, <https://www.reddit.com/r/gaming/comments/10tt8u/one_of_the_most_detailed_worlds_in_video_game/>.
Rage 2011, Ghost Hideout, Rage Wiki, viewed 8 May 2019, <https://rage.fandom.com/wiki/Ghost_Hideout>.
Gurwin, G 2018, Why is Bethesda making 'Rage 2?' We dove back into 'Rage' to find out, Digital Trends, viewed 8 May 2019, <https://www.digitaltrends.com/gaming/why-is-bethesda-making-rage-2-we-dove-back-into-rage-to-find-out/>.
HIDING BEHIND A WALL? (UNITY & C#)
If the platform your building your game to doesn't support a specific custom shader that contains the ability to see the player through a wall, I have an alternate way that may help you with that problem.
I had been messing around with a New Nintendo 3DS development kit, and found out that it doesn't support custom shaders. Specifically, a shader I wanted to use which gave the ability to see the player behind a wall, so the actual person playing the game knows where the character is on screen.
This alternate option uses a Linecast from the Camera game object to the position of the Player, and then when the player is behind a wall a sprite pops up on the screen where the player is positioned. You can imagine that the sprite could be some quirky animating image of the face of the main character.
I have a couple of other scripts running during the game, a player controller script, a camera follow, etc. I will only go through the ability to find where the player is when him/her is behind a wall. Also, I am using an orthographic projection on the camera, but not to worry because this alternate way will still work if your camera is in a perspective view.
Full C# Script and Example at bottom of blog post.
Checked with Unity version: 2018.3
Then back in Unity, create/add a player game object if you haven't yet (e.g. Create -> 3D object -> Cube), create a Canvas (Create -> UI -> Canvas), and name them anything you like.
On that canvas I changed the Render Mode to Screen Space - Camera, and also created another Camera game object that takes care of the UI elements in the game. I then dragged the UI Camera in the Render Camera slot on the Canvas. You can choose to do this or just stick to one camera. (There are no scripts on the UI Camera, just on the Main Camera). If your using two cameras don't forget to uncheck UI on the Culling Mask of the Main Camera and select the UI layer on the Culling Mask on the UI Camera and nothing else. Also make sure the Layer of each game object is correctly displayed just like the pictures below. (Main Camera Layer = Main Camera, Canvas Layer = UI).
Now create an image (Create -> UI -> Image) and add it to your canvas, This is going to be the sprite that shows up on the screen when the player is behind a wall (make sure you choose a sprite for your UI Image).
Select the Main Camera and in the boxes below on the script drag your Image and Canvas to the script.
After that, it's time to create some layers. On the Player, go to the Layer option in the Inspector tab, and add Layer.
Now add two new Layers, name one Player and the other BehindWall.
Make sure you set the Player layer onto the player after creating it. And now create a new game object or if you have a wall in your scene, make sure the layer of that object/wall is set on BehindWall.
You can also open up the Project Settings (Edit -> Project Settings...) and uncheck a couple of things on the Layer Collision Matrix on the Physics tab.
With that now done, we can go back and select the Main Camera and now on the script we can choose the Player and BehindWall layers on the LayerMask.
Back to the script. In the Start function add these lines:
Now let's set up the Linecast. (you can also find out more on Linecasts here .)
After we have set up the Linecast, we can now use its information. So that if the Linecast is not hitting the Player, which will only happen when a wall (with the Layer set to BehindWall) is between the line and the Player. We then show the sprite, which will follow the player behind the wall.
When the Player is behind a wall the sprite image will pop up and follow the player as long as you are behind a wall. Another thing we could add just below this piece of code to make it easier to visualise the line is this:
Now when we press the Play button in the Unity Editor a line will be drawn in the Scene view when selecting the Main Camera.
P.S./Edit: Instead of enabling and disabling the canvas, you can also just turn the actual Image Gameobject on and off.
I was browsing through itch.io/jams for possible game jams that I could enter into and found one that peaked my interest. A game jam is a sprint-like event in which designers, artists, programmers, etc., plan, design, and create a game within a short span of time. A game jam usually has a time limit and a theme. The theme is usually announced as soon as the game jam starts. Another cool aspect is that you can play other people's games and see how they interpreted the theme in their work.
The jam I entered into was called 8 Bits to Infinity ~ Platformer Week and it ran from March 2nd to March 8th (or if you're in America, March 1 - 7, but I'm going by the time zone I was at. Ya hear!). I didn't have a whole week to work on the game due to 'real life' shi... stuff, so I knew I had to create a game that was short, and that used Unity (game engine) primitive objects (cubes, spheres, capsules, etc.) if I wanted to create a game in time. The theme of the game jam was Darkness and early on I thought of the idea of making a first-person platformer where the player jumps on platforms (duh!) to reach the goal in time before the timer runs out.
Pretty generic I know, but the goal wasn't for me to change the video game business (even though I probably couldn't even if I tried), but it was for me to see if I can still complete a game in a restrictive time limit and when I don't know how to implement a mechanic into my game, instead of just giving up and walking away, I wanted to stick to it, and get through the failures, and find compromises for things I didn't know how to do yet. It seems like my goal is to see how many times I fail before I succeed at something, seems close to Einstein's definition of insanity, but hopefully I see different (improved) results.
The theme being Darkness, I took that in the literal sense so the game world was to be pitch black and when the player steps on a platform the game level reveals itself by lighting the way. I also wanted the player to know what to do without a traditional in-game tutorial, and also keep UI elements and menus to a minimum. There was no need to waste time creating insignificant scenes, menus and buttons, when I could be using that time to focus on gameplay.
So after about 3 days (less if I counted the hours that I worked on it for. Which by the way, I probably should keep track of next time I enter a game jam), I had a prototype of a game called Escaping Absence. I couldn't think of a great title for the game, and that name just came up during the last moments of finishing it. But it's better than A Game with No Name! (oh wait! that's a great title!).
Escaping Absence contains 6 levels, and the goal of the player is to reach the end of the level before the timer runs out. The player can either use a mouse and keyboard or an Xbox 360/One controller (the only controllers I tested the game on).
To get the outline effect on the 3D objects, I used a shader that I had been messing around with my previous game development projects. The shader is basically Unity's standard shader but coded in the shader is an outline effect. Messing around with the lighting settings in Unity I created a pitch-black game world, and the lighting is handled by 2 (directional) light sources. One lights the starting cubes which are always on, and the other lights up the hidden objects which when hitting a platform, the light intensity rises, and the player sees the path. Due to the real-time lighting, this is a heavy load on the old Personal Computer. So, using primitive shapes helped out a lot in regard to the frame rate.
I also got some great feedback from two streamers on Twitch who were playing all the games from the game jam. Watching their streams, one wanted the game to have an option to invert the Y Axis for the camera movement and felt like the timer didn't need to be in the game. I agree with adding an invert Y Axis toggle, but taking the timer out, I feel like that would take out that struggle to get to the end of the level in time, I could be wrong. All the player does in the game is jump on platforms. Maybe if I had more time and added more complex levels, then the timer could be removed.
The other streamer had a good point of when the player dies, rotate the player to face the level. This I was coding into the game, but ran out of time, and the system didn't work properly. But this is achievable for the future. He also commented on when you lose a level, he didn't like that you had to go back to the start of the game. Both streamers didn't know what to make of the in-game audio, one said it was weird. I also agree, I feel like the audio track could change when the platforms light up. I don't have much knowledge on audio design, so I need to increase my knowledge on that in the future. The sound effects I used were part of a Unity package I downloaded on the Unity Asset Store. It is called Universal Sound FX by IMPHENZIA. Both streamers did get the idea of the game and after testing the mechanics they knew what they had to do to finish the level. There was some good feedback in there and I appreciate them playing the game.
If you want to check out the streamer's videos:
I was contemplating for a couple of days about updating the game to add the features of; the inverted Y axis toggle, the player facing the right way after dying, and changing up some of the audio. Ultimately, I decided to continue working on the project and add those features in and fix whatever bugs that were still present in the first published build. So yeah, that's what I'm working on now. :)
To date, the game has been downloaded a total of 36 times (36 is greater than 0, so that's a plus). The game can be played on Windows, Linux or Mac. Most of the downloads were for the Windows 64-bit build with 18 downloads, next was the 32-bit Windows build with 10, and then Linux with 6, and finally Mac with 2 downloads. It was a good idea to add builds to not only Windows, but to Linux and Mac too, and will continue to build for those platforms in the future. The game has also been added to 5 people's collections. Collections on itch.io are lists that users put games in to either get inspiration from, or find fun to play, or like the art style, etc., it's sort of like a playlist on YouTube, or any other type of collection of things that you save (I guess! :/ ).
There were some really cool games that were submitted for the game jam. One of the games I played had a mechanic that I thought was great. The player was a candle stick like character, and you can click on lit flames with the mouse and add it on top of the character's head to light the way and store the light for use later in the game to activate objects. That was just one of many great ideas that were implemented in the games submitted. You can check the games out here: https://itch.io/jam/platformer-week/entries
But if for some reason you want to play the game Escaping Absence, you can check it out HERE .
Heart of Darkness 1998, Interplay Entertainment, Ocean Software, Amazing Studio, Top Best Alternatives, viewed 17 March 2019, <https://www.topbestalternatives.com/heart-of-darkness/>.
At the start of this year, I thought of some goals that I wanted to achieve by the end of 2019. So, taking Diamond Dallas Page's (former pro-wrestler, now DDPY guru) advice, I wrote down my goals on a piece of paper, cementing my goals in ink form so there is no confusion or misdirection from myself. It's stuck on a wall where it is seen by my two eyes every day.
I also have made a checklist that is separated by months of tasks that I would like to get done and that helps me continue on this journey of increasing my knowledge of game design. On the wall next to the goals are printed out versions of emails that I had gotten from companies informing me that my job application had not been successful. I keep them there as motivation, saying to myself 'I'll show them!'. 'Them' not only being the job decision makers of those companies, but people I know and meet in real life. If every time I heard people criticise me or even give me that look you get when they think that your wasting your time about my choice to make games, I would be one rich MFer. (which would make life so much easier). But there's only one thing that everyone is guaranteed, and that's death. So, why not do what I want to do? In my opinion everyone is wasting their time no matter what their doing. Why not make my life not so miserable - until I die from natural causes, unnatural causes or by cause of a belt around my neck (only joking. Or am I....).
Shit! Went a bit dark there. Anyway, continuing on... The failed job applications on the wall is also a reminder to myself to get better, keep learning and create more meaningful experiences in my games. The time of comparing myself to others is over. The only comparison that is acceptable is to myself. If my knowledge of game design is better at the end of this year than it is now, then that's a win in my book (or at least an improvement).
I have 3 goals on that piece of paper and excuse the vagueness of the first, its only because I'm working on it right now,
and who knows what the final product will become. There's also a chance of not completing all the goals during 2019, and if that's the case, the incomplete ones will roll onto the now yearly goal list for next year.
Complete unannounced game
I am working on this right now, not much I can say right now about it, but it's in its early stages. Prototype incoming.
Make a Duke Nukem 3D episode mod
I really want to make a full episode mod for Duke Nukem 3D. I have some experience with the Build Engine level editor, and I have modified some of the game files, to import my own sprites/textures, adjust values of gun damage, health, etc., and also recently figured out how to load your own levels, and go from one custom level to the next in-game.
Participate in a game jam
I have yet to participate in a game jam, and probably should soon. I'm thinking of entering in one on itch.io or gamejolt.com. I need more experience with rapid prototyping and deciding what works in a game and what doesn't, as well as managing time restrictions efficiently.
Peckham M 2015, Rocket League 2015, Psyonix, Panic Button Games, Time, Here's Why Everybody Loves This Bizarre New Soccer Game, viewed 3 February 2019, <http://time.com/3966126/rocket-league/>.
'...HAS NOT BEEN SUCCESSFUL'
Near the end of my time at university, I searched for internships and jobs in the game industry, thinking that if I didn't get a job in the next month, it was over. The dream of working for a company that developed games would just be that... a dream, never to be achieved.
Before I graduated, I found a posting for an internship, a game design internship. I thought this was the perfect opportunity, so I stopped whatever I was doing and set my mind on giving me the best chance of getting that internship. In the span of a couple of days, I finished my resume, my website portfolio, wrote a cover letter, and even bought a domain name for my website (this website!). I believe I created the best possible chance I could have at the time to get the position. Anyway, about a month or two pass, and I had gotten an email stating that they were not moving my application forward. Disappointment, frustration, maybe even depression (don't tell anyone!) set in.
I had failed. About a couple of days go by, and I think to myself, "this can't be the end". So, I do the proverbial dust off the old baggy stone washed jeans, and whatever job listing I saw I could fit in with, I just applied for it! I emailed many developers asking if they offered any internships or junior positions (some even replied to the emails). Most didn't reply to the application I sent for their job listing. I knew this wasn't the way to do it, my heart wasn't in any of it. I had also been burnt out of developing games after I graduated from university. It wasn't fun anymore, creating, it felt like unwanted work that I had to do, and I got angry and bitter. It was a struggle to double click on the Unity logo on my desktop. Every time I saw it, I just got frustrated.
During that time period, I did move forward to the next phase of the 'job applying game'. I got a call from a developer wanting to have an interview with me about the job I applied for. This was my chance, it also felt like my last chance. But I was still tired of the game development cycle. Still burnt out and having not created anything since my time in university. I went to the job interview, and now looking back I can confidently say, that it was... average. I was average, the whole interview and my answers were too. I had no confidence in my work and myself. As soon as I left the building, I knew right then there was no way I got the job, and a week later I got an email confirming my thought.
I had to take a break, and almost make myself re-learn to have fun making games. I had to enjoy the process again, needed to love having to work out problems and bugs, think about different ways of applying mechanics to games, and everything else that game development brings to the table. So near the end of last year, I took a break, didn't write any piece of code, didn't model a small object like a lamp or some other kind of lighting appliance, I shut off everything trying to refresh my brain and forget about the bad times.
Now it's 2019, and I'm focusing on my 'recovery' and making myself a better designer. I'm already working on a game that I plan on releasing by this year (hopefully), and also have other game development related goals in mind. What if I don't get a job in the game industry? At this point, I'm not worried about that, I need to make game development my hobby again, I know that my portfolio work needs to be replaced with better work, and I need to get better at designing and creating games. I'm beginning to reintroduce my love for creating, And at this point, I can share my overall goal I want to get out of developing games, it might sound like a simple one but trust me, with your mind overflown with information and still not quite fully understanding everything it takes to make a great game, you can get lost in your own bullshit. So here it is... Make games that you would want to play! (it's that simple! or maybe it isn't).
Pavle 2016, Grand Theft Auto: Vice City 2002, Rockstar Games, Rockstar North, GTAForums, Best mission failure texts/calls/cutscenes?, viewed 13 January 2019, <https://gtaforums.com/topic/856025-best-mission-failure-textscallscutscenes/>.
A game study on Deus Ex: Human Revolution and discussion between the end of the mission "Hunting the Hacker" and the beginning of the mission "Gaining Access to Tai Yong Medical".
https://www.youtube.com/watch?v=zC4q0XBwPzw - Time Code: 7:00 - End of video
https://www.youtube.com/watch?v=kyq5tR0wXsM - Time Code: Start of video - 6:17
Deus Ex: Human Revolution (DXHR) is an action role-playing game (ARPG) with incorporated first-person shooter (FPS) and stealth mechanics. Players take the role of Adam Jensen, a man equipped with mechanical cybernetic implants called ‘augmentations’.
‘Deus Ex: Human Revolution immerses the player inside its cyberpunk womb from the very start.’ (Donatelli 2012). DXHR knows how to pull you in and feel the gritty, unstable world full of futuristic corporate architecture and interiors setting the mood perfectly with dark lighting and a great cyberpunk/Blade Runner inspired soundtrack.
In DXHR, all elements of the game fit and connect to each other to produce a memorable world, a memorable experience and brilliant design. DXHR’s aesthetics seem similar, and took inspiration from Blade Runner and Ghost in the Shell. The game has a yellow golden tinge for a screen effect, and goes well with the whole game, which mainly focuses on dark lighting and gold neon lights. During the gameplay in Alice Garden Pods, enemies are alarmed and begin searching for you. The background score has a very fast and frustrating effect as the playable character is in that situation. And as soon as a guard spots you and their status changes from alarmed to hostile (see figure 02), the audio track slightly changes to an action based sound with just a couple of instruments added to the already playing audio. But the two sounds; both the alarmed audio and hostile audio seem like they could still be part of the same song and both work well together as a whole. As soon as enemies lose sight of the playable character, those extra instruments fade away and the original alerted audio continues playing. Every song, and every audio track fit perfectly in the game which makes it’s that more immersive.
DXHR’s levels are semi-open maps (see figure 03), but just because they are small, it doesn’t mean there’s thoughtless level design, quite the opposite in fact. Each level is carefully crafted and contributes to the story and aesthetic of the game. In Alice Garden Pods, after we meet with the Hacker, Belltower Security show up looking for you. Alice Garden Pods is a small section of Hengsha, and the game confines you to that space. You must escape the Alice Garden Pods and continue through the game.
DXHR uses an illusion technique, which is basically to ‘support multiple-solutions, by having multiple ways to get past an obstacle, but have the same ending for all, as the objectives don’t change’ (Lapikas 2012), Even though you are confined in a small space with only one exit, the way levels are designed in DXHR lets you choose which way you want to get there. This makes the players brain think that it’s making meaningful decisions and choices, but in reality, the game already has laid out a plan for the player.
As you walk out to the open, you can; drop down to the first level by jumping off the rail and shooting guards and escaping, or you can just walk down the stairs shooting guards in the way. If you like a stealthy approach, you can crouch and move quietly hoping that no one sees you escaping Alice Garden Pods. And there’s sure to be other ways to escape that area in your own way.
This section of the game is a minor one, nothing big really happens in the story, but the level design doesn’t care that this is the last time you’ll be in this area. Every object is carefully place with meaning, with the player’s choice being considered and the guards positioning being considered too. All this wrapped with the score and soundtrack of the game, and with dark black and the light gold lights (see figure 04). It becomes atmospheric.
This section of DXHR communicates a lot of information to the player through environmental storytelling. As you ascend the first pair of stairs up to Alice Garden Pods, you are shown a place that is safe, where people live, or rent out, with the shiny gold lighting right in front of you. Even though you have a map and map marker, the light still does its job and lures you to the top centre of Alice Garden Pods to meet with the hacker.
DXHR has a RPG element to it, and because of that, you can end up having skills/augmentations that other players that played the game didn’t chose or didn’t have at the time at arriving at this place. So, the way you escape the area is going to be different from how others played that specific section. This makes every playthrough feel unique, and even more unique, if you play completely differently on your second playthrough.
After Belltower Guards show up they start searching for the playable character. The UI and map show you the exit, and it’s the way you came in. Just like before, when you entered the Alice Garden Pods you saw the Gold neon lights in front of you. Now if you look the direction where you need to go, the lights are dim and dark indicating the Alice Garden Pods isn’t safe at this moment. The game also shows you which objects are interactable in the world; so, if you see a door with a yellow/gold outline on it, that indicates that its interactable. The playable character Adam Jensen, is an augmented human, and his eyesight is also augmented. Mechanics aren’t just put in without meaning, everything ties back to the story. Mechanics are given to you when you upgrade an augmentation, for instance, a sight augmentation upgrade can give you the ability to see an enemy’s line of sight. So, the map on the bottom left corner would show cones on enemies indicating their line of sight.
DXHR uses both a first person and a third person perspective. Most of the game is played in first person view, but when you use the games cover system, the playable character hides behind an object and the camera switches to third person; to see your surroundings, and what’s ahead of you. There are a lot of mechanics in game that are optional in DXHR, which gives the game more depth and choice for your play style. There a literally dozens of ways of going through and escape through the exit of Alice Garden Pods.
Deus Ex: Human Revolution pulls you into its world, with the great score and atmospheric levels. There isn’t any moment that takes you out of the experience and makes you think “wait, that doesn’t belong here”. Even though DXHR is a story based game first, the gameplay was not forgotten. Mechanics fit together perfectly and not one augmentation overpowered. The level design takes all augmentations you could use in consideration, it’s just up to the player to find out what works best for them. Alice Garden Pods and the missions that take place there are just a small portion of the game, and the elements talked about in this piece translate over to the rest of the games levels.
Donatelli, M 2012, ‘Level Design Review of Deus Ex: Human Revolution’, Gamasutra, viewed 22 November 2017, <https://www.gamasutra.com/blogs/MatthewDonatelli/20120118/90927/Level_Design_Review_of_Deus_Ex_Human_Revolution.php>.
Deus Ex: Human Revolution 2011, Square Enix, Eidos Montreal, Deus Ex Wiki, viewed 22 November 2017, <http://deusex.wikia.com/wiki/Deus_Ex:_Human_Revolution>.
Phil Lube 2012, Deus Ex Human Revolution – Dev Diary SOUND DESIGN, YouTube, viewed 22 November 2017, <https://www.youtube.com/watch?v=mGiFzS8F8QA>.
Lapikas, F 2012, ‘Reimagining a Classic: Deus Ex: Human Revolution’, GDC, viewed 22 November 2017, <https://www.gdcvault.com/play/1015489/Reimagining-a-Classic-The-Design>.
Xtr33mm 2011, Deus Ex: Human Revolution Walkthrough – Part 27 – Meet Van Bruggen, Youtube, viewed 21 November 2017, <https://www.youtube.com/watch?v=zC4q0XBwPzw>.
Xtr33mm 2011, Deus Ex: Human Revolution Walkthrough – Part 28 – Escaping The Pods, YouTube, viewed 21 November 2017, <https://www.youtube.com/watch?v=kyq5tR0wXsM>.
Figure 01, Alice Garden Pods 2011, Deus Ex Wiki, viewed 20 November 2017, <http://deusex.wikia.com/wiki/Alice_Garden_Pods>.
Figure 02, Turbin95 2011, Deus Ex Human Revolution Alice Garden Pod Escape, YouTube, viewed 23 November 2017, <https://www.youtube.com/watch?v=z0Wj1iNsFKA>.
Figure 03, Alice Garden Pods 2016, GameBanshee, viewed 22 November 2017, <http://www.gamebanshee.com/deusexhumanrevolution/walkthrough/alicegardenpods.php>.
Figure 04, Niliana Bloodbound 2015, “The Nexian Markets” Gole Standt’s Skyplot, Wildstar Forums, viewed 22 November 2017, <https://forums.wildstar-online.com/forums/index.php?/topic/148380-the-nexian-markets-gole-standts-skyplot-another-creation-by-niliana/>.