Monday, August 19, 2013

Update 1

Project at a Glance

I've been trying to keep myself organized using Trello, a project management software/website. Trello uses 'cards' and columns to keep projects organized. Cards are supposed to represents the various tasks that need to be done to keep the project moving, and columns help categorize the cards. Although this software is supposed to be used for team projects, with the whole point focusing on communicating project status information to other team members, I am still using this even if I am the only one on the team. Laying out tasks in this way helps me keep the bigger picture in mind, and hopefully prevents me from increasing the scope. Besides, maybe I will convince someone to help me out with the game, and if they accept, I can quickly get them up to speed using this site. Constantly shifting tasks toward the 'done' pile also feels nice, and sort of validates my accomplishments, however small. This gives me more motivation to keep hacking away at the game code, as I see tangible progress of what I've accomplished.


The above picture is kind of an 'at-a-glance' screenshot of where my project is right now. I have made 6 separate columns to organize my tasks into. The columns are ordered so that tasks in the leftmost column are essentially 0% complete, and as they keep on moving to the right, they eventually get 100% done. Right now, there are a lot of tasks in the leftmost column, for obvious reasons. I like to list tasks there that eventually need to be done to get an idea of what kind of scope I'm dealing with. This column also reminds me what I need to get done in order to have a complete game, in case I get sidetracked into implementing some obscure feature for weeks on end.

Each task is also labeled using colour to identify what type of task it is. Right now, tasks tagged with blue are programming tasks, and are the most important (as you can see, a lot of blue tasks have already been started on). Art, UI and Design have Red, Yellow and Orange respectively. Some tasks can overlap in terms of type, and therefore can have multiple colours.

Art Style and Direction

As I've mentioned in my last post, I wanted to convey what I want my game to look like in terms of visual appeal. I've been thinking about the art style for this game almost since the beginning of May. I want to avoid the 8-bit pixelated look that a lot of indie games have. With games like Fez, Spelunky, Bit Trip Runner, Super Crate Box and even Minecraft utilizing a retro-pixelated look, this kind of art style seems almost cliche. I understand that it is a visually appealing, and charming look. I also understand that this style is not as time-demanding of the artist as many other styles, and thus offers an opportunity for the dev to focus on gameplay. However, I want to try something that could have a chance to be more unique in terms of visual appeal.

I started thinking about other games that I have enjoyed in the past that had a unique visual style. One game quickly popped into my mind: N+. That was a game I spent many nights on, and despite its very, very simple style, it looks very smooth and sleek. No need to be pixelated here.






The style is very simple, meaning do-able by one person, and visually clean and appealing. I especially like the 'silhouetted' look of both the main character and the world he/she is in. Although, this poses a problem. One of the things Geometry Wars 2 got very right is its expert use of colour/lighting to co-ordinate the player. The neon-like shapes were very bright against the background, and stood out to me at all times, even when things got hectic. But the neon style was more than just for contrast, the over-abudance of particle effects, glowing edges and warping was something amazing to behold. I want to merge the 'silhouetted' style similar to N+ with the neon glowing edges of Geometry Wars. 

Luckily for me, another game I played last summer, Outland, does something similar. Their characters are mostly a black silhouette, but they have glowing tron-like edges all around their bodies to emphasize their features. I really like this art style as it creates a very stylistic look and also merges the concepts I talked about above.


I think I can actually pull something like this off. Since I'm not doing a platformer, and therefore don't have to create all sorts of tiles for the world and many other extra details, I can probably get away with having this type of art style in my game. Coupled with the fact that I don't actually have to worry about making realistic textures, I think that this is definitely do-able for me. I still want to create 3D models for my characters as in Outland, but I want to avoid creating humanoid characters. These characters usually take much longer to model, and if I am going to be creating humanoid characters, they have to be rigged and animated. Otherwise they'll just be in one pose the entire game, and that won't make any sense. I want to avoid this in the interest of time, as this will require a pretty hefty investment on my part.

