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 it 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.







.

Sunday, August 18, 2019

Gameplay Video

Things are coming together. I'm able to play through the entire game with only a few outstanding issues. I'm fairly satisfied with the difficulty curve of the game, now to just balance individual skills and weapons.

Here is a gameplay video of all four boss fights:


Gems on the board get swapped spontaneously because of special hats worn by the heroes. For example, the pirate's hat changes 1-2 gems to coins each time damage is received.

The fourth and final boss may seem weak, but that scythe attack does random damage so luck plays a role. Plus, only two heroes can be part of this battle, unless the war banner trinket is used for an additional hero. The tortoise is very useful here, because of the ability to temporarily polymorph any enemy into a harmless sheep.

A general strategy is to pick and choose heroes, hats, and weapons that turn gems into a specific type to feed a particular hero for special attacks. To avoid monotony, some stages feature enemies that are immune to certain damage. However, the jagged blade that removes all armor of an enemy will eventually allow any strategy to prevail.

Saturday, August 17, 2019

Single-frame Bugs

The past couple weeks have been very busy. There have been many changes and bug fixes. Changing one thing often can break or require a necessary design change with another feature.

For example jagged blade special gems destroy all armor of a random enemy, which nullifies the usefulness of the Tiger's ability to destroy armor of a targeted creature. I opted to keep the jagged blade, and change this Tiger's skill to something else.


The code that evaluates the board for matches was revised a couple times too. There are many ways gems on the board can be manipulated, so I had to insert the proper checks to ensure they can be hijacked and controlled by some other routine. Otherwise, bugs can occur where gems overlap during complex chain reactions, some of which are difficult to test because it all can occur in a single frame where order of execution matters.

There was also a very rare bug where bunnies and enemies in the main screen were not moving correctly. I think I narrowed this down to a single-frame bug, where a certain component for movement being destroyed was attempting to be reused for new behavior. It would get destroyed anyways, causing these creatures to stay put. This is potentially fixed, by checking if the component is being destroyed which I flag manually. Destroying a component at least sets enabled to false immediately, which can be an alternative way to check but can provide false positives of being destroyed.

The rest of the fixes were easy and straight forward, like updating the user interfaces. There are still bugs, but at least I have been able to play through the entire game on fast-forward mode, while adjusting the difficulty curves.

I really admire how references to GameObjects in Unity are set to null automatically. I strongly prefer this over the other approach where objects stay alive until all references are set to null, which can cause annoying memory leaks. However, the GameObjects are not set to null immediately, so a proper check is to check if null, and, use the overridden Equals method. This detail can be very important in some cases.

Thursday, August 1, 2019

Tutorial

...Oh yeah, I needed an introductory tutorial too. This was relatively easy. I just had to be careful in preventing the player from tapping the wrong objects or triggering unwanted events. It must work 100% correctly, because these are the first two minutes of the game and first impressions can matter.


The tortoise and tiger can only be unlocked as an in-app purchase, so this tutorial also serves as a demonstration of two of the strongest heroes.

I kept this tutorial brief and included a skip button. Other important features will be shown as tips during the first few battles. For example, double tapping an enemy will make it the primary target, or, tap and holding any creature will reveal important details.

Hard work everyday for August. I'm in crunch mode to finish this. It is a priority, as I bring everything together and create a trailer video to present to potential publishers.

I already have art, music, and content licensed for my 18th game. I'm going to continue using Unity for tech, as there is no justifiable reason to switch.

Sunday, July 28, 2019

Premium Content

I decorated the premium content section. This premium content chest actually is something unlocked in the game at around stage 12. All of these options are purchasable with real money.

Many of these pieces move and the starter pack has a sparkling effect to highlight it. The starter pack offers the best value at a reasonable price. The Tiger and Tortoise both are premium heroes that can only be purchased. They are some of the strongest heroes too, and very suitable against bosses.


This completes all the core features of the game. Now just small modifications, difficulty adjustments, and dozens of bug fixes here on out.

Friday, July 26, 2019

Synty Sale

Synty has another sale on minimal 3D models for Unity and Unreal. This sale occurred at an opportune moment because just a week ago these caught my eye as I was browsing the Unity asset store.


Low poly models have a particular look that I admire. Stylish, modern, and optimal for mobile devices. I plan to license all of these packs, even if I do not ever use certain ones. There are unlimited possibilities, and having these on hand to drag-and-drop will allow new ideas to flourish.

Regardless of the assets I use (or create) I am not inclined to make another RPG or survival shooter for my 18th project. Lately, simulation, puzzle, or physics interests me more. I would like to use certain audio and music, plus lighting and color tones through screen effects to emphasize mood.

Saturday, July 20, 2019

Consumables and Survival

Here are consumables; each potion provides a temporary bonus for one hour. I did not necessarily need this feature, but I wanted extra rewards to give out for completing missions and opening daily reward boxes. Plus, I needed more things available to buy in the premium content section.


The key is used to play the treasure hunt minigame for more rewards such as potions, coins, skills, weapons, trinkets, hats, and even additional heroes.


To add some variety, some stages are survival based. Enemies will just keep coming back, so the objective is to survive for a specific number of turns. I coded this quickly while authoring these 50 stages.

The game will continue into nightmare and hell difficulties beyond the 50th stage. It all just simply gets harder. 

Sunday, July 14, 2019

Daily Rewards

I went with a really simple approach for daily rewards. One can be chosen every 24 hours, which can give coins, consumables, or a new item.

I did not bother to prevent cheating, where users can change their system clock to reduce the countdown from the next reward; I only prevent the bug of the time difference surpassing 24 hours. Games get hacked and redistributed either way, regardless of counter-measures.

Actually each of these boxes can grant the same reward, assuming it was tapped at a specific moment down to the millisecond; time determines the random seed to determine the contents. There is no predetermined reward contained in each of these boxes, it is determined based on the time it was opened.


I prefer to at least give the illusion of choice, by offering an array of options to choose from.

Super Mario 3 does something similar. There is a bonus stage where Toad offers three chests to choose from. According to this source, the actual reward is determined by the time it was opened, regardless of the chest chosen.


Sorry for destroying the magic behind this...

Saturday, July 13, 2019

Polymorph!

The tortoise and tiger heroes each have been programmed.

The tortoise is capable of temporarily polymorphing enemies (including bosses), creating an ice comet that damages all enemies, and energizing all heroes to cast their special skills. A very supportive hero.

The ice comet is unstable damage, meaning it does between one to maximum damage randomly. The fox can create a fire comet, but is guaranteed to do specific damage. I want to discourage players from using the tortoise for damage over supportive purposes.


The tiger is like a paladin, able to fully heal a hero, burn all armor of an enemy (unless immune), and deliver a strong melee fire attack despite hurting himself/herself in the process.

There are eight heroes, with five weapons and three skills each (64 things total). Also there are nineteen enemies, three bosses, a dozen trinkets, a dozen special gems, and eighteen hats.

...This is sufficient. I am ready to put this all together.

I'm now working on the free and premium content sections. Daily rewards, premium content, and other things like this.