Friday, December 27, 2019

Hats and more inventory selections

Some hats and more work with the inventory selection.

New inventory system

In comparison to the earlier game Zombie Guard...

Zombie Guard (2017)
I want to avoid lots of menus and buttons like this

Hats provide bonuses too.

I am now working on the long meticulous process of adding sound effects and music.

Sunday, December 22, 2019

Landmines, flash bangs, and ray guns

Landmines, flash bangs, and ray guns.



Plus a new compact inventory system, by just having circle buttons fly out from the character for selections. I can extend this easily for things other than just weapons.

Again, keeping it simple. The naive solution would some basic array of selections on a large menu.

Yes!

No!

That second one looks really bad. There is no implementation for this, just placement of art to get an idea of what it would look like. The disadvantage of the circular interface is it gets dense rather quickly; I will have to categorize selections to show.

Thursday, December 19, 2019

"Getting Ahead"

Quick video of a newer zombie that throws her entire head as a projectile. The placeholder name of this area is Baltimore (to be renamed).



Hud

While creating this hud that depicts life and ammunition of the player, I had to settle on decisions pertaining to the underlying design of the game.

First non-functional placeholder concept (this is just a single sprite)

Using my go-to style, but this did not match the visual style of the joystick buttons

Using pieces of licensed interface art to create the look

Fully functional, and matches the rest of the interface

Ammunition


There will be unlimited total ammunition for each gun. However, each gradually refills at a constant rate over time without the need of a reload animation. When depleted, the player can still fire rockets or bullets, but at a very slow rate as ammo is restocked automatically.

I made this decision to encourage usage of secondary weapons when ammunition of the primary weapon is depleted. If weapons instead were reloaded to maximum capacity using an animation induced by a button (or automatic when ammo is fully depleted), then it would lead to some annoying situations:
  • Being forced to run away while reloading.
  • Never being able to reload successfully because of the overwhelming number of enemies.
  • Never needing the use of secondary weapons.
These small decisions may seem trivial, but it makes an enormous impact on future design decisions and the overall feel of the game.

Life


I have adjusted the life of the player to be integers depicted by whole-hearts rather than some adjustable percentage meter. Unlike similar interfaces featured in games like Legend of Zelda, I wanted absolutely any hit to deduct a full heart, rather than half or full on a conditional basis. To adjust difficultly, I would simply increase the chances of the player getting hit, rather than adjusting damage to deduct half or full which could lead to confusion and sense of unfairness.

Therefore, I do not have to adjust damage amounts through tables and function curves which can turn into a huge nightmare.

Keeping both features simple for now...

Saturday, December 14, 2019

Wall defense mode

This sequel would not be complete without a wall based defense mode. At least in Unity this is rather easy by just setting up a wall consisting of multiple game objects with stationary rigid bodies and circle colliders.

Wall with collider, rigid body, sprite, and depth components

The depth values of these pieces when live are automatic through a component that sets the z component of the local position.


This worked much better than expected. I just force the humans to always face right, only create enemies on the right side, and just let physics and basic AI do everything else.

I also added some other minor features, like reward boxes with randomized contents.


Moving right along....

If this first area of the game with these several characters for missions and weapons work out, then extending this experience through other areas and content will be rather straight forward.

I figure each area will have unique missions, but each will have common ones like exploration and wall-based defense with randomized rewards.

Friday, December 6, 2019

Characters

A bunch more characters ready to be exported into separate parts for animation. There are three arms for each character, swapped depending on the weapon or item being held.


Some of these are from my previous games, improved and redone at a higher resolution.

Scaling is a bit of an issue. It is still better to make the parts slightly bigger because it can be scaled down, despite reducing relative thickness of the lines.

Top: new characters. Bottom: Zombie Guard (2015)

I like to use really thick bold lines. Shadows tend to shift towards blue, and highlights tend to shift towards red and yellow. I never use pure black. Shapes tend to be curved and obtuse. When in doubt, I make something larger or thicker than necessary. Small details get omitted.

Back to programming... and the perils of design


These are enough for now. I can go back to programming with the content I have. At this rate I could at least distribute a demo within a month, to showcase the first 15 minutes of the game.