So what kind of characters am I going to have in my game? For reasons that are completely random, I decided that my main enemies in the game are going to be wasps, bees, hornets and other flying insects. Perhaps I was inspired by the current season, as there are many of these flying about in the summer. Regardless, I think this is an interesting theme that ties all the enemies together. In Geometry Wars, it was geometric shapes, in my game, it is going to be ferocious flying insects. Coupled with a silhouetted, tron-like art style, I think this game has the potential to look pretty amazing. I'm hoping I can at least mock-up an example enemy for my next post. This also lets me not worry about animating/rigging the characters, as the only parts that move are the wings, which can be just a simple 'wing buzzing' particle system. Even if I do plan on moving parts of an enemy (like their legs, or antennae) putting in effort to rig an insect will most likely be much less than that of a person. This way I don't have to worry about proper spine rigging, obsessing over painting weights correctly (especially in places like armpits, hips, elbows and knees) and many other nuances that come with rigging a humanoid character. Worst case scenario, I can just model each part separately and move it around in a script.

In terms of the player, I imagined them to be a flying plant of sorts. I don't have a concrete image in my head at the moment, and I'm going to have to flesh it out. The player will follow the same art style though, although they will be more detailed than the enemies.

Progress

I've finished 7 out of the 8 weapons that I need, and re-structured some of my weapon/projectile code to be more robust and generic. Before I was needlessly repeating lots of code in each weapon, and realized that some weapons have a similar functionality underneath the hood. I've made a separate launcher class that inherits from the base weapon class, and with both that and other improvements, I have substantially decreased the amount of time and effort it takes me to implement a weapon.

Below are 7 descriptions of the weapons I have coded so far. I was originally going to upload screenshots, but since there are no visuals yet, it would just be a bunch of spheres and cubes. With that being said, I think they would just confuse more than clarify.

Spine Shooter
This weapon is pretty standard as far as top-down shooting games are concerned. It shoots spines out at a relatively moderate pace (10/sec). The shots are fairly quick and a couple of hits from this weapon would destroy a relatively weak, unarmoured enemy. You could actually see this weapon in action from the screenshot I uploaded in the last post. The alternate fire for this weapon shoots out more spines with a faster rate of fire. This weapon is good for eating away at multiple enemies' health, and for crowd control of weaker enemies.

Spore Shooter
The spore shooter launches a tiny ball that grows in size tremendously after being shot. Once the ball is of a sufficient size, the increased drag from the size will halt movement of the projectile. Once it has grown to full size (takes roughly 0.6 of a second) it can be detonated with an alternate fire at no energy cost. However, this ball is very fragile, and most interactions with anything will destroy it. This is a good weapon for setting up traps, and luring your enemies to an explosive demise.

Laser Beam
As the name suggests, this weapon is a laser beam and for the most part, it is self explanatory. The beam is extremely precise, as there is no travel time and it will hit anything you point it at. However, its major disadvantage is that it has to build up to its full power to do any real damage. The beam starts out very small, and every time you hit a target, it will grow in size. Once up to full size, it devastates its target. The beam can be overloaded with an alternate fire, which will cause an explosion at the current impact point of the beam. The explosion's radius and damage depend on how large the beam is. This weapon is excellent at dealing damage to a single large, well armoured enemy.

Wingblades
This weapon spawns a bunch of blades in a small area in front of the player's shooting direction. These blades will continually slice enemies for a small amount of damage, and also push them back with each slice. This weapon's alternate fire will slice everything in a medium proximity of the player. This is great for 'snow plowing' enemies, and use it as a form of up-close crowd control.

Hive Spawner
This weapon does not work like traditional weapons, rather, the player shoots with the alternate fire. The alternate fire releases a small projectile that can be steered around. All shots fired are steered by the player's shooting direction, so the chosen location for releasing the shot is key. Multiple shots fired at different positions can create a moving 'wall' of projectiles, essentially acting as a moving minefield. Great for getting behind the front line of enemies and flank their weaker enemies from further away or attack around corners.

Spike Shot
This weapon behaves similarly to the spine shooter, but it acts more like a sniper weapon. This weapon fires 1 long projectile that is incredibly fast. This projectile can over-penetrate and hit multiple enemies in one shot. It also has a chance of sticking into an enemy rather than bouncing off when completely deflected by armour. Pressing alternate fire will detonate the projectile, but instead of an explosion, it launches several spines out in all directions. However fire rate is extremely slow, so using it in situations where enemies are in a 'single line' formation is preferred.

Snare Shot
The snare shot is meant to entrap enemies by creating a barrier between the player and the enemies. The snare shot launches webs of semi-rigid material that slows down and damages anyone that tries to pass through. The weapon's alternate fire increases the mass of all current webs so that they are much harder to pass through. This weapon is great for setting up a trap so that you can get a better shot with other weapons.

And with that, I think I've explained 7 out of the 8 weapons I plan on having in the game. Next post will most likely contain the final weapon, and more about the modifiers and how they work.

