
seen from United States
seen from Malaysia
seen from Iraq

seen from Germany

seen from Australia
seen from United States
seen from Belarus
seen from Germany
seen from Israel
seen from United Kingdom
seen from France

seen from Russia
seen from United States
seen from Italy

seen from Malaysia

seen from China
seen from Germany

seen from Malaysia
seen from Germany

seen from Spain
In an earlier update, I talked about the End of Times boss battle, showing off the current design and implementation. As I continued to develop it, I quickly came to realize the boss battle was falling into all of the bad boss battle tropes. Things like inverting spatial control by having the boss attack from behind, suddenly introducing all new game rules and being overly bullet spongy. Mainly though, the boss battle wasn't testing all of the skills and mechanics the player spent all this time learning and mastering. That's why I decided to scrap the original idea completely and come up with something new. The boss battle is now being designed to almost feel like a bot Versus match. The boss will attack, and most importantly defend itself, in the same ways that the player can. This is forcing the player to really master his shotgun & melee attacks, shield blocking and quick movement to avoid attacks. Here is some new concept art for the new boss. The Devil takes many forms!
And here's a sneak peak of what he looks like in-game.
All new boss artwork credit goes to Mike Stanton.
Demons With Shotguns tries to do Towerfall-with shotguns and shields instead of bows and arrows. Also, replace screen-wrapping with chunky decapitations. Shotguns require that you get up close-and nasty. Though be wary: getting within range of an opponent tells them, "Hey it's time to use your shield." Shields that deflect your blast and turn you [...]
Demons with...Swords?
Time to give a development check-in, yeah? Work for the epic End of Times boss battle is fully underway!
This is just a glimpse into what's in store for the boss battle, but as you can see it involves a giant bad guy with big swords. We've actually decided to animate the boss a bit differently then all the other sprites in the game, which were done via frame animation (think a flipbook of still images played back really fast to give the illusion of movement). For the boss, we decided to do skeleton animation, using the excellent Spine software. Given the large size of the boss, this allows us to create new animations without having to pixel them by hand, which is extremely labor intensive. Instead, we can rig together all of the limbs of the boss and create animations by moving each limb (connected together via a skeleton of bones), frame by frame. Here's an attack animation being created in Spine.
The boss battle is going to take some time to develop and get something worthy of being pushed out to everyone, so bare with us as we go quiet for a few weeks! As always, please let us know of any bugs you may come across in the forums and we'll prioritize them. Same goes for any type of feedback on the current build.
Crushed & spike impalement. Ouch.
Finding Purpose in War
With the foundation of End of Times fully in place, I can start working on improving the enemy AI. To start, I'll be working on improving the pathfinding on enemies so that they can travel to a particular spot in a arena, rather then roam randomly. Currently, all enemy AI have a simple "bump and switch" algorithm defining how they move. What this means is, an enemy will roam in a particular direction until they detect a collision, or a ledge, in which case they'll simply turn around. While this is serviceable, and many arena shooters use this type of enemy AI, I'd like the player to face off against smarter, more worthy adversaries! To allow enemies to traverse a arena more fully (no more be containing to a single area/platform), I started to build a network of nodes throughout the arena. These nodes will tell enemies where they can go, and they even serve as jump pads, telling an enemy that they can jump and how high they need to jump.
Ignore the red numbers, those are enemy spawn points and not related to pathfinding. Instead we're interested in the yellow dots and lines connecting them. Currently, the lines don't do serve any purpose (they will soon, more on that later!). At this iteration, whenever an enemy collides with one of the yellow dots (our Nodes), it will tell the enemy three things, the speed at which they can continue to travel at (each node has a left speed and right speed value), and a value to let the enemy know they should jump, and by how much can they jump. At this point, the enemy doesn't have any goals or desires to travel to any particular node in the arena, they are still roaming somewhat aimlessly, but now the enemy can just jump around to other platforms and be steered in a particular direction. This is good a start! But we can do better. What if we want the enemy to travel to a particular node or object within the arena, say hunt our player? One way of achieving that is by simply telling the enemy which direction the goal is relative to themselves (is the object to my left, or right?). Thankfully, we can easily calculate that using vector dot product formula. Depending on the angle of the dot product, we'll know if the object is the left, or right, telling the enemy AI which direction to travel in.
In the GIF above, the enemy starts to travel towards the direction of the player once he has spawned, only to be treated to a buck shot. Poor Nomed. He had it coming though. All done! We have our enemy hunting a particular goal in a arena, using nodes to steer them in the right direction. Well, not quite. There's still two things we need to consider at this point. What if there are multiple objects the enemy could care about? How do we select which one is most desirable? And second, right now, there's nothing telling the enemy which path is best to travel. There's still no real pathfinding going on. Let's address the first issue, determining which object is most desirable to head towards. What if we could have our nodes rate their current desirability, based on several variables such as is if the player or a particular game object near by, and allow enemies select the most desirable node to travel to?
And that's exactly what I did! In the above GIF, the large yellow circles for each node is the area in which a node will check to see if there is any particular object they care about is near by (right now, just the player). The number within the circles is the nodes current desirability rating. Each nodes as a default desirability of 100. Once a player comes within range of the node, it will add 300 to it, for a total desirability rating of 400. When the player leaves the node area, it'll go back to 100. The enemy can now search through all the nodes and determine which one has the highest desirability rating, and thus is the most desirable to travel to. This lays a nice foundation to give enemies a system to more smartly traverse the arena and achieve a particular goal. We still haven't addressed our pathfinding requirement. At this point, enemies don't follow a particular path to a node, per say. They are still just moving left or right until a node tell them to jump (actually, they'll only jump if their current target node is above them), or their target node changes desirability and heads in that general direction. This does work well, but there are some edge cases where this breaks and a more robust system is need (in the GIF above, if the most desirable node is in the platforms above only reached by portals, the enemy doesn't know how to get there properly yet). More astute readers are probably screaming "A*! A*! A*!". That's probably going to be the next step in the system. So this is the current state of the enemy AI in Demons with Shotguns. The short term goal is to have smarter, more worthy enemies to face off against. The long term goal, possibly introducing bots into the Versus game modes. We'll see how things develop!
Build 0.2.5
This build contains significant changes to the End of Times enemy wave controller logic. Originally the wave controller was defined by hand designed wave definition files, but now the controller is completely randomized, with specific logic to make the randomization “smart”. This system will continually be tuned and balanced.
This build also introduce two more End of Times arenas, with arena unlocking progression; note the final arena (planned boss battle) is not yet complete and thus not unlockable at this point.
Summary of changes (EoT = End of Times, Vs = Versus, G = General):
EoT: Hell and Church End of Time arenas
EoT: Arena unlocking; Watertower Terror now needs to be unlocked, along with the other arenas
EoT: Save/Load system for arena unlocking progression, including Steam Cloud Save
EoT: Randomized enemy wave controller
EoT: Improved Nomed attack sound effects
EoT: Improved Hellhound AI
EoT: Number of player lives in End of Times is displayed above each player head
Vs: Player respawn time now customizable via the Match Settings menu; for design reasons 2 seconds is the lowest possible setting
EoT/Vs: Adjusted Sands of Time tarot card; time doesn’t slow down as much as previously
EoT/Vs: Adjusted Possessed tarot card; doesn’t auto fire, but instead just increases fire rate
EoT/Vs: Bug fix with holy water grenades colliding with lantern/lamp wires
EoT/Vs: Bug fix with cages, lanterns, lamps and hanging rocks to break with collision with any layer
G: Other miscellaneous bug fixes and improvements
G: Redesigned menu system, with improved usability; can now easily hold down button to scroll through multiple selections
I NEEDS A HUG! HUG ME!! *poof*