Thursday, November 28, 2019

Missions

I got a few more characters and basic interaction with non-player characters (NPCs). There is some dialog and missions that can be activated through a scripted sequence of events. I want this to break up the monotony of otherwise just slaying zombies while unlocking equipment. Here are some ideas featured in some missions:

  • Restriction to just one specific weapon
  • Run nonstop, shooting and avoiding obstacles
  • Defend behind a wall (Zombie Guard)
  • Escort an NPC targeted by all zombies
  • Recover item(s)
  • Survive over time
  • Passively only heal NPCs

Comparably, Zombie Guard has no story and the dialog is semi-random. It has unique survival modes, but otherwise is just wall-based defense. This limitation was not necessarily a bad design choice.

Quick creation of an additional character (also seen in-game below)
The body parts replace the existing skeleton animation, so no additional animation is necessary.

NPC interaction

Taking advantage of Unity's powerful Canvas rendering system for arranging UI.
A reference to a classic film.

An active mission

The text will be in English, and voice sound effects are just mumbles and gibberish so I can localize into other languages later.

The controls (bottom right of screenshots above) ordinarily used for weapons dynamically changes to NPC interaction options. Keeping it simple.

Speaking of simple, I spent the evening learning more of Unity's Canvas rendering system to avoid having to implement my own custom interface components.

Canvas related components for rendering multiple lines of text 

Just the Text component alone is insufficient for multiple lines of text that automatically scale and constrain within a desired width. An additional panel with components like ContentSizeFitter was necessary. None of this was obvious, but now it makes sense and I can see myself utilizing more of these built-in components.

Wednesday, November 20, 2019

Melee

It seemed necessary to include melee weapons. The collision is checked with a line segment during a key frame of the animations. At first it was not working correctly at all times, so I used Debug.DrawLine which showed me I was not properly setting a transform to the correct parent object.


I'm putting effort into better animations, and properly using a multiplier in code for the animation speeds so feet do not appear to skate across the ground. The Spine tool for animation is really practical and allows multiple animations to be blended together automatically, like walking, swinging, and pain reactions, all simultaneously.

Spine Animation Tool

Also the shader has been modified, so I can apply additive and modulated tints. As soon as I did this, it became clear that some bullet projectiles were hitting multiple targets if collided in the same frame, so this has been fixed by adding a flag that permits only one target.

Sunday, November 17, 2019

Half dozen weapons

I got four weapons to show, plus more just about finished. Some extra effort was necessary for the green ooze gun which creates debris and a puddle. These components can be reused just by changing the sprites.

Oozer

Mini Blaster

Ricochet Cannon

Shotgun

The projectile system will automatically use ray-casting for continuous collision, if it is moving faster than a certain speed. There is absolutely no gun or projectile specific code in the small projectile system, because everything is data-driven through code. There are all kinds of ways of doing this, but this works best for me in the long run.

Projectile data for the Ricochet Cannon above.
Member variables are not readonly because I do change these values live.

This style is kinda something I derived from Quake games written in C, my first exposure to game code. The style just kinda stuck with me. I could instead just use more prefabs and the Unity editor interface, but I prefer code to easily search and manipulate many at once if necessary.

Thursday, November 14, 2019

Xcode

Gem Heroes has successfully been built for iOS and sent off to be reviewed by Apple. There were many technical problems, as expected. In my experience distributing an app for the Apple App Store is about 20 times harder than distributing for Google Play.

Unity does not actually build the iOS app. It instead just creates an Xcode project to continue to build on a Mac. I rent one in the cloud, conveniently through a browser. It actually is pretty remarkable; I get to use the latest versions of Mac operating system without owning a Mac or upgrading the operating system.

The build settings are extraordinarily sensitive, and the errors tend to be vague and seemingly unrelated to the actual solutions.

Fail.

Fail.
The first time I added an incompatible framework which turned out to be unnecessary anyways. The second time I thought I had to change permission settings with a chmod command on a framework, but the solution was to change it from embedded to dynamically linked.