Saturday, August 3, 2013

About the project

Intro

This is a personal project of mine that I hope to build in the next few months. This blog will act as my personal archive for documentation on the game, but if it gains some followers, that would be awesome too! If anyone finds this blog and/or my idea at least semi-interesting, feel free to leave a comment.

The core concept of the game takes its foundations as a dual-analog shooter. This is where players use one thumb-stick to move, and the other thumb-stick to fire their weapon at various incoming enemies/obstacles. It is a very simple concept, and something I found do-able under a limited (read: no) budget, a one man development 'team', and a relatively short development time. The codename for the project takes after Sony's original dualshock controller for the PS1. This controller was amongst the first of its kind to have 2 analog sticks, and arguably, was one of the first to do it right. I find this a fitting name for a project about a dual-analog shooter, paying homage to a controller that makes this type of game possible.

Inspirations

My main inspiration for the project has been the XBLA title Geometry Wars 2. It is a very addictive, colourful game that is an absolute blast to play. The concept for the game is very simple: shoot colourful shapes, and avoid touching them at all costs. But this simple concept goes a long way. Each different shape behaves in its own unique way, and expert use of colour coordination reinforces the unique aspect of each different enemy. But don't just take my word for it, watch some gameplay below:


 Video not made by me.
Video link: http://www.youtube.com/watch?v=zdL-l10XJ68

An honorable mention should be the game 'I MAED A GAM3 W1TH ZOMBIES 1N IT!!!1'. This game shares mechanics similar to Geometry Wars, but offers powerups, different weapons, zombies and many other things along the way. I admit, I only played the trial version of the game, so I haven't experienced some of the powerups/weapons firsthand. However, seeing the gameplay is enough to asses that the game has a little bit more depth in terms of interactivity than Geometry Wars. Gameplay video below:

Again, video not made by me
Video link: http://www.youtube.com/watch?v=v5T6qenbdUc

Despite my praise towards Geometry Wars, I feel like there were a few things they could have improved on. One of the biggest things was that the action got too much to handle too fast. While I understand that the game was supposed to be 'tough' and reminiscent of the old-school impossible challenge of traditional arcade games, I still feel like the game should have stayed in a less intense state before really making things impossible. It comes to a point where there is so much stuff happening on the screen that it obscures your vision, and therefore, you don't even know where you are on the screen. This, in turn, causes you to simply die immediately, as there is no health to act as a buffer against your mistakes. I feel like forcing the player to die like this to end the game just evokes feelings of frustration and hopelessness towards improving your skills. I feel like Geometry Wars also could have benefited from having powerups and different weapons, similar to the honorable mention game (I guess this is my abbreviation to the long silly title). Even though there are a great variety of enemies, the way you could dispatch them didn't change, and eventually got a little boring/frustrating at times. The default weapon was sometimes not enough, as there were just too many enemies from too many sides.

I'm taking these criticisms to heart when making my game. I feel like slowing down the pace and also having a slower rate-of change towards intensity would give players more time to get themselves together. I'm going to make the pace ramp up much slower, and more incrementally, rather than exponentially (as Geometry Wars seems to do). This extra time would allow players to learn more mechanics rather than just moving and shooting. Now that some learning space has been created for players, this allows me to experiment with a few simple, extra mechanics that can add depth to a dual-analog shooter.

Game Mechanics

One main thing that is different from both Geometry Wars and the 'honorable mention' is that I want to introduce health and armour into the game. This allows the player some room to breathe by making mistakes not as punishing, but this also goes the same for enemies. Enemies won't be insta-killed by most weapons, so the player will have to work harder for their kills. Armour works differently for enemies and players. Enemies will have a value from 0-100, indicating their armour level. When enemies that have armour are damaged by any source, the armour has a chance to deflect all damage depending on the level. So if an enemy has 40 armour, it has a 40% chance to deflect all damage. If the damage does go through, it is reduced by the armour level's amount. For example, if an enemy has 40 armour and was damaged, it reduces that damage by 40%. I'm debating on letting armour deteriorate when it completely deflects damage, but that is something I'm going to have to experiment with after I have my first play test. As for the player, they don't have armour that ranges from 1-100, rather, they can summon up a barrier in their chosen direction by holding a button. This barrier automatically deflects any projectile or enemy away from the player, albeit being relatively small, so aiming is required to block enemies/projectiles.