Then there were the usual certificate and provisioning problems. Apple has improved this by providing the option to automate it, but I still had to change a certificate manually when I submitted the build. Strange.

This is some really esoteric stuff. It took a lot of Googling and trial-and-error.

But I got it finished, and now I can resume progress on the new zombie game which I find to be much more interesting.

Thursday, October 31, 2019

Characters

Happy Halloween! Here are some zombie characters for the Zombie Guard sequel...



Some of these are designs from the original game, redone with better lines and shading at a higher resolution. None of these have animations, yet. I'm just keeping these as sprites while I create half a dozen guns to begin putting together the small demo.

Friday, October 18, 2019

Controls

Some touch controls, and looping background with more art.

The more I create, the more I want to create.


I see so many possibilities with this. I have all the skills, resources, and tools. I have enough art for now, so I have switched to writing code. First before even adding enemies, I need to establish the feel of the game. The movement, responsiveness.

Tuesday, October 1, 2019

Unity and NordVPN

Three technical things...


Switching to Cascadia Code Font

Microsoft has released a new open-source programming font called Cascadia Code that features ligatures which can be enabled in most IDEs. This changes a sequence of characters to the proper symbols.

Image from: https://devblogs.microsoft.com/commandline/cascadia-code/

Ahh. At last, I found something that I prefer over Lucida Console.

Getting Unity to work with a VPN


Typically I would work with Unity with NordVPN disconnected. This VPN client and some others are not compatible. For this new project I wanted a proper fix. So, after a bit of searching I switched to using the OpenVPN client with a few steps to work on startup (link). And, changed the network connection DNS to 1.1.1.1 (link).

Now, I can stay connected to a Nord server all the time with this client.

Reducing the size of the Git depot


Plus, I cleaned up the Git repository of the new project by specifying more ignore folders to prevent it from growing in size too quickly.

These art files for the backgrounds already are 30mb, so any commit with minor changes naively will store both versions, and, an additional copy because I have a remote depot on my Dropbox where I push changes daily. These files and licensed Unity packages will be kept separate from the depot, still backed up automatically on my Dropbox folder.

In other words, the depot is much smaller, and everything continues to be backed up daily anyways.

The code is still the most important. These are tiny but critical files. I still use a batch file to copy and store copies of all the code to Dropbox and Google Drive, in addition to the two Git repositories, in case somehow files get obliterated or the depots become corrupt. Unlikely, but never know.

I neglected to use ignore folders for Gem Heroes. The depot is now 30gb. A lot of this is regenerated content for specific platforms. At least for the recent iOS build, I just switched the platform (which takes half an hour) and built the Xcode project to finish on a rented Mac in the cloud. I reset these changes because saving any of this is unnecessary, once I have the Xcode project.

Friday, September 27, 2019

City

A bit more art and adjustments to the screen effects.

I expected myself to just use most of the art that I already licensed, but lately I have been satisfied with some of my own creations. I have continued the same style, but changed my approach a bit in Clip Studio Paint.

City buildings and random objects

Kitchen and random objects

It is a simple look, but that also is the challenge. Everything is reduced to a minimal number of blobs and lines. Just the slightest change in a curve will change the shape and make something look very different. The outlines are really thick too, so shapes can't be too narrow.

I'm just creating random objects freely, without really a firm objective in mind. Some of the pieces (especially the kitchen) will be redone.

I'd like to create a few more objects, and then put together a limited demo with just one or two zombies and a handful of weapons.

Tuesday, September 24, 2019

90s style vector art on an 80s style TV

A simple background, with different camera filters applied. I tend to prefer the filters, to prevent the game from looking too much like a Flash game that uses vector art. I tend to like the imperfections and stylized look. Plus I get to spend less effort with all the lines and shading for the scene objects. It is very difficult to paint imperfections on the floor without making the game look too busy and cluttered.

80s TV Filter + Hue Shift

Arcade Filter + Hue Shift

Original

That kitchen consists of individual pieces, which can all be rearranged. This got me considering having semi-procedurally generated backgrounds, with many areas to explore. Still, I must remind myself to stay true to my objective of just creating an arcade style shooter that focuses on the weapons and action.