Another resource I'm adding is an energy meter that the player has to keep track of. This energy meter is used up by special mechanics (coming up in the next section) that the player can execute. Energy re-charges itself quickly after a short delay so the player can quickly use it again. Energy consumption is determined by whatever ability the player has chosen, as they all have different energy requirements.

Special Abilities

Boost - By holding down a button/trigger, the player can get extra speed for a short time. Depletes energy very quickly.

Block - The player can block enemies from a specific direction by simultaneously holding the direction they want to block with the shooting thumb-stick, and holding down the block button. Depletes energy at a moderate pace

Alternate Fire - By pressing a button, the player can execute the alternate fire for a weapon. Energy consumption varies by weapon.

Grapple/Vine shot - The player can shoot a special shot in their direction of movement. I haven't quite figured out what this will do yet, but I know I want to have some sort of 'always-available' mechanic to the player, just in case they find that their current weapons are not up to the task. Energy consumption is low.

Weapons

A player can have two weapons in their 'inventory' at any time. The player has 2 slots for weapons, and can switch between them at any time. I don't know how these weapons will come into the hands of the player yet. I'm probably going to flesh this out more when I get to creating the enemies and levels.

Modifiers

I want to have certain abilities the player can pick up and use that modify the behavior of the player's current weapon. The player will have 2 slots for modifiers and can switch between them at will. For example, if the player has a laser beam in their current weapon slot, and also has a 'Fire' modifier, then their laser beam will set enemies on fire. They can then switch to their other modifier, let's say 'Force', and their beam will now push enemies away and also doing more damage.

I have a complete list of weapons and modifiers I want to add to the game, but that will be saved for another post.

My Current Progress

The engine I'm using is the free version of Unity. I already have experience in this engine when I built Magic Duel, and a bunch of other assignments, games for class, and other personal projects. I'm also using Adobe Photoshop CS2, as it's free and available to download on their site (which is awesome news for me).

Anyways, what I have implemented so far has all been code. No art assets or any sort of visuals, so any screenshots are going to be just cubes shooting at other cubes. Now that I have the disclaimer out of the way, voila:

May not look impressive, but every game starts out like this
In case you can't tell what that screenshot is about, the player is the blue cube, and the enemies are the red cubes. The cyan rectangles are shots fired by the player. With each successful hit, the shot 'sticks' into its target, as if it penetrated its armour. If the shot has been completely deflected, it bounces off the enemy.

I actually have quite a few things implemented so far. All of the things regarding player movement and special mechanics are implemented. This means you can move around, shoot in any direction you want, boost, block etc. The weapon system and the ability to switch between weapons have been implemented. I have 3 weapons done already, they are functional and do the appropriate amount of damage to enemies and have alternate fires coded as well. The ability to switch between modifiers has been implemented, although I don't actually have any modifiers coded yet. A base enemy class has been made, and the ability to push around/damage enemies is already coded, with the proper armour mechanics.

That being said, I still have a long way to go. I am personally excited to start making particle systems for both the player, weapons and enemies. Considering I did a pretty awesome job making particle effects in Magic Duel, I think this is going to be the next level for me.

Controls

Below is the control scheme for both the 360 controller, and PC. These controls have already been implemented into the game.

Xbox 360 Controller

Left Stick - move
Right Stick - shoot

Left Trigger - boost
Right Trigger - block (need to be also shooting)

Left Bumper - grapple/vine shot
Right Bumper - weapon alternate fire

A - weapon slot 1
X - weapon slot 2

B - modifier slot 1
Y - modifier slot 2

I tried to group actions together by sides. So left side of the controller relates everything to movement. Both boost and grapple/vine shot (this uses movement as a direction of fire) are on the left side. The right side relates everything to the shooting action. Blocking uses the shooting direction to spawn a barrier, and alternate fire is self explanatory.

Mouse & Keyboard

W - move up
S - move down
A - move left
D - move right

Q - switch weapons
E - switch modifiers

F or Middle Mouse Button - Alternate fire
Left Mouse Button - shoot (direction is chosen based on mouse position)
Right Mouse Button - block (direction is chosen based on mouse position)

Left Shift - Boost

Space - grapple/vine shot

Conclusion

Anyways, if anybody was actually reading this, thank you for sticking around for this long! I hope to post updates regularly and eventually release the game at some point. In my next post, I'll be talking about what kind of artistic direction I want to take with this game, and some project management stuff that I'm trying to do to keep myself organized. I'll periodically upload photos of the 'project-at-a-glance' from the software I'm using.

Thanks for reading.