There could be ammo and money inside objects, like looting areas in the Fallout series and The Last Stand: Union City:


Even spare parts to craft and augment guns? Funny objects to use as bullets? It is a zombie game, so it should not take itself too seriously. I want to be playful and less restrictive with design decisions.

Monday, September 23, 2019

Getting a sense of scale

The first step for creating Zombie Guard 2 is to establish the proportion of objects to each other. I created my first hipster/biker guy, as one of the many characters to be featured in the game. Then, I used some placeholder background just for getting a sense of scale. I do not plan to create much of the art until later, but I still prefer to at least establish the look.

Character 1

Establishing proportion of characters and backgrounds

This seems about right. I will now increase the thickness of the ink outlines of the character.

In Zombie Situation, I neglected the proportions. There was also a lot of wasted space, so I need to consider props and objects to make these areas more interesting.

Zombie Situation (Flash)

Definitely characters will be able to move around and explore small areas. Zombie Guard 2 will be action game, with plenty of weapons made possible with a powerful projectile system and special effects.

Sunday, September 22, 2019

Just updates

The updated loading screen for Gem Heroes, and new gameplay video to be shown in the listing.




Along with a bunch of bug fixes and adjustments.

Thursday, September 19, 2019

Prototype

I was wondering if I could combine Oregon Trail with zombies in an action oriented RPG with some comical storyline. Take Zombie Guard, and place characters on a moving vehicle, on their way to some place during the apocalypse while blasting away. It has multiplayer potential.

Some inspiration for mechanics came from Swamp Attack, zOMGies 2, and theme ideas came from movies like Zombieland and others.

Zombieland (2009)

zOMGies 2

Swamp Attack


But this essentially becomes two games in one - action, and strategic resource management. I would have to please both crowds. Players who want action don't want to conserve ammo, and players who want to manage resources may not be fond of the action.

I created a prototype for this anyways. But I was not really feeling it. These ideas can work, but it does not suit me well.

Prototype

I will at least keep the projectile system, which utilizes many powerful Unity components. I'm having fun extending it with bitwise flags for other behavior like seeking, piercing, bouncing, splitting, etc. So, now I consider just creating an arcade shooter, focusing heavily on projectiles and perhaps some gun crafting system for ridiculous weapons.

Tuesday, September 10, 2019

Sci-Fi

Some of these interface packs work well with screen effects:

Original


With modified screen effects

It looks even better live because of the animations. Combined with sci-fi audio clips and deep atmospheric sounds, the "mood" of the game has been established quickly. Eventually I could add in a parallax atmospheric background of earth too.

Sunday, September 8, 2019

Resources

I try to be resourceful. As a solo developer, it is too expensive to draw and program everything. More of my time needs to be dedicated to design which is the most critical part.

I've had a flood of ideas. Wild and crazy ones, including one where you play as the AI for a robotic voice system like Apple's Siri or Amazon's Alexa in a family home in the suburbs. It could play as a time management or puzzle game, or just have an interesting story depending if you cooperate with the "humans".

..But the demand for a sequel to Zombie Guard is high. It would still be hard to create this, as it involves many assets and content. But at least I would not have to iterate nonstop on design, never being fully satisfied to give myself the green light.


At first I was playing around with some mobile-friendly low-poly models. The idea was to create an escape room game, perhaps like a tower with 101 floors in a strange Myst like atmosphere. Perhaps after a few hours I just wasn't feeling it. I do not have a passion for escape room games, beyond a few I played recently.


So I attached some of the wonderful screen effects that I have available, just to see possibilities.

I question if a "Zombie Guard 2" could take place in these environments. Or in the least, these environments could be utilized as a replacement for menu screens for options like weapon and character improvements. A safe house could be upgraded, and visually seen in these settings.

Possibly, I may include multiplayer. This was a highly requested feature which despite being a technical challenge, would delight many players and increase the number of downloads through word of mouth.

Thursday, September 5, 2019

Gem Heroes

The new game has been titled "Gem Heroes" and is in closed beta. I will release it to the public after a few more tests and adjustments.







.