Bigosaur blog

Block Buster Billy - what makes a good puzzle game

I have been toying with an idea for a puzzle game for a while. I have released a bunch of puzzle games so far, with varied success. Rogue Bit has been the most polished product so far, but it's a game for a very niche audience of programmers and computer hardware enthusiasts. Seeders has been a hit and miss. It has awesome puzzles, but Box2D physics is somewhat inconsistent, so you often figure out a way to solve it and then spent of lot of time trying to execute. It removed and changed a lot of those in the Seeders Puzzle Reboot version, but it still isn't perfect. The Game is ON was a very fun game to make, but it doesn't seem so fun to play. The actual fun was coming up with a scene that fits the idiom, but trying to discover it while playing just doesn't feel that good.'

I took all these lessons from the past experience when making Billy. I wanted a game that has tight controls, so I picked the turn-based approach. The puzzles range from very easy, to very hard. Similar to Baba Is You, you can play with the blocks until something 'clicks' and you figure it out.

The game is powered by the same engine I used for Rogue Bit, so it scales the graphics nicely to 4K monitors and beyond. The fact that the mechanics are based on numbers and basic math, makes it translatable to every language. The only thing that really needs translation are the level names, but they aren't really that important to the gameplay as they rarely give a hint. Most of the time, the player has all the tools and is left to discover the solution on their own. I made a first level set which teaches you the ropes, so you aren't lost in a tough puzzle immediately.

Making this game was also fun for me. I had a very interesting approach for this one: I would get some basic idea, try to build a level from that and then try to solve it. When it was too easy, I would add stuff that make it harder - to the point where I felt like it was unsolvable. Then I would try to solve the level for 30-60 minutes, to see if I can come up with some original way. If I manage to do it, that's a perfect level. Of course, sometimes it really is impossible and I have to loosen some of the restrictions.

While developing the levels, I would often notice alternate solutions that require completely different approach. In such cases, I would split the level into two levels - and then edit each one to make sure either of the two approaches only work in one of the levels. I love that feelling when a player comes into the level thinking 'Oh, I know this' and then get stumped when they see that a single block is missing or something has moved by one tile and it requires a completely different way of solving.

I'm done with puzzles involving equations, inequations, adding and subtractions. I plan to add multiplication, and possibly variables and have about 120-150 levels for the final game. I plan to release on Steam and Nintendo Switch. Maybe mobile platforms as well? Not sure about that yet.

Feedback & Share Bigosaur, 2022-06-20

CM:TS - Scenario objectives

As all the base game mechanics are implemented, I'm starting to add different stories for each scenario. In one of those, you need to research quantum computing and build a superior AI.

In another one, you have to build a solar plant and become carbon neutral while also helping your local community.

You can also launch your own crypto currency.

Or run your own crypto currency exchange market.

Feedback & Share Bigosaur, 2022-03-29

CM:TS - Set mining for the whole rack

I have started the beta testing with some players recently and the most common feature request was being able to set mining for the whole rack. I tried a couple of different iterations for this feature and settled on right-clicking any piece of hardware inside the rack, for example, a GPU - and then setting the mining target for all hardware of that type. For example, you can set all GPUs to mine Ehtereum, all CPUs to mine Monero, all FPGAs to mine Litecoin.

The same option works for overclocking as well.

Feedback & Share Bigosaur, 2022-02-24

CM:TS - Heat, Noise and Dust simulation

This is the hardest part of the game to make. Getting it right while also making it efficient is tricky and it took me a couple of tries to get it right.

The noise is pretty much straightforward once you learn how decibels work. Heat is another issue. It starts with electricity use and natural dissipation and then you have to simulate spreading and respect the fan directions. Additionally, I'm taking outside temperature into account because you can play the game in different regions. For example, the base temperature is higher in Africa. In the end, you also have cooling with air conditioners to spice it up a notch.

My initial plan was to also simulate day and night cycle, but as I played the game I noticed that I run it a full speed a lot. That's one day of game time in 3 seconds of real time. It makes the lights flicker so bad that I have turned it off and scrapped the idea.

Feedback & Share Bigosaur, 2022-02-11

CM:TS - Graphics perfected

I have completed a lot of graphics, including various pieces of hardware and the icons of item categories.

Feedback & Share Bigosaur, 2022-01-11

CM:TS - Phone

Phone will be used for various in game events. You will get messages from NPCs, pay monthly bills, read the news related to market and new hardware, get alerts from your employees, get a bank loan. The make it realistic, you can also play a game on your phone.

Each scenario will have a story that plays out as you interact with various NPC characters via phone messages. Their quests will include mining, trading, research and more.

Feedback & Share Bigosaur, 2022-01-10

CM:TS - Tiles

There will be about 10 different floor tiles with different prices and dust factor. Dust plays a huge role in the game, as having high dust makes your equipment wear out faster, mostly due to fans breaking resulting in silicon overheating. Keeping dust low will be expensive. You will have to buy and install more expensive floors and/or use enclosed racks and PC cases with filters.

Each facility you rent or buy will have different starting floors which affect the price. So, you will be able to buy a room with concrete and replace all the tiles.

Feedback & Share Bigosaur, 2022-01-06

CM:TS - Trade

You can trade crypto currency and watch the market trends. This feature was something I was fearful of, but it turned out pretty straightforward to make. As I learned more about he actual graphs used on the stock market, I figured that it could be simplified a lot as players don't really need all that information and would probably be confusing to many. So, you only have the current price and daily movement.

The game uses real market data, which includes prices, hash rates and mining block rewards. I was fearful of this, but it turns out that it posses a pretty good challenge as the real market had its ups and downs over the years.

For trading, I have decided to scrap the spread and simply allow to always transact for 100k coins. If you buy or sell a lot, the price will move. To prevent infinite money with instant pump and dump, I have added a 6% transaction fee. You will be able to lower this by running your own exchange in one of the scenarios.

Feedback & Share Bigosaur, 2021-12-02

CM:TS - Research

You might wonder, what would all those people do. Well, once they finish setting up the hardware, it's mostly a waiting game. So, I added research. People can perfect their skills, which broadens the types of tasks you can give them.

They can also research company technologies. These go into your company IP, and you can even have teams of multiple employees researching the same thing together to get it done faster. This way you can beat the market, for example by researching advanced mining hardware, or getting better solar panels before eveyone else.

Also, most game scenarios are tied to some type of research.

Feedback & Share Bigosaur, 2021-11-12

CM:TS - Human AI

The next step for humans was AI. I have designed a nice priority based system where people would decided what to do based on priorities you set. For example, you might set someone to just install operating system, another person to do research and not care about anything else, etc.

And then I tested with dozens of them in the same room. It worked surprisingly well.

Feedback & Share Bigosaur, 2021-11-12

CM:TS - Humans

The last two months were spent adding humans and their animations. The game allows for full customization of every human, which posed an interesting problem as each body part is drawn as a separate layer. This worked fine in Son of a Witch were you had 20-30 characters on the screen at a time, but in CMTS I want to allow for 100-200 employees in one room. I tried with 100 and the performance dropped significantly.

So I spent some time to write a new layer based draw code that requires a fraction of CPU time then the old one. The new code had some scaling-related bugs as you can see on the screenshot above, but it's all fixed now.

Feedback & Share Bigosaur, 2021-10-18

CM:TS - PC build improvements

I made many improvements to the build system. You can now right-click to automatically slot items in appropriate slots. You can also click an empty slot to switch to the appropriate shop section.

I also spent some time to design universal input handling system, where every possible mouse/keyboard action is displayed at the bottom of the screen all the time. It's very prominent now, but I fear players might ignore it when the screen gets too busy with other stuff.

Feedback & Share Bigosaur, 2021-08-06

CM:TS - Shopping cart

The most basic versio of the shopping cart is in the game. You can also pre-build the PC from the parts in the shop and then buy multiple pieces of the same. I will also add an option to save the current PC build, so you can recall it to buy it or edit if further.

Feedback & Share Bigosaur, 2021-07-12

CM:TS - Building mining rigs

In the initial versions I planned for PC building to be menu based, but then I contemplated that the game would be cool if you could actually build by moving components into their slots. It requires much more graphics, but I feel like it was worth it.

Drawing pixel art for computer components is actually very interesting. I even made animation for the RGB fans using Aseprite.

Feedback & Share Bigosaur, 2021-06-01

CM:TS - Shop and storage

To allow players to have multiple locations, I have added a separate storege area (a garage) that just shows a list of items. It's like a staging area where all the items you buy in the shop arrive, and you can then assign them to different facilities.

Feedback & Share Bigosaur, 2021-05-15

CM:TS - Rack and PC graphics

My isometric engine after a month of work:

I have decided to go with pixel art, as I can draw that much faster. The perspective is isometric, because it looks really good. There some games I love like Forager that have regular top-down graphics, but isometric seems to be more common for tycoon type of games as it gives a good sense of third dimension.

I spend about a day adding isometric support to my engine, and about a week fixing the bugs in that code. Especially draw order with stacked items can be tricky:

The rest of the time was spent drawing stuff like racks, PCs, shelves and writing the code that allows you to move them around, stack them on top of each other or inside the racks, etc.

Feedback & Share Bigosaur, 2021-05-05

CM:TS - Prototyping

The main selling point of the game will be running big data centers with a lot of hardware. Because of this, the simulation has to be very well optimized and I'm going to use a lot of RAM caching data to make it run really smooth.

When I started this project, I didn't know much about the mining process, so I had to learn a lot to make the game as realistic as possible.

I decided to use the browser to prototype, as I wasn't sure what the user interface would even look like. Getting the backend logic up and running is the first step.

Feedback & Share Bigosaur, 2021-03-13

Crypto Miner Tycoon Simulator

I love to start my projects with a nice logo and main menu screen. It gets me motivated:

I decided it's time to start making a new game. I'm looking at my strengths and weaknesses, and making good quality art is definitely the most time consuming. On the other side, programming is my strong side and it feels fun even when I have some hard problems to crack.

Because of this, I'm picking a project that's heavy on programming, optimizing code, etc. and doesn't require a lot of graphics. Still, there will be a decent amount of pixel art to draw.

It will be a management/tycoon type of game focusing on crypto currency mining business: building rigs, placing racks, managing cooling, dust, noise in your data centers, hiring people to help you, etc. The idea is to go back in history and start from year 2010. and see what it felt like to be mining back then.

I researched Steam a bit, and there are a couple of failed projects with this theme, and they still seem to have sold a decent number of copies. So, it looks like the demand is there and players really want to play this type of game.

That's the main reason why many of these development blog posts will feel backdated - wanted to keep the project secret for a long time.

I'm going to reuse the same game engine I was using for Son of a Witch, Rogue Bit and my other games. It's a very flexible C++ engine, which will allow me to add any performance critical code easily. I plan to support thousands of mining units without drop in performance.

Feedback & Share Bigosaur, 2021-03-10

Son of a Witch Demon Hunter Update

This MEGA update is a free DLC-sized upgrade to the base Son of a Witch game. The update will be free for existing players, but the game price is likely to go up after this is released.

1. Heroes

  • new hero: Lich. Undead, uses health energy to cast spells instead of mana. Can heal with mana gaining items or pets.
  • Rogue Hero starts with pickpocket and speed buff effect
  • Rogue hero magic key costs 1 mana, and can unlock boss room doors from the outside

2. Levels:

  • new level Hell with new music, thrist effect and 26 new room layouts
  • special room: minotaur labyrinth, gives access to the Lich hero
  • special room: pentagram, needs donation of mana, health rune, gold and king scepter to enter hell
  • special room: forest in ice level where you play hide and seek with Amanda
  • special room: prison surgeon where you can donate health for gold
  • special room: knife avoiding twins challenge in the desert
  • special room: treasure challenge with multiple bushidos in the desert
  • special room: fishing with bow and arrows in hell
  • new object: Crystal Sphere - protects demonic enemies and blocks magic scrolls until destroyed
  • new object: Lava Pit - petrifies players standing over it when it spits lava
  • new object: Minotaur Statue - teleport to the start of the level
  • new object: Bag Statue - players can now transfer gold coins amongst each other
  • hell shops have new type of protection and require mana to buy items
  • new treasure room in the catacombs and the desert
  • required distance for the second jump in the Long Jump quest reduced to 80
  • in hard mode the evil princess has become the queen and has strong guard in the throne room

3. Bosses:

  • New boss: Demon Legion - big demons spawning unless you kill them all once
  • New boss: Matilda - a huge witch that creates traps for players
  • New boss. Ghost of Rhadamanthus - shoots many orbs and buffs his minions with random effects
  • New boss: Demon Lord - fight in active volcano arena with lava petrifying players
  • Ice dragon sometimes shows up on the battlements
  • Elephant boss knocks down units when walking across the screen

4. Enemies:

  • New: Imp - standard melee warrior, immune to fire and petrification
  • New: Familiar - infernal mage can block your mana usage
  • New: Fiend - quick with poisoned swordes and abilit to teleport behind your back
  • New: Succubuss - shoots orbs and cheers at players with a beer, reversing their controls
  • Newy: Efreet - flies around and spits very flammable fireballs
  • enemies in the old catacombs no longer have huge HP in hard mode
  • Bandits in the dungeon sometimes carry flaming swords

5. Weapons

  • new weapon: Spellbinder - shoot orbs and block enemy mana usage
  • new weapon: Magic Crossbow - shoots arrows and creates gold arrows using mana
  • new weapon: Blacksmith's Hammer - throw at enemies and smelt weapons into shields
  • new weapon: Overlord Staff - give random positive effects to self and allies
  • new weapon: Blade of Light - triple damage vs undead and demons
  • new weapon: Hypnosis Staff - turn non-boss enemies against each other
  • new weapon: Brutus Gladius - a sword with high backstab damage
  • Increased combo timer for the Barbarian Axe to 3 seconds
  • Increased base damage for Ice Bow to 50

6. Items

  • new item: Homing orbs - chance for magic orbs to auto-target enemies
  • mew item: Magic Ice Bottle - use mana to create ice arrows
  • new item: Four-leaf Clover - increased double damage chance
  • new item: Holy Grail - Speed UP, Health UP, Magic/melee/archery UP
  • new item: Faustian Ring - increase melee/magic/archery for 20 health
  • new item: Minotaur Figurine - teleport to avoid death
  • new item: Honey Jar - temporary speed up when you get hit
  • new item: Stone Cross - double damage vs demons and undead
  • new item: Hourglass - speed down, melee/archery/magic increase
  • new item: Chili Pepper - enemies burn when they hit you
  • new item: Wizard's Amulet - get 1 extra mana when entering new rooms
  • new item: Claw Hammer - get coins when barrels break
  • new item: Cooper's Ring - get mana when barrels break
  • new item: Phylira's Necklace - break barrels to get armor points
  • new item: wine - reduced thirst effect
  • new item: Lich Ring - full heal after boss fight
  • new item: Scales of Balance - increased damage when hungry, thristy or poisoned
  • new item: pair of heart-shaped earrings - double healing effects
  • reduced mana cost for Rogue's Magic Keyring to 1 so you can sneak around the levels freely
  • Silver coin teleport out of old catacombs is now allowed
  • Alchemist's Visor now protects from Santa's exploding presents as well

7. Potions

  • New potion: Blood is Magic - lose all HP, get 3 mana
  • New potion: Blood donor - turns current HP into gold
  • New potion: Ironclad - increased damage scaling with armor
  • Extravagance spends coins only when you enter new rooms
  • Pickpocket effect now gives coins on room entry
  • Bugfix: Dragonfire potion would remove arrow damage multiplying upgrades

8. Magic Scrolls

  • New scroll: Summon Demon - all enemies attack it at once
  • New scroll: Mark of the Beast - everyone loses 666 HP
  • New scroll: Hypnotize Minions - enemies attack each other
  • Added more units and bosses to Gamble scroll rotation.
  • Duplicating weapons now clones damage, range, arrow speed upgrades as well.

9. Pets:

  • New pet: Koala - a free item in every shop
  • New pet: Panda - fetches gold coins and food
  • New pet: Skunk - sets enemies on fire
  • New pet: Sabertooth Tiger - gives +1 shield after every battle
  • New pet: Squid - gives random positive effect after every battle
  • Whale pet gives you a Kindling upgrade once a campfire stops burning
  • Penguin pet no longer tries to attack enemies who have freeze immunity
  • Snake pet no longer attacks enemies who have poison immunity

10. Other new features:

  • new main menu graphics and music
  • 27 new achievements
  • You can now hold the drop button to drop the whole stack of items (arrows, keys, etc.)
  • tracking win/lose streak for regular game and hard mode.
  • allow entering any text as level generator seed (it gets converted into valid seed)
  • now you can drop gold to double it with a scroll, or heal via gold diet
  • Tar of Akhal picture shown in the final mom dialogue
  • show the exact speed increase over speed buff status icon
  • added option to reset all controllers to default settings
  • allow binding Stomp attack to a separate button
  • optional setting to shoot orbs using the regular attack button

11. Fixes:

  • Allowed using ranged weapons for the Goliath achievement
  • fixed Paladin to do double damage to undead with ranged weapons as well
  • fixed a bug where ranged enemies would try to hit the Turtle pet endlessly
  • fixed a bug when some monsters would get stuck attacking Turtle pet forever
  • fixed a bug where the dialogue would pop up without key/button to continue the talk.
  • fixed a bug where Undead Archer was unable to animate other undead sometimes
  • fixed a bug with raised undead Archers always shooting arrows to the left
  • prevent players getting stuck when hedgehog pet blocks the rolling spiked balls
  • Vampire Slayer NPC now says Thank you when her quest is done
  • achievement animations keeps working if you go from game into the main menu
  • prevent raising petrified undead
  • remove Confusion and Peace effect when undead unit dies
  • added sound effect when some action fails (no money to buy stuff, etc.)
  • imprved camera controls and thus enabled Baseball Quest for players with screens below 1680x900 pixels
  • imprved camera controls and thus enabled Hornet Quest for players with 720p screens
  • Message text for some actions would be hidden behind player status effects. Moved them above when status effects icon is visible.
  • added statue players can use to teleport if they get stuck with dead player in co-op (gold shop, alchemist quest, treasure rooms, etc.)
  • The final portal now shows that hell level is beyond instead of ice level
  • allow re-binding strong and special attack to the same button
  • fixed problem with minimizing game window on macOS in fullscreen mode

Steam version (PC,Mac,Linux) specific changes:

  • added Steam leaderboard for the Endless arena
  • you can now see the daily challenge rankings for friends only
  • when some actions failed for a network guest, the reason would show on network host screen instead
  • fixed netcode bug where some actions would fail without any notice text
  • just minimize instead of closing the game when opening game's Steam page
  • prevent mouse clicks when way outside of menu items in the main menu
  • press F1 twice to see the progress for achievement counters

Nintendo Switch specific changes:

  • added Daily Challenge for Nintendo Switch port
  • enabled CHALLENGER achievement for Switch.
  • greately reduced number of undead in endless arena in Switch port for performance reasons

Have fun playing!

Feedback & Share Bigosaur, 2021-01-19

How scoring works in Son of a Witch daily challenge

One of the reasons to come back to Son of a Witch every day, is the daily challenge. All players worldwide get the same dungeon layout with the same enemies. Only the weapon/item drops depend on the hero class.

One of the achievements is to win 100000 points in the daily challenge, so I decided to write a short guide how the points are given:

Enter hell 10000
Complete a level and enter the next one 5000
Enter a new room 300
Use a scroll 200
Adopt a pet 100
Collect coins (incl. when you eat them) 5
Earn gold any other way (Magic Chest, etc.)             base amount of gold (not increased by avarice)
Drink a potion 50
Activate a bomb 50
Using keys to unlock chests and doors 50
Fox pet unlocking chests 50

If more players are playing in a co-op game, only points collected by the first play count. So make sure you let this player collect all the gold, use the bombs and keys, etc. Others are just there to make the fight easier, not steal the points.

By the way, I decided to include the daily challenge in Switch version as well. Since it doesn't have online competition, the rankings will show your best runs with corresponding dates instead.

Feedback & Share Bigosaur, 2021-01-06

Generator Puzzle - Seeders Puzzle Reboot

There's a generator that powers all the teleports on level 5. Seeder robots are using the teleports to invade other planets.

To stop them, you need to shut down the generator. It's done by rotating the symbols on the dial until they go from 0 to 11 clockwise. Seeders are using a 4-digit number system:

So, the final position on the dial should look like this:

Puzzle mechanics:

The trick to this puzzle is to use the middle section to set up the pieces on the opposite sides and then slide them into their position. Here's an example how to set pieces 0 and 6 (i.e. and ) together.

Once two pieces are in place, set up the next pair (1 and 7) and slide them into their position (next slot clockwise). Repeat until the last pair to complete the puzzle.

Feedback & Share Bigosaur, 2020-11-24

The Demons are coming

The time for next BIG update to Son of a Witch is getting close. This will be the biggest update so far, with new level (Hell), new enemy faction (Demons), new unlockable heroes, new weapons and items, new pets and dozens of other changes.

The plan is for Hell to be an alternate path you can take through the game and reach an alternative ending where you destroy the Tar of Akhal forever.

The beta test version should be ready for translators by the end of January 2021.

Feedback & Share Bigosaur, 2020-10-27

The Game is ON graphics

Here's an example of a solved puzzle, so you can see how it works:

By solving the puzzles, you get jigsaw pieces. Collect enough pieces to unlock extra levels. You can also get jigsaw pieces by solving the puzzles in least possible moves and by finding pieces hidden in levels.

Some are hidden behind other objects or produced after you manipulate buttons or other things on the screen.

More details on the Steam page: https://store.steampowered.com/app/1386280/

Feedback & Share Bigosaur, 2020-08-05

The Game is ON

I'm making a new game. It's features cool pixel graphics and wacky puzzles where you move stuff around until you discover a common phrase or idiom from English language:

The Game is On

The game will be available on Nintendo Switch and Steam. Check the Steam store page for details and wishlist it now:

Feedback & Share Bigosaur, 2020-08-05

Dark World Update for Windmill Kings

Here's some new content for Windmill Kings:

This is the continuation of the main game story. After you deal with the black wizard and restore the order in the kingdom, you may think that everything is done.

But no. There are more black wizards in the cult and they decided to strike back. They captured all your allies and cast a spell on you that made you forget all the magic spells. Your friends are kept in dungeons and fortresses deep inside the underworld.

Explore the Dark World, rescue your allies and re-learn the secrets of magic before you take on hordes of new enemy types.

The black wizards have somewhat different minions. They are slightly stronger than your army and don't require special buildings to upgrade. The battles in this mode will test every ounce of strategy you can muster.

The Steam version of the game will launch in January 2020 with this update included. Nintendo Switch version will be updated in the meantime, I hope mid-December if all goes well.

Feedback & Share Bigosaur, 2019-11-20

Windmill Kings

Here's a project I have been working on for some time. It's a real time strategy game for 1 or 2 players focusing on quick battles.

The Story

Once upon a time, there was a king. After a glitched teleport spell created a clone, there were two kings. The evil black wizard betrayed the real king and the clone took over the throne. Help the real king rally the troops and get his castle back.

Single Player Campaign

The game has two modes. In campaign mode, you play as the real king who starts with a small amount of gold and an army of knights. You roam around the map and fight different enemies to convince them to join your forces: Archers, Healers, Ninjas, Champions, etc. You can also conquer windmills to get more gold to finance your army; and mage schools which provide you with useful spells like Meteor Shower, Freeze Enemies, Earthquake and Summon Giants. The campaign ends with an epic battle where you use all your forces and magic to defeat the clone king and recapture the castle.

2-player versus game

In versus mode, two players play a battle with all the units and magic unlocked. You can pick the size of the battle, starting with a small skirmish with just two towers and ending with a total war with two castles on each side. You can also play this mode single player versus computer.

Gameplay

The battles happen in real time. You pick which troops to create and send them to destroy the enemy fortress while defending your own.

The game offers a variety of tactics: Send knights and champions to attack the enemies in close combat. Archers are weak, but attack from distance, so you put archers and marksmen behind the knights. Afterwards you can recruit healers and clerics who can fight, but also heal other units. And you can add spies and ninjas who sneak past enemy lines and demolish their buildings. And finally there are giants who are hard to stop, but you can use some magic to make it easier. All units have an upgraded variant that requires that you construct a building during battle. You can also demolish enemy buildings to prevent them from recruiting upgraded armies.

The computer AI is completely transparent - you can see how much gold and magic points it has and what exactly is it doing. This makes every battle feel fair.

There are two difficulty settings: Easy mode for casual players and kids, and Normal mode for players who are experienced with real time strategy games.

Feedback & Share Bigosaur, 2019-09-24

Seeders Puzzle Reboot

It's been 4 years since I released my first Steam game: Seeders. I took a hard look at it and from this point of view, I was able to see all the shortcomings and problems it had. There was no character animation, and graphics lacked detail. Although the puzzles are good, the visual looks were poor. But even some puzzles, although they had good ideas behind them, were executed poorly. Players had to spend too much time actually doing the thing once they figured it out.

I decided to give a major revamp to the game. Big enough to set it up as a separate product. This time, it would be the game I really wish I made in the first place, but I just didn't have enough experience at the time. The new version is called Seeders Puzzle Reboot. Here are all the changes compared to the original Seeders Classic game:

Improved graphics. Some of the graphics used to look really plain and boring. If you played on a 1080p screen or larger, you could even see the textures repeat. At the time I made the original game, I was impressed by simple graphics of games like VVVVVV and Thomas Was Alone. What I learned since is that although consistency is more important than graphics fidelity, the original Seeders had consistently poor looking graphics. It actually took less effort than I anticipated to bring the graphics into good shape. Too bad I didn't see this as a problem in the original game.

Character animation. The old game had almost no character animation. Our main hero would look stiff and it would make the gameplay look stiff and boring as well. As I gained a lot of experience animating Son of a Witch, I put that to use. The gameplay now feels fluid and the main protagonist feels alive. There was a lot of work to be done, because there are 16 wearable hats in the game, and each one was drawn separately, so I had to make that work with animations.

No ambiguous puzzles anymore. For some of the puzzles seemed hard or impossible to execute, because the puzzle setup would lead the player into thinking that some of the solutions is possible because you might barely be there. It seemed like you could solve it in some trivial way only if you were precise down to the pixel. Based on discussion I had with some players on Steam, there were even some puzzles that could be cheesed that way. I redesigned all those puzzles to make sure it's obvious that the easy/wrong way is not possible, and players have to think of something else.

Hardest puzzles are optional. Some of the puzzles were really hard to solve (for example, the machine that moves parts of the level in level 3) or execute (falling through the laser-protected hole while a beryillium pipe is falling at the same time protecting you). And for some, it took a lot of time to repeat if you made an error (like those 4 alien robots at the start of level 5). All those puzzles are now optional, you can do them to get more wearable hats. Because of these changes I had to draw more hats, so there are 17 in the game now (default + Jason's + 15 to collect).

More Co-op puzzles. While the co-op mode in the original game is fully playable, it felt like some of the puzzles were really lacking co-op support. Now, many of the puzzles are still the same as in single player, but you have to solve them in different ways to enable two players to go through. This is especially visible with lasers in level 5, where you have to pass the vehicles to each other, or carry the other player on top of the spaceship, etc. But I also added more co-op only puzzles (i.e. you won't get to see those in single player) and some of the existing puzzles were redesigned for co-op by removing some pieces which made them trivially easy or adding some pieces that made them more interesting. I also left some of the tricky puzzles from the original mode to be available only in co-op mode, as I expect two players to be smarter collectively.

Music improvements. The main menu music was just too intense. It's a catchy tune, but I really started to cringe every time I launched the game - and I had to do that hundreds of times during testing. I replaced it with a nice, relaxing tune that sets a nice atmosphere, but never gets boring nor annoying. I also migrated my audio mixer code from Son of a Witch, so now all the songs have normalized volume. It was all over the place in the original game and you usually had to adjust the music volume between levels.

Added missing sound effects. One of the reasons the game felt stiff and boring was because there were next to zero sound effects. You would push a rock or a metal piece and they would feel like paper cutouts instead. You would jump on top of a spaceship and there was no sound. I have added over a dozen missing sound effects and coupled with music volume fixes I wrote about above, playing the game now feels like you are really there and your actions have an impact.

General polish. There are a lot of small things that make the game look and feel nice. Simplest things like menu transitions, subtle animations when you select menu items, etc. I built these systems for Son of a Witch and now I migrated them back to the Seeders engine as well.

Seeders Puzzle Reboot is that great puzzle adventure game that the original Seeders was supposed to be from the very start. I just wasn't experienced enough at the time to make it this good. Seeders Puzzle Reboot will be exclusive to Nintendo Switch for now.

Feedback & Share Bigosaur, 2019-07-02

Paladin / Alchemist / RPG / Arena update

A free DLC-sized update is coming out on March 21st. At first I wanted this to be a separate DLC, but I decided that splitting the player community is a bad idea and earning just a little bit more money isn't worth it. I want everyone to enjoy the same game.

New features:

  • new RPG game mode where you keep all gear and restart the current level when you die
  • new Endless Arena mode where you fight waves of enemies
  • new hero: Paladin, who has divine shield and does double damage to undead
  • new hero: Alchemist, who has a Golem companion, and prepares potions
  • 8 pets with new effects: Crocodile, Mouse, Bee, Monkey, Whale, Cow, Ladybug, Cat
  • 3 new random potion effects: Cold blood, Veteran Elixir, Astral Projection
  • 6 new special effect items: Ghost orb, Critic’s Shield, Paladin Shield, Alchemist’s Visor, Halo, Ancient Voodoo Doll
  • 10 new weapons: General Sword, Crippling Katana, Executioner’s Sword, Dark Slayer, Splitting Axe, Paladin Sword, Alchemist Sword, King Cobra Staff, Snow Tiger’s Paw, Steady Shot Bow
  • 6 new achievements
  • 2 new allied troop summons: Baby Yeti, Stone Golem
  • added a new blocked challenge room in the forest
  • added a new challenge room with baby dragons
  • added a new challenge room in the ice level (it’s a surprise)
  • added a quest room in the ice level to unlock the Alchemist hero

Gameplay balancing:

  • allowed summoning mercenaries into boss fights (except the final boss)
  • removed slowdown effect from Heavy Boots
  • Retort no longer creates mana potions
  • only one Retort shows for sale in shops
  • removed poison immunity for the final boss
  • significantly increased Poison Cloud spell damage
  • Poison Cloud effect scales with enemy size
  • improved AI for Snail, Ram and Snake pets
  • using teleport staff twice returns you to the starting point
  • fixed runestone drops in various barbarian challenges

Bugfixes:

  • Ethereal bow now shoots through barrels and boxes
  • Dog pet doesn’t take mercenary’s beer in the tavern
  • Foundry doesn’t melt mercenary’s beer anymore
  • Thief and Ringleader don’t jump on allies when confused
  • fixed bug with item drops when Yeti Elder and Earth Golem roll
  • fixed drawing position when Barbarian is mounted
  • fixed rare sound effect bug with Yeti babies
  • fixed position for some of the teleportation animations
  • fixed text showing last level seed instead of control hint after player dies
  • fixed occasional crash on MacOSX
Feedback & Share Bigosaur, 2019-03-14

Replaying hero unlock quests

Some of the players asked me how to replay quests that unlock heroes. You can do this by clearing the achievements that unlock them. To clear the achievements, you need to enter the DM mode. DM means Developer Mode or Dungeon Master, whichever you prefer.

  • Start the game and press T to open the chat box.
  • Type /dm1 and press Enter.
  • Type /ca ACHIEVEMENT_NAMEsee below to clear the achievement. For example /ca EYE locks the skeleton hero.
  • Type /dm0 to exit DM mode.
  • Close the game completely and start it again.

Here's the ACHIEVEMENT_NAME for every hero:

  • Sorceress: /ca PROLOGUE
  • Druid: /ca DUCK
  • Archer: /ca ARCHER
  • Pyromancer: /ca FIREMAGE
  • Skeleton: /ca EYE
  • Rogue: /ca ROGUE

Barbarian challenges achievements are named BARBARIAN1 through BARBARIAN12.

Feedback & Share Bigosaur, 2018-11-21

Big Son of a Witch update

Version 3.7.3 is online:

- new hero class: Rogue. Special ability is to use the sneak attack as the special attack with any melee weapon. You can still use the weapon's regular rage attack if you use it in the off-hand slot. He also has a special item that can unlock any door (except boss room doors), so you can unlock treasure rooms and escape tough battles
- Added a bunch of new achievements
- New potion: Vampire blood (get HP from kills. Multiple potions stack)
- New potion: Pickpocket (earn extra gold until you get hit. Stacks)
- New potion: Confidence (deal extra damage when full HP. Stacks)
- Added a new combat item: Sticky bombs. You can plant these as traps. When an enemy walks into one, it activates.
- Added a new pet: Racoon, who randomly drops sticky bombs across the room
- Added a new special room in the castle: the Gallery Room. This room is filled with enemy portraits and you can pick your favorite enemy to do double damage to them.

New NPCs:

- Join the Vampire Slayer NPC in the catacombs and help her kill a vampiress or the vampire boss for reward
- Dwarfs now sell stuff in the ice level
- Dwarven Blacksmith shows up sometimes and gives you ability to smelt weapons into runestones which are used to upgrade other weapons
- Mercenary NPC in the castle tavern gives you an item which can be used to hire mercenaries for a fixed amount of gold. DON'T TOUCH HIS BEER!
- Vampire Sword now gives HP while hitting enemies (instead of on-kill)
- A Redhead Warrior NPC might challenge you for a duel on the battlements

Tweaks and improvements:

- Redhead Warriors in the desert now buff their swords before doing the petrify attack
- Disabled invulnerability frames for revival in dungeon shops
- Reviving in regular game now gives 41HP instead of 61HP
- Celestial Hammer rage attack now strikes all enemies in the room
- Darkness, Confidence, Money is Power, Mega Boost effects scale the skill percentage instead of adding to it. For example, if you have 50% melee and 100% darkness, it results in 100% melee skill (not 150%).
- fixed bug when the remote player could join the game twice (i.e. two heroes would show up) if (s)he pressed the button twice too quickly
- fixed bug then Steam library is installed in a path with non-ASCII characters
- minor fixes and tweaks to UI
- updated some of the translations
- dialogue in the intro story now supports translations

Have fun playing!

Feedback & Share Bigosaur, 2018-09-21

Son of a Witch launches on Switch September 4, 2018!

August 22, 2018 -- Son of a Witch, the adorable action roguelike that won over hearts with official selections at IndieCade Europe 2016, IndiePrize 2017, and Game Access '17, is about to launch on Nintendo Switch on September 4, 2018.

After 3 years of development and a successful launch on Steam where it currently holds 92% positive rating, the game is about to hit the console platform where its couch co-op gameplay will shine. A new release trailer highlights the magical hack and slash hijinks players will be able to enjoy in solo, co-op, and four-player sessions.

Son of a Witch recalls the compulsive replay-ability of your favorite roguelikes but wraps it all in a charming package, making it a lot more welcoming to a wide range of gamers than your standard fare. But don't let the cutesy graphics fool you: Son of a Witch offers deep mechanics that reward constant experimentation and learning. Son of a Witch boasts over 120 unique weapons and items to discover. Players will only find a small section of these in each run, meaning the game is completely different every single time you play. There are also 7 playable characters with wildly different skill sets and abilities, over 20 bosses to beat, and 30 pet animals to find.

Bigosaur is expecting the game to be even more popular on Switch, because players often like to play in couch co-op setting on the console. Milan Babuškov, creator of the game, said "After completing Castle Crashers for the second time, I started thinking: what would make a beat'em up game more replayable and interesting in the long run? Inspired by some roguelike games like The Binding of Isaac, I added procedural map generation and over a hundred different magic spells, items, weapons, quests and game mechanics that you can combine in interesting ways. Always having a new map to explore and weapon combos to discover is the reason many players already have 100+ hours in game on PC. I'm excited to see the community feedback on Switch, as it will be a great motivation to continue improving the game in the future."

Son of a Witch will launch on American eShop on September 4, 2018. Check out the release trailer here.

https://www.youtube.com/watch?v=rQY-P-vkLck

About Son of a Witch

Key Features

  • Explore non-linear procedurally generated dungeons
  • Fight your way through random encounters with monsters and a selection of 24 bosses
  • Find shops, treasure rooms and challenge rooms
  • Complete NPC quests to unlock playable characters
  • Get help from one of 26 cute pet companions
  • Drink random potions to power up or increase the challenge
  • Identify and use powerful magic scrolls
  • Every weapon has some unique ability or attack type
  • Every item you find has its use or special mechanics
  • Single player and up to 4 player co-op
  • Three different play styles: melee beat'em up, magic shooter and archers sniping enemies from a distance
  • Permadeath. A new world is created every time you start the game, so it's always fresh and interesting to explore

Game information

Title: Son of a Witch

eShop page: https://www.nintendo.com/games/detail/son-of-a-witch-switch

Genre: Fantasy, Indie, Co-Op, Roguelike, Hack and Slash, Dungeon Crawler

Developer: Bigosaur

Publisher: Bigosaur

Nintendo Switch release date: September 4, 2018


Screenshots, graphics assets: http://sonofawitchgame.com/media.php


Contact information

Milan Babuskov, Bigosaur switch@bigosaur.com


Feedback & Share Bigosaur, 2018-08-22

Steam release!

The first complete version of Son of a Witch is now released on Steam. After almost 3 years of development the game is finally complete. We have gone a long way since being featured by IndieCade and greenlit by the Steam community. With almost weekly updates it has been an exhausting but also a very enjoyable experience.

This is the first release that covers everything I planned to make initially, and much more on top of that. But, this is not the end. There are many more things to come. During the development both the players and myself got a lot of new ideas, so you can expect to see some big updates in the future: more weapons and items with new effects, more mounts, more pets, more special rooms and NPC quests, and more magic.

The next step is porting the game to Nintendo Switch. I plan to do that over the Summer and have the game ready for late August or early September.

After that, I plan to have one big update with new content, most probably for the holidays by the end of the year.

Feedback & Share Bigosaur, 2018-05-16

Mixing beat’em up brawler with bullet hell shooter in a single game

The initial idea for Son of a Witch was to build a game that could be easily described as Castle Crashers meets The Binding of Isaac. I wanted to have endlessly replayable beat'em up experience with much deeper mechanics and ranged combat. But how do you combine two pretty different play styles?

Beat'em up vs dual stick shooting

In beat'em up games you have to line up with the enemy vertically to hit them. In a bullet hell shooter like Enter the Gungeon you can shoot in all directions. These two simply wouldn't work well if you just mashed them together, so I introduced some modifications. The main one was restricting ranged combat to the horizontal direction. You can shoot to the left or to the right. This goes for arrows, thrown weapons and orbs (magic projectiles similar to tears in Isaac). With some upgrades you can get spread shots, or mirror the projectiles on the other side, but the basic targeting is to the left or right.

Having to line up to attack with both melee and ranged attacks made the combat easy to read and perform even when there are different types of heroes and enemies fighting. The standard vertical evading of melee hits now works for ranged projectiles coming your way as well.

Level layout

Beat'em up games usually have horizontally long, linear levels. There's almost no exploration, you just head to the right. I wanted to give the players that great sense of exploration you get from roguelike games: the map is randomly generated and non-linear. Sometimes it branches, sometimes it loops back. You are guaranteed to find a treasure room on every floor. There are 2-3 shops and often special rooms with NPC quests or mini-game challenges. Even if you find the boss and exit to the next level early, it's worth exploring the rest of the level to find better gear and level up your heroes.

During playtesting I found that most players like exploration. The only problem could appear in 4-player co-op games when sometimes the players would spend too much time arguing which way to go. This is especially visible for situations when many new players join the game and just want to move ahead without discovering all the subtle mechanics the game offers. For such players, I added a Party Mode which features a linear level layout, but still gives you random weapons, shops and NPC quests.

Balancing ranged and melee combat

Initially the ranged characters had a huge starting advantage: they could hit an enemy without them striking back. If we just took your standard beat'em up monsters and threw them in a game where all the heroes are ranged, it would be really hard to provide a good challenge to the players. Either the enemies would have to be very fast to close the distance or they would have to have a lot of health to survive until they can threaten the player. Because of this, the enemies in Son of the Witch were designed differently: many of the enemies have ranged attacks and melee-only monsters serve as live protective moving shields. They usually walk in front of ranged characters and try to engage in hand-to-hand combat with the players while the ranged units are attacking them from a distance.

Having more ranged enemies results in having to do more dodging in Son of a Witch than your regular beat'em up game. There are often some projectiles coming your way and you have to evade them. Since the projectiles are only flying horizontally, there's less dodging that your regular bullet hell requires. So, this mix is somewhere in the middle and you don't need inhuman dodging skills that some of the bullet hell shooters require.

With all this said, you might still feel like the melee heroes are at a disadvantage. To balance things out, I added more mechanics that give melee fighters an edge in some different areas: While magic ranged attacks only deal damage to the enemies, the melee attacks also stun them for a second, interrupting their attacks or magic spells. If you use a weapon with the quick attack (all swords and some axes) you can stun-lock most of the enemies and just keep attacking until they die (or some other enemy hits you). Beside this, melee weapons have special rage attacks that can knock down enemies and stun many of the bosses.

One of my design goals was making sure that melee and range heroes synergize when playing together in co-op games. Having different combat mechanics actually works really good. The knights can stun enemies and keep the ranged attackers busy while the mages shoot them from a distance while buffing and healing their allies.

Knights can use magic too, just not that effective

Beside magic projectiles, there's a wide range of magic spells. There are many different magic staves and every staff has a different spell effect: poison enemies, set them on fire, freeze them, slow them down or speed up your party, shoot lightning, create magic turrets that shoot at the enemies on their own, create obstacles on the screen, teleport yourself into safe spots, etc. Son of a Witch allows you to have multiple weapons at the same time, so you can combine different spells during the same fight.

The magic is very powerful, so at first it seemed like the mage heroes would once again be much more powerful. To balance that out, I allowed for melee fighters and archers to also use the magic items, but with less efficiency. For example, the Snake Staff will buff a weapon with poison, but the damage the poison has a base value that does scales with the hero's Magic skill. So, a Knight hitting someone with a poisoned sword would inflict 3 poison damage per tick, while a mage doing the same would do 5 poison damage per tick. Another example would be the Earthquake staff that knocks down all the enemies and breaks the rocks with usable items or weapon upgrades. When a Knight uses the staff, it would knock down everyone and break 2 rocks on the screen. When a mage uses it, it would break 5 rocks on the screen. Some other weapons work completely the same. For example the Teleport staff just teleports the hero regardless of the level of Magic skill they have.

Item and weapon drops

When you mix two different play styles, you need to make sure that the player gets upgrades and powerups they can use. If I'm playing a mage hero, I don't need a triple-damage upgrade for an axe type of weapon. This can be a big problem for procedurally generated games. If you leave everything to the random number generator, your game won't be enjoyable.

In Son of a Witch, I solved this problem by rating every item and weapon in melee/magic/ranged category and then multiplying the drop rates with the skill levels of heroes in each of the categories. For example, let's say we have an item with a drop chance of 10% and it's an item only used by Melee characters. Let's say it's a single player game, and the player selects a Mage hero, who has 30% Melee skill. At the start of the game, we reduce the drop rate to 30% of the original, making it only 3% chance now.

You might wonder why don't we disable it completely? It's because it's really rare that a weapon or item is completely useless. Even if you are a mage, having a sword available could be useful to do some quests (for example, when the princess is attacked by goblins, the stun-lock ability of the swords is really useful) or complete some NPC quests easier. Beside that, the game gives you many upgrades during a run, so you might sometimes decide to switch hero class or become multi-class at some point and having at least some of the weapons available helps.

By the way, Son of a Witch launches on Steam today. Check it out.

Feedback & Share Bigosaur, 2018-05-16

Designing death in co-op roguelikes

Single-player roguelikes have a somewhat easy task when it comes to player death. The genre itself dictates that once you die, it's game over. At least, if we adhere to the strict definition of roguelike. Some of the games allow for some progress to spill over into the next game, but all of them make you start over. Without this mechanics, the game isn't considered roguelike.

Now, what happens when two or more players are playing? Is it Game Over as soon as one of the players dies? Or do you allow reviving the players? What conditions need to be met for the player to revive? Answering these questions makes a huge difference in the way the game is played. When deciding what's the best approach, one should consider what is the way you want your game to be played. Do you want to limit the game to player pairs of similar skill level, or you allow newbies to play together with pros? This is an important decision, because roguelikes are often hard games to play. Let's look at some examples and see how different decisions influence the gameplay.

Enter the Gungeon

Enter the Gungeon has limited co-op mode - only two players and the second player can only play a single character. Once a player dies, he becomes a ghost with very limited gameplay options. The revive mechanic is rather interesting. There's an item that allows you to revive the other player once. This works pretty good until a player dies for the second time. After that, you can soon get into a position where only one player plays for a very long time as the only other way to revive dead players is to beat the boss or find and open a chest. This means that Gungeon is pretty hard core and expects both players to play well. If one of the players is a newb, he will die often and get bored waiting to be revived all the time.

The Binding of Isaac

BoI doesn't really have the full multiplayer game. Only the main player gets all the powerups and pickups and others can only play as babies with limited power. The main player shares their health with babies, so it's easy to revive them when they die. It's an interesting mechanics, which makes it more enjoyable as there's no waiting time. However, less skilled players can quickly ruin the game for more experienced ones who have to decide between spending most of the game playing with low health or telling their partners to go hide in a corner and/or wait to revive.

Rampage Knights

In Rampage Knights the dead player turns into a ghost who can move around and knock enemies into pits or interfere with their attacks. With some item upgrades, the ghost can also poison enemies or set them on fire. This is a pretty good mechanics because newbies can actually kill enemies pretty quickly even when dead.

The player stays in the ghost form until 10 enemies are killed. This is a decent solution to the death problem, but it does have its drawbacks. The main problem is that the players are revived to full health, so the players can simply take turns dying and go through the whole game with 30+ deaths. Another problem is that completing a level gets the dead player revived as well. So if someone is low on health after the boss fight, he can simply jump into a pit and get full health at the start of the next level. All this makes co-op in Rampage Knights much easier than the single player mode.

Spelunky

Spelunky also has the dead ghost mechanics. Dead players can knock down some enemies into pits or spikes, activate traps, etc. To revive them, the players have to find and hit a coffin. This is a good solution, however sometimes the dead players can get bored while waiting. Although they can do stuff, it isn't much compared to playing the game while alive. The only big problem with this approach is that the coffin only revives one player, and there's only one coffin per level. So, if you play a 3-player or 4-player game it means that some of the players would have to wait for two or three levels before they even have a chance to be revived. This pretty much ruins any fun for players who want to complete the game and not just goof around.

Castle Crashers and Lost Castle

Castle Crashers isn't really a roguelike, but I included it because of an interesting revival mechanics that was also reused in the recent Lost Castle roguelike. When a player dies, others have to come to them and revive them. This means they have to stand still and not fight the enemies for a while. While this mechanics works pretty good in Castle Crashers, in Lost Castle the enemies are much more aggressive, and it's almost impossible to revive dead players until the room is clear of enemies. Since the game has some enemies with high health this can take a while and the dead players can quickly get bored. Combining an experienced player to play with a beginner is not an enjoyable experience for any of them as the newb will keep dying and the pro will spend a lot of their time trying to revive the dead ally instead of fighting the monsters.

Son of a Witch

When designing death in Son of a Witch, I took a look at many games and weighed carefully what would be a good approach. The death mechanics had to satisfy the following goals:

  • The game is a roguelike, so death should have some weight
  • Players shouldn't be able to revive each other infinitely in a loop
  • Pros and noobs should be able to play together and both enjoy the game
  • When someone dies, they shouldn't have to wait long before they can play again with all of their powers

The goals were simple, but achieving them took a bunch of iterations. When I presented the game during EGX, I made changes to the way death works every day and then watched how it affected hundreds of players who played the demo. It only started to work well when I mixed up a couple of different mechanics:

1. The main way to revive players is to kill enemies

When a player dies, he remains dead until all the enemies in the room are gone.

2. Allow reviving during the battle, but at a cost

You can revive all dead players with a Life Staff which can be used once every 5 rooms. With mana potions you can do it more often, even multiple times per battle. This means that the players can stack up on mana potions for tough boss battles.

The Life Staff is a pretty common drop, but it's isn't guaranteed to show up in every game and you don't know when or where you would find it. This encourages the players to explore and unlock every gold treasure chest they find.

Additionally, undead heroes can also be revived with the Staff of the Dead which animates the undead

3. Players should be encouraged to cooperate

Once a player is dead, a 20 second countdown starts, and others have to revive him or clear the room of enemies. If the players have no Life or Death Staff, they have to fight quickly to save the game. The bosses have more HP, so the timer is set to 60 for the boss battles.

The possibility of the countdown timer makes the players care about each other more. Experienced players will seek to help newbies during the fights to prevent them from getting overwhelmed and killed.

The timer also removes the boring parts. If a player dies he knows that in 20 seconds he will either be revived or a new game will start. In any case, he won't have to sit and watch while his friends are having fun.

4. A true roguelike offers alternatives

Beside the Life Staff, there are a couple of items that can be used to instantly end the battle and revive the dead:

Barrelize scroll quickly turns all the enemies into barrels and thus ends the battle. It's risky to do with bosses because they turn into big exploding barrels.

You can use the Peace scroll that makes all the enemies peaceful. It doesn't work for bosses, so it's useful outside the boss fights.

You can teleport away from the room with enemies to another room. This resets the timer to 20 seconds or stops it completely if you teleport into an empty room. There are two ways to teleport: The Random Teleport scroll and the Silver Coin which teleport you into a random shop on that level. The teleport scroll can be dangerous as you might show up in a boss room. The best time to use it is during the boss fight after you have cleared all the other rooms in the level and you know it will teleport you into an empty room.

5. Have an easy-mode character for newbies

Sometimes it's best to prevent players from dying at all by allowing them to heal more often. In Son of a Witch, there's a playable healer character who can create food to heal the whole party. It's a great choice for new players and having some extra healing options can also help an experienced player when they are playing together.

Feedback & Share Bigosaur, 2018-05-12

Simple A* pathfinding alternative with interesting side-effects

A* pathfinding has become de facto standard for pathfinding in 2D games. However, it does place some constraints on your level design. While it works great in tile based games, I wanted to be able to place objects randomly at any pixel coordinate in the world. With a big map and many units it can get expensive to compute. In this case, developers usually just optimize their game loop, so that the algorithm doesn't get called for every render frame. Since my game is fast paced, I wanted AI to be really responsive to players moving around, so I searched for alternatives.

Another problem with A* pathfinding is that it's almost perfect. Enemies always take the optimal path and become too predictable. I wanted to have some randomness and surprise factor without having to complicate the AI code too much. I also wanted some enemies to be dumb and sometimes not "see" the way to get to the player immediately. But I didn't want them to become too dumb and get stuck on simple obstacles.

And then I discovered steering and obstacle avoidance. The algorithms are simpler, easier to implement and less expensive to compute. You can tweak many parameters to get different behaviors. With simple tweaks you can get the enemies to defend some areas, wait to attack until the player comes closer, act as a group, surround the player, etc. With a little bit of experimentation you can get some behaviors that seem very intelligent.

Since I'm making a game where the players usually have to line up with enemies to hit them, I decided to make that easier for players by having the enemies do the same whenever they can. When the enemy is far away, their priority is to line up with the player while coming close enough to land a hit:

The player can now just move to the right and not worry about having to line up themselves. Additionally, if the player has a ranged attack (throwing axe, shooting arrows, fireballs, etc.) he can simply start shooting and the enemy will make sure he gets in the path of the projectile before it arrives. This makes the combat feel fluid and easy to execute.

For most brawlers the approach above would be enough. Castle Crashers, Rampage Knights and similar games manage to get away with such simple AI because they made their levels with almost no obstacles in the middle of the screen. For my game, I wanted to have more interesting screens with more stuff in the middle: rocks, trees, bushes, pits, etc. on the outside and furniture inside buildings. So, AI needs to be smart about those.

Enter obstacles

Now, what happens when we have some obstacles in between. My approach was simply to allow the enemy to hit the obstacle and then figure out how to go around it:

How do you decide which way to go around? Remember, we are not trying to make the enemies perfect planners, so they can make mistakes. One approach is to simply check which path to go around the object would be shorter. This works fine, but I found out that simply choosing a random direction (UP or DOWN when the goblin hits the bush in the above image) works much better. When you have 4-5 enemies going after the same player, they would split and go around that tree using the upper or lower path. It makes behaviour for a group of enemies seem more natural.

What if the unit has two paths of which one is significantly longer than the other? Or what if one of the paths leads to a dead end? Without going back to full A* pathfinding, we can simply make the enemy figure out they took a wrong turn and reset their 'going around the obstacle' state. We can have a simple variable saying how long should avoiding an obstacle take and tweak that based on the level design and the behavior we want to get.

Protecting an area

Now, let's say you want the enemy to protect an area and wait for the player to come closer? We don't need to change any of the AI code at all, just wall off the relevant part of the level and make sure it's longer than the 'longest path to go around' variable from the main AI code I mentioned above.

The green line in the image above shows a long fence the enemies won't cross because the parameter for going around the obstacle is using a lower value than the green line's length. As the player comes closer to the bottom of the screen, the enemies start to have higher chance of coming out of their area to attack him.

This works pretty good in more complex screens. Having the enemies divided naturally by the level layout makes the game more enjoyable for the player as he can fight enemies in multiple stages.

In the image above you can see three disctinct areas for combat. The player is now in control and can decide on the tactics. Does he storm the enemy in the middle and then have two separate groups to fight. Or he would stay on top of the screen and allow all three of them to come closer so he can use combo to hit all of them with a single shot.

Having the enemy AI constrained by the level layout makes the combat much more tactical than your standard beat 'em up. Now you just need to create interesting level layouts to give enough options to the player.

Using steering to avoid erratic movement

Now, what's steering? Since we run the obstacle avoidance AI all the time, we want to make sure that the enemy movement feels natural. Going diagonally towards down-left and suddenly turning up would feel strange. So, when the player drastically changes his position, we try to rotate the enemy movement in 45 degree steps. This makes the enemies movement fluid and easier to track. Of course, if you hit an obstacle, you would do a 90 degree turn instead.

Sometimes you just want the unit to stop and go the other way. For example, if the tracked player is dead or escaped the room and the enemy starts tracking another player on the other side of the room. In these cases I allowed sudden turns because it feels ok in my game. But if you try it out and it feels wrong, you can smooth it out by steering in 45 degree steps every X milliseconds until you start going into the right direction. The exact value for X depends on the type of unit moving, so you should experiment until it feels good.

Group behavior for enemies

If you make the enemies treat each other as obstacles, you can get very interesting side effects. Most beat 'em up games allow enemies to walk through each other, but if you forbid that and use obstacle avoidance for AI, you can get cool group behaviors. For example, the enemies spontaneously form groups like in the image above without any changes to the base obstacle avoidance code presented so far.

Surrounding the player

In the images above, you can see three enemies approaching the player. As the first one starts to attack, the second one is avoiding the obstacle, i.e. avoiding the first attacker. As he gets close enough, he starts attacking too. In my game the weapon hit boxes are a little bit bigger vertically than the unit boxes, so you can attack an enemy if you're standing adjacent to them vertically as well. From the still screenshot it isn't obvious, but when you see it happening in real time it makes perfect sense.

After that, the third one comes and avoids the initial two attackers. While doing so, he gets past the player as well. Then he turns to face the player and starts attacking from the other side.

What's most interesting is that all of this happens automatically with the standard obstacle avoidance code. You don't have to program some special AI code for it.

Since Son of a Witch is a fun and cartoony game, I only used the simplest algorithms, but you can make it more sophisticated if you want to. I recommend checking out the red3d website for more behaviors like Seek and Flee, Pursue and Evade, Containment, Wall Following, Queuing (at a doorway), Flocking (combining: separation, alignment, cohesion), etc.

Feedback & Share Bigosaur, 2018-05-06

Steam key scammers are getting creative

Ever since I announced the Steam release date for my game Son of a Witch I have been getting a lot of Steam key requests from press and Youtube/Twitch streamers. Many of those requests are actually fake - scammers just want to get keys to play the game for free or resell on sites like G2A. It might look like getting a single key to resell doesn't make sense, as it would earn them some small amount of money, but when you multiply that with the number of games coming out and the fact that they fake dozens of different accounts to get multiple keys for the same game, it does get substantial.

To weed out the scammers, a good approach is to check their YouTube channel profile and look for the contact e-mail in the About section. However, this isn't always enough. You need to take a close look at the channel itself, as there are a couple of ways they can make it look legit. For example, I had a couple of Youtubers whose e-mail address checks out, but when I take a look at the channel, it seems like the last video they recorded was 2 years ago. If you see @gmail or @yahoo address, it probably means that it's an abandoned account and scammers found a way to get access.

Another way to cheat is to buy fake YouTube views. I had key requests from YouTube channels that seemed solid. 1000+ views on every video. You would give a key to such channel, right? Well, after looking at it a bit more, I started to see a pattern: every video had between 1000 and 1050 views. And somewhere in the list, there were gaps - videos with only 1-50 views. And there were no videos outside those two ranges. So, there wasn't any video with, say, 250 views, or 1200 views. This means that this guy gets up to 50 views per video and he just bought 1000 fake views for some of his videos.

Some YouTubers don't have an e-mail in their profile, but you can still do some sanity checks. The thing that I often do before even checking if e-mail is correct, is to go to their channel and see what games they cover. If it's your typical channel with Minecraft-only content, or AAA-games only content, then chances of them actually covering an indie game are slim to none.

One of the approaches the scammers are taking currently is going the Twitch route. Unlike YouTube, it's impossible to get contact e-mail for a Twitch streamer. The scammers know you can't verify their e-mail, so you have to take the risk. But not really. There's a feature in Twitch called Whisper. This allows you to contact the streamer directly via chat. You need to have your own Twitch account to do this. I recommend you get a Twitch account anyway, so you can use it to get your game listed in the Twitch game directory, so the streamers can mark that they are streaming your game and you can track that.

Feedback & Share Bigosaur, 2018-05-02

How changing my game's image tripled the sales

My game Son of a Witch has been in development since 2015 and entered Early Access on Steam in November 2016. The game was initially named My Mom is a Witch. This name was memorable and unique, but many players and Youtube and Twitch streamers had problem saying it out loud. Take these curators for example:

Because of this, I began to think that another name would be better. However, changing the name was a tough decision. The game won hearts of many players, including official selections from IndieCade and IndiePrize, all under the old name. Changing the name would mean losing some of the search engine traffic, word of mouth marketing and confusing the players.

Since the main character is a son of a witch, the new name was obvious. It would even fit the story better. The only problem was that Son of a Witch is also a pun to a well known pejorative slang phrase which doesn't work well with cutesy graphics of the game. Because of this I decided to ask the existing players on Steam, and the feedback was overwhelmingly positive: everyone agreed that the new name is much better and easy to remember. There wasn't a single comment saying that I should keep the old one.

On July 3rd 2017 I changed the name of the game. It meant going through all the marketing materials and updating the logo. One of the big problems were dozens of YouTube videos using the old name. The game basically vanished from YouTube that day, as nobody would search for the old name anymore. I e-mailed a bunch of YouTubers who had the videos with top number of views, but only one of them went back and updated the titles.

Since I was updating all the graphic assets for the game store page with the new name, I decided to go and update the key promotional image. I still kept key actors: the knight and the Ogre Mama boss, but I changed the character poses and the way the scene is framed to give it some life.

This change might look trivial, but the effect was huge. In the weeks following the name and the graphics change, the game sales went up 306%, i.e. the game sales started to triple. At first I thought this was just some temporary effect. But, now that I have 9 months of sales data, I can confirm that this increase in sales is permanent. A couple of simple changes moved the game to a completely new level.

TL;DR: No matter how good your game is, the game's image is very important. Even if you think it's good, it's worth trying a couple different things and see how the players would react.

By the way, Son of a Witch is leaving early access on May 16th, so check it out.

Feedback & Share Bigosaur, 2018-04-26

SoaW: 28 new achievements

Version 3.3.8. is online:

- 28 new achievements ranging from easy to very tricky ones
- tremor status effect now affects orbs, arrows, bombs and throw weapons
- increased the starting hero skills in casual mode
- fixed bug when releasing the attack button with a bow in hand would initiate the backup knife attack
- fixed bug when typing in chat would activate the backup knife attack
- updated some of the translations

This version concludes the content I planned for the Early Access. I will dedicate the next month or so to extensively playtest the game for the final release, so only expect bugfixes and translation updates in this period. I have a bunch of new features I plan to add in the future, but I want the exiting Early Access release to be well tested and bug free.

Feedback & Share Bigosaur, 2018-03-09

SoaW: 24 bosses

Version 3.1.4 is online with the 4th desert boss: The War Elephant. This is an important milestone, because all the bosses I planned for the first full game release are now in the game.

The initial plan was actually 20 or 21 boss, but as the game has been developed many new ideas came and now we have 24. I do have some ideas for 4-5 more bosses, but those will come after Early Access.

Here's a short roadmap for the rest of Early Access development:

- Barbarian Hero with some special mechanics (shh, it's a secret)
- 12 special challenge modes to unlock the barbarian
- Hard mode
- 45 more achievements already planned "on paper", maybe more
- there might be some additional pets and items/weapons along the way
- a new trailer for the game

I plan to exit Early Access in May this year if all goes as planned.

There are also some ideas that might be implemented before we exit EA, but most probably afterwards:

- more mounts: baby elephant, horse, deer, green baby dragon (spit poison)
- additional quests and special rooms
- more weapons and items

Feedback & Share Bigosaur, 2018-02-05

SoaW: The final level

Version 3.0.9 is up with the final, 7th level of the story, the end-game boss and the final cut-scene:

- a new desert level with a new status effect (thirst)
- completed the game story w/ the final boss fight
- some enemies have petrify attacks. Drink the dragonfire potion quickly to remove or use the Life Staff
- 3 new enemy types
- 1 new boss
- 2 new weapons
- 2 new items (both were present in the game, but didn't drop before)
- fixed the drop algorithm for the Magnet item
- bugfixes for ranged AI
- fixed "on sale" name translations for the potion shop
- blood runestones now give you 20 HP on top of +20 health increase
- balanced archery weapons and items drop rate
- allowed special / quest rooms to spawn in casual mode
- fixed a netcode bug where the Book of Ice would freeze enemies who are immune to freezing
- added more detailed decorations to the forest area

The game can now be played from start to end, but this is not the final game and there's still a lot more content to add before we exit early access. The most important ones are the Barbarian hero and 12 quests that you will have to beat to unlock him. And after that, 2-3 more bosses for some variety in the desert level, a bunch of new items and Hard mode. Also, about 30 more achievements are planned now that the game is completely playable from start to finish.

Feedback & Share Bigosaur, 2018-01-28

SoaW: Big item and weapon drop

A new version is up:
- 17 new items with unique mechanics
- 5 new weapons with unique mechanics
- 4 new potion effects
- a new scroll: Confusion
- a new quest area in the forest where you can play baseball
- 6 new achievements
- all bows now come with a low-damage knife as a strong attack. You can use the knife to quickly break barrels and boxes and stay alive if you run out of arrows
- get a special reward from the shopkeeper if you buy all the items
- fireball + dark orb synergy now works
- fixed returning bow animation for the Archer
- fixed swoosh animation for melee swing attacks
- all Mom's Books can now be duplicated for increased effect (double poison/fire damage, double freeze duration, etc.)
- added a note showing which sword attacks are quick in the weapon description
- removed the Catacombs Shortcut from the daily challenge
- reduced the mana cost for the Bottomless Bag of Bombs
- show current run time on the pause screen
- fixed the Slime King boss netcode bug
- fixed bug when a player would get sticky feet if he walked into another player that had the effect
- added an option to show the timer during the game.

PvP fixes:
- sudden death timer is no longer running when the game is paused
- using twilight staff spell only increases power for the caster
- turret staff clones now shoot at other players and cannot harm the caster
- fixed the dead animation glitch for the winning player after he gets smashed with the huge hammer

Feedback & Share Bigosaur, 2017-11-12

SoaW: Yeties

A new version is up with a new boss, the Yeti Elder who is a huge beast whose jumps cause icicles to fall from the top of the mountain. He can also spawn smaller Young Yeti minions who also show up in various parts of the ice level.

- Yeti Elder boss
- Young Yeti enemy
- Achievement you can win when you defeat the Crazy Santa boss
- Fixed the pause overlay size for non-English languages
- Improved the death animation for the Crazy Santa boss
- Fixed the Reindeer pet name
- Fixed the Snailbite arrow name
- Added new graphics for the synergy of Dark Orb and Freezing Orb
- Fixed the gamble scroll - now it can be used multiple times in the same room and enemies would always change
- Added all the enemies into the Gamble scroll pool
- Fixed Fog and Toxic Cloud drawing for screens bigger than 1920x1080

Feedback & Share Bigosaur, 2017-11-12

SoaW: Level 6

The Winter is coming. A new version of the game is up with the Ice Mountain level:

- slide and glide across the snow as you fight - unless you have a mount
- 3 new enemy units
- 2 new ice weapons
- 1 new boss (Crazy Santa throwing exploding presents)
- added music and sfx volume adjustment to the pause screen
- fixed Mom Books drops for altars to match the achievement unlock description
- lightning now shoots through metal shields
- adjusted mana cost and base damage for some magic wands
- Fire sword now has 100% burn chance
- spawning minions no longer give you mana via Warbreaker (this is to prevent getting infinite number of points in daily challenge)
- fixed a couple of translation related bugs

Feedback & Share Bigosaur, 2017-11-08

SoaW: New bosses

Meet Ugh and Ogh, the cyclops. These brothers are a new boss in the forest. Cyclops is the weakest of all bosses, so there are two of them to make the fight fun.

Since the catacombs update I focused on adding new content to existing levels and bugfixing any problems. I also added 10 new achievements to make the game interesting for players who completed all the levels.

Another new boss is the Ringleader. He sometimes shows up in the dungeon instead of the Simerian Butcher. The Ringleader can jump on you similar to the way the thief does - except that he is faster and has greater reach. If he finds any bombs on you, he would use them immediately. He also steals and throws your other items around.

I also added a new themed area in the forest - a long jump competition. You get some items as rewards for jumping certain distances. To jump even further, you can find some speed buffs like The Rabbit Amulet, Blur Potion, etc. There's also a Steam achievement if you manage to jump really far.

Feedback & Share Bigosaur, 2017-10-05

SoaW: Catacombs update

A new version is available with a lot of new content:

  • The 5th level, Catacombs, with 5 new enemy types
  • New hero: Undead Skeleton Ranger
  • Unlocking the new hero is done via a special quest in the old part of the catacombs which is a really dangerous place
  • 2 new bosses
  • 3 new special areas in the forest
  • 1 new mount (zombie pig)
  • 1 new pet (finds hidden runestones)
  • Blue color skin for the sorceress character and achievement to unlock it
  • Elemental altars where you can get some powerful items and weapons
  • A dozen new weapons and items
  • Improved game engine performance
  • Darkness now increases your stats
  • Item and weapon drops are now slightly affected by starting heroes (ex. you are more likely to get magic items when playing with mage)
  • Avarice doubles coins
  • Fixed Amanda's AI on the final screen so she doesn't get stuck
  • Fixed problem with chat not being available on the character selection screen
  • Co-op death countdown now starts from 60 during boss fights
  • Increased lightning damage for the sword
  • Bow descriptions update after damage upgrade
  • Balanced runestone drops from rocks
  • Rebalanced poison to make the Druid hero more viable
  • Added more stats to pause screen
  • Status effect icons show up in two rows in co-op
  • Fixed many bugs
Feedback & Share Bigosaur, 2017-09-15

SoaW: Beta testing access

I want players to have a stable, well tested version to play so they don't run into any bugs. On the other hand, I understand that some players want to play the most recent version with the newest features. Because of this, I decided to make the beta testing versions public.

Beta versions are the testing ground for new releases. They could have bugs or crash. Benefits of running them are that you get all the newest content and you can help me find the bugs sooner and thus make the game better for everyone.

To switch to beta version, right-click the game name in your Steam library and select Properties option from the menu:

Then click the BETAS tab at the top of the Properties window. Select the "testing - Unstable" option from the dropdown menu:

Enter the password: minimum89012

Steam would then download the files that are different and let you run the beta. If you plan to play online multiplayer - both players have to have the beta version (there will be some periods in-between releases where the beta version could co-op with the stable version, but this is not guaranteed).

If you decide to go back from beta to stable just open the Properties again and select "opt out" from the dropdown menu in the BETAS tab.

Feedback & Share Bigosaur, 2017-09-01

MMiaW: Make your own undead army

I'm working on the Catacombs level. There will be necromancers that raise skeletons. Once you defeat them, you can take their staff and animate your own army of undead:

Beside skeleton warriors I plan to add archers and mages as well. There will also be a new music theme, traps and a bunch of new items, weapons and mechanics.

Feedback & Share Bigosaur, 2017-08-11

MMiaW: The Dungeon is here

The 4th level is ready. You descend into the dungeon where all the prisoners have been set free from their cells. Three new enemy types await you: a thief, a bandit and an assassin.

The thief tries to jump on your back. If he succeeds, he starts stealing away all the items from your inventory. If he finds a bomb, he will immediately use it. You can knock him off if you use a rage attack, or find some way to hit him - including meteors, bouncing orbs or via a voodoo doll. Also, if anything knocks you down, he will fall off as well. The thieves use a curved dagger, which is a new weapon with a throwing attack and backstab damage bonus that you can also use yourself.

The bandit is quick and uses a Morning Star that does a lot of damage. You also use this weapon if they drop it. The bandits will try to surround you from two sides, so watch them carefully.

Assassins have a short poisonous sword and a shield. They move and attack similar to the castle Guard Captains, but poison attack makes them really dangerous.

To counter all the shielded enemies, there's a new weapon in the game: The Excalibur. You can sometimes find this legendary sword in a forest, stuck in a rock. Once you retrieve it, you can cut through enemy shields as if they weren't holding any.

The dungeon features a new level style, with a couple of new trap types, a new treasure chest type and new music theme as well.

Feedback & Share Bigosaur, 2017-06-02

MMiaW: A new trailer

Feedback & Share Bigosaur, 2017-05-27

MMiaW: The Dungeon

After a short break which included showing the game at Game Access '17 in Brno, I'm back to development. I'm working on the Dungeon level. For the first version it will have 3 new enemies and a new boss. Of course, a new background theme and new objects and traps as well.

Feedback & Share Bigosaur, 2017-05-19

MMiaW: The Crystal Wizard

The Crystal Wizard is a new 3rd level boss. He starts showing up randomly in the castle after you have defeated the Executioner. He's similar to regular small enemies (i.e. you can stun him, freeze him, etc.) but he has a magic staff which he can use to shoot at you, the same way the playable magic characters shoot. He has +2 orbs and a mana canteen with practically unlimited mana, which allows him to use the staff's special ability at will.

His weapon is a Teleport Staff, which can be used to teleport to the opposite side of the screen. You can pick it up and use it yourself. Teleporting to the opposite side costs 2 mana, and you can also press the regular attack button to return to the position from which you teleported. This other action is free, but can only be done once. After that you would need to spend mana to teleport again. Some levels have hard to reach locations like walled off areas or parts across the chasm. These levels have a special preset teleport location, which is revealed if one of the players picks up the teleport staff at any point of the game. You can use the teleport staff to reach those places and return. That also includes the areas behind the shops in the forest, so now you can go there and break the barrel without needing two pets (bear+dog) to get the items. The teleport return point remains active even if you leave the room, but you have to be inside the room to teleport back to it.

The teleport staff can also be found in gold chests, shops and pedestals in the locked treasure rooms or blocked challenge rooms.

Beside the new boss and the new staff, there are other changes. I added a couple different texts for the signs in the forest shops. I fixed the bug when the guards wouldn't attack you if you petrified the king and sometimes the level generator would create a shop adjacent to the king's room, allowing you to skip the boss fight in the castle.

Feedback & Share Bigosaur, 2017-04-13

MMiaW: The VioleNt Knights

Viole(n)t Knight is a new boss for the 3rd level (Castle). They come in tandems and start showing up after you defeat the Executioner. The knights are small in size and have a moderate amount of HP, but are really quick. They have a regular strike attack and a dashing attack similar to the playable Knight character. One of the knights always drops his sword, which players can pick up and use. The sword has the greatest reach of all the swords in the game and does 10 base damage (+12 for strong attack). The sword's special ability is giving full rage to the player after every kill.

Feedback & Share Bigosaur, 2017-04-06

MMiaW: Pyromancer

The Pyromancer character is ready. He starts with the Fireball Staff and has permanent fire immunity. This means you can walk on campfires which makes some rooms much easier. The fire spitting traps in the castle and the Red Dragon's breath only do a small impact damage to him, but cannot set him on fire. Because of all these advantages he starts the game only with 3 health bars (60 HP).

He can be problematic for co-op, as you can easily set the other player on fire. A good strategy is to give the Fireball staff to the other player to activate, so he gets fire immunity. Or, if the other player is a magic caster, just swap the staves at the start and play like that.

To unlock the Pyromancer, you have to find Amanda somewhere in the forest and escort her to one of the shops in the castle. This means that you have to go all the way through the Battlements level without her dying. It's a very challenging and interesting quest to complete.

Feedback & Share Bigosaur, 2017-04-02

MMiaW: Hornet Queen Boss

A new boss is added to the Battlements: A giant Hornet Queen. She can attack you or lay eggs from which the regular hornet enemies hatch. Both the Queen and the regular hornets have poisonous attack. The poison wears off after one battle.

This boss starts showing up after you defeat a Dragon (either a fire or the ice one).

Feedback & Share Bigosaur, 2017-03-29

MMiaW: New magic weapons and the king

After you beat the Executioner, you proceed to the throne. The king greets you and explains that your witch mother wasn't really kidnapped. The king called for her because he has a major problem in the catacombs: Someone or something is raising the dead, and she's the only one who can stop it.

You can choose to peacefully enter the dungeon and find your way to the catacombs. Or you can attack the king. If you defeat him and his guards, you can take the Royal Scepter, which enables you to summon castle guards to aid you.

Beside the scepter, a bunch of new weapons are added to the game: the Shepherd Staff turns enemies into sheep, the Turret Staff creates standalone copies of the staff that autonomously shoots at the enemies and the Earthquake Staff knocks down all the enemies and destroys some rocks. The stronger your Magic skill, the more rocks will be broken. For combat, Earthquake Staff is a melee weapon - you can strike or knock down enemies, similar to Warbreaker Hammer. The Earthquake Staff is currently the only weapon that scales both with magic and melee skill. This means that you can upgrade it with both Warlock and Blacksmith runestones.

Beside all this, two new room types have been added. First one is the Scroll shop, which sometimes shows up as an alternative to the Potion Shop. The shop offers all four types of scrolls for that run at a low price, and you can buy an identify scroll for only 10 gold coins. The second one is a special room in the castle where the Ogre Mama is fighting the castle guards. It can only show up if the Ogre Mama boss is absent from the forest.

Additionally, the Fireball Staff now adds 1-battle fire immunity to the casted who activates the fireball buff.

Feedback & Share Bigosaur, 2017-03-21

MMiaW: The Earth Golem

A new boss is added to the forest area. He starts showing up after you defeat the Ogre Mama, or you play 20+ games. As you would expect from a golem, he is immune to poison. This one being an Earth Golem makes him also immune to meteors and petrifying. Now, this might seem tough, but he's still a first level boss, so once you learn his attacks it shouldn't be much harder to beat him.

Feedback & Share Bigosaur, 2017-03-15

MMiaW: Themed areas

There are now three special areas in the game, which randomly show up on the first level.

The first one is the Troll Bridge. There's a tight bridge in the middle of the screen and you can either pay the toll to pass, or fight the troll. The troll is pretty fast and strong. You can use the bombs to get rid of him quickly, or attack him to get him to chase you away from the bridge and then cross the bridge and use a bomb to blast the door on the other side. If you have a really powerful weapon, rage attack ready or meteor staff with a voodoo doll, you should try to defeat him as he drops a lot of gold.

The second area is the Garden. The farmer has a pest problem. The critters are coming out of the bushes and eating the flowers. If you manage to stomp on them, you can get weapon upgrades because each one drops a runestone. They are fast and never attack you. Because of this, they aren't considered the enemies, so you cannot use magic to freeze them or do something similar.

The third area is the hunting ground. Well, not really hunting, but more like taming the beasts. Depending on the number of players playing there's one or more wild boars walking around. You have to chase them down, or hurt them from the distance to tame them. Once tamed, you can mount and ride them which gives you +2 speed.

While you are riding, all the damage taken is split between you and the animal. The boars eat all the food, which heals them. If you get the Hunger curse, you can remove it with the Dragonfire Potion, drink a Beer, eat a Mushroom, or find a way to get off the boar. For example, if a Goblin Shaman drops a meteor on your or someone stomps a Voodoo Doll you're marked with.

Feedback & Share Bigosaur, 2017-03-03

MMiaW: New weapons, difficulty scaling, better UI

I decided to avoid having Easy/Normal/Hard option. However, to make the game easier for people just starting out, I decided to give players some powerful boosts until they manage to beat the bosses. The starting boosts are Books your Witch mother left for you.

At first, you get a Book of Life that gives you 100 extra HP. You keep getting this book until you defeat the Ogre Mom. This helps with the fact that the player is still learning the ropes and the goblins do a lot of damage.

After you beat the Ogre, the subsequent runs give you the Book of Ice which freezes enemies for 3 seconds every time you enter a new room. This helps from dying too quickly against the guards. You gain a couple of seconds to survey the room and position yourself.

After you beat the Dragon, you start getting the Book of Fire, which sets all enemies on fire as you enter.

After you beat the Executioner, you start getting a random item. Those items aren't as powerful as Mom's books, but still provide some help.

The idea is that once you reach Mom in the Dungeon, you will unlock her (you can play as her) and then you won't be getting items anymore.

A bunch of new weapons and items have been added to the game recently. I'm still tweaking those, for example The Rouge Sword allows you to conceal yourself, sneak behind an enemy and attack with massive damage. The current version on Steam only has the sneaking part, but I'm going to release a new version (1.6.0.) in a couple of days that has the surprise attack bonus damage.

Beside those weapons, I added six new items and two new potion effects to the game. Some of the items are upgrades to Archery skill, while the rest are more general and can be used by any class.

The new version will also have UI improvements. Most notably, the numbers next to icons will contain some useful info like plus, minus or percentage sign depending on the nature of the depicted effect.

Feedback & Share Bigosaur, 2017-02-27

MMiaW: PvP arena and new bows

A new version will be released on January 20th most probably with player vs player mode for 2-4 players. There will be about 15 different arenas - just like regular forest, battlements, castle levels, but without enemies. Items and weapons drop randomly on the ground or pedestals while the players are fighting each other until only one is left alive.

To make it more interesting, a Bushido will spawn at a pre-set sudden death time, and chase the players around. Players can just battle it out with the starting HP they've got, or you can set up multiple lives for everyone if you prefer the rounds to be longer.

You will be able to select one of the unlocked heroes or a Goblin Berserker (the one with the axe).

This update will also bring in a bunch of new bow weapons with different effects:

Feedback & Share Bigosaur, 2017-01-18

MMiaW: Chapter 3 is live

This update brings the castle level, with new graphics and music theme. The goblins and guards are fighting each other while you are trying to reach the dungeon.

Features:

- a new boss
- Big Orc enemy
- the Royal Sorcerer enemy
- 4 new pets with new effects
- 3 new weapons
- 15 new items
- lightning based damage
- fire and lightning damage can be upgraded with the new items
- duration of freezing for ice based weapons can be upgraded
- pendants for ice, poison, fire, petrify immunity
- overdose random potion replaced with beer
- orbs can now be upgraded to bounce off the walls
- various reusable items: Magic Map, Magic Chest, Bottomless Bag of Bombs, etc.
- balancing of different weapons, spells, potions, prices
- fixes to enemy AI
- cut scene between chapter 2 and 3 can be interrupted
- other minor tweaks and improvements

Feedback & Share Bigosaur, 2017-01-05

MMiaW: Thunderstriker

A new sword is added to the game:

It's called Thunderstriker currently. If you have an idea for a better name, please tell me.

It has regular swing and overhead strike attacks and the special rage attack is to shoot a lighting bolt. The bolt doesn't knock down enemies, and does 25 damage/hit, so it can deal anywhere between 50 damage to lesser enemies to 125 damage to a boss. The shorter range of the special attack is compensated by the longer range of the sword (currently it's the weapon with the farthest reach in the game), decent damage and ability to shoot lightning through obstacles.

Get an Infinite rage potion and have some fun.

. Feedback & Share Bigosaur, 2016-12-27

MMiaW: New items

There will be some new items in the next update:

There's a reusable map, bottomless bag of bombs, and a magic chest that turns mana into gold.

Beside those, there will be a bunch of pendants granting you immunity to fire, ice, poison and petrifying. The Run Like the Wind potion is removed from the pool because it was OP - a new amulet is introduced instead which gives you a permanent speed upgrade.

The Overdose potion is going to be replaced with a Beer item, so that drinking unknown potions isn't so punishing.

. Feedback & Share Bigosaur, 2016-12-25

MMiaW: Chapter 3 coming soon

The goblins are storming into the castle. While the guards are fighting back, you are trying to get to the dungeon. You need to go through the keep while the goblins and guards are both attacking each other and you as well. This gives you some interesting tactical options. Do you just evade them and let them battle it out before attacking the winner, or you try to help the weaker side to even out the balance of power.

The next update will feature a new area with different graphics, background music and environment (traps, destructible items). And a couple of new enemies and a new boss.

Feedback & Share Bigosaur, 2016-12-17

MMiaW: MacOSX

The version for MacOSX is available for download.

It features cross-platform compatibility, so you can play online multiplayer games with your friends on Windows.

Feedback & Share Bigosaur, 2016-12-05

MMiaW: Archer's ready

The Archer character is in the game. He shows up randomly in the forest as an NPC and gives you a quest. Once you complete the quest, he will be unlocked and you can select him.

The game is on Steam: http://store.steampowered.com/app/539400

Feedback & Share Bigosaur, 2016-11-27

MMiaW: Almost there

I spent the last two weeks preparing for the Steam Early Access release. There were some bugs in the netcode, mostly edge cases that happen once in 100 games. I did A LOT of play testing, and got some really fun runs, like this one with a bunch of pet animals and melee skill buffed to 250%. Unbeatable.

I balanced some weapons and enemies, and added some play statistics. Some of the tough rooms no longer show on the first few runs. Beside that, there are some potions and scrolls that also unlock after a couple of games. The game is roguelike, but I don't want the players to be hammered by too challenging world on their first play. After you play 20+ games, you'll get the full sets of enemies, scrolls, potions, room layouts, etc.

The game's coming out on November 10th as planned. Get ready for Thursday...

Feedback & Share Bigosaur, 2016-11-05

MMiaW: Blood is optional

Based on some player feedback, blood effects are optional now:

The possible settings are:

  • No blood at all
  • Only stains on the ground
  • Only flying particles when some enemy or player is hit
  • Full blood effects (both stains and particles)

Having stains makes the levels look nicer, especially the boss rooms. However it's permanent, so I think some players might want to turn it off. The splash when you hit an enemy is temporary, but I understand it could be over the top for some players, so I made that optional as well.

It took some testing to get netcode working right, because blood effects use RNG to set up and it would mean that the same seed now generates different levels based on the blood setting. I fixed blood to use a separate RNG and not mess with level generator.

Only 10 more days until Steam release...

Feedback & Share Bigosaur, 2016-10-31

MMiaW: Enemy health bars

I have been quiet with adding new features to the game as I was preparing for the Steam release. Many bugs were fixed, netcode works properly again, and I made some changes to enable full controller support. That's right, now you can lean back and play it all with a controller, even stuff like entering player names and password codes for online multiplayer.

The Glacier has been nerfed a little bit - the special Freeze All Enemies power is now magic based instead of rage based. It needs 2 mana bars to activate. It's still very powerful, but not game breaking anymore.

I also added health bars to enemies:

I was a little bit conflicted about this change. Neither Castle Crashers nor The Binding of Isaac have those. But Rampage Knights has, and the combat feels better. You would rarely look at the health bar for the enemy, but sometimes it gets important, esp. when you're dealing with bigger crowds - it makes it easier to pick those you can one-shot and remove from the battle. I understand some players might not like it, so it's optional. You can turn it off in the Graphics settings.

Feedback & Share Bigosaur, 2016-10-20

MMiaW: Celestial Smasher

Here's a run showing the first two levels. The game is procedurally generated on every new play, so you get to use different weapons. The video shows what you can do with the Celestial Smasher hammer.

The game's Steam page is up: store.steampowered.com/app/539400

Feedback & Share Bigosaur, 2016-10-09

MMiaW: Greenlit

My Mom is a Witch has passed the Steam Greenlight process. Expect to find the game in Early Access soon.

Why Early Access? Well, the game is far from my full vision. We have all the character graphics, but we still need a lot of backgrounds, props and animations. I want to get the game into player hands, so we can get some cool ideas on mechanics for future monsters and items. There are about 50 different items and weapons in the game currently, but I want the final release to have over 100. I already have a lot of ideas in my notepad, and I want to refine that with player feedback.

The plan is to go into Early Access by the end of the year. I will release updates with new features every two months until we reach version 1.0 which will contain: 7 playable heroes, 44 enemies, 20 bosses, 100 items/weapons and 7 different areas.

Feedback & Share Bigosaur, 2016-10-05

MMiaW: EGX 2016

I just got back from Birmingham UK where I demoed My Mom is a Witch on EGX. I had a double stand setup with two computers running the game. Four players could play on the left one, and two on the right one. The laptop in the middle just looped through the trailers all the time.

EGX is awesome for playtesting. The game logged the play stats in the background: 1682 player-sessions were played. We gave away about 800 flyers to people who played the game, so everyone played about two games on average. Having two computers and multiplayer allowed a lot of people to try it. The event ran for four days, Saturday being the most crowded:

EGX was open an hour longer during the weekend days, but that additional hour didn't bring in many players. Here's the breakdown by the hour:

There were different categories of passes. From 10am to 11am only members of the press and players with super pass would come in, but they were mostly interested in AAA games, so it was rather quiet on all indie stands during that time. At 2pm there would be a huge influx of new visitors who had the afternoon pass, and when they browsed around and determined which games they want to play the interest for My Mom is a Witch would peak around 3pm.

Playing sessions

My Mom is a Witch can be hard for beginners, so the average playing session took only 3 minutes and 21 seconds. Most of the players started a new game if they died quickly. Here's the breakdown of the sessions:

Action rougelikes are great for events like this because of the short length of a single game. Since play sessions are short many people can try the game. Contrast this to an RPG that might take 30-40 minutes to try out and get to the core. In total, we had about 49 hours of playing time spread across two computers and four days, making it an average of six hours of play time per computer per day.

I also tracked how far into the game would the players progress:

90% of the play sessions were long enough to experience the game properly. Almost half of the games went deep enough to discover some of the cool content like the item/potion/pet shop, treasure room or the boss fight. Since most of the players played twice it means that everyone has seen at least something. Of course, the game is roguelike and you only get to try a subset of weapons, items and mechanics on each playthrough.

One of the goals for EGX was to get My Mom is a Witch through Greenlight. It was a failure in that regard.

For the first three days, we only got nine Greenlight votes. Saturday evening I did some major changes to the game. I added a revival timer for multiplayer games, which made the game more fun. Also, I changed some of the controls to make it more intuitive to the players. This resulted in many happy faces and we got 30 votes that day. Still, going all the way to Birmingham to get 40 greenlight votes (or even 120 if we had a better build ready from the start) isn't really a good deal.

TL;DR: Greenlight marketing has to be done some other way.

Feedback & Share Bigosaur, 2016-09-29

MMiaW: The Red Dragon

The Red Dragon is one of the toughest bosses in the game. He can spit fire and smash the heroes from above.

For this fight I had a really cool combination of buffs: Appetite +2 and Gold Diet +2 which restored 11 HP for each gold coin I ate. My co-op partner died while beating up more than a half of dragon's HP. Funny enough, the final two blows were dealt by a Bat, one of our pets.

Feedback & Share Bigosaur, 2016-09-10

MMiaW: The King's Guard

The second level will have new unique enemies. First there are guards:

The guards are quick and deadly. They can throw spears from a distance, or stab you when too close:

Their spears have great range, longer than all standard swords, so melee combat against them is very challenging.

Feedback & Share Bigosaur, 2016-09-03

IndieCade Europe 2016

IndieCade Europe

It's official! I'm delighted to inform you that My Mom is a Witch has become one of the games selected for IndieCade Europe 2016:

http://europe.indiecade.com/?p=339&lang=en

If you want to see the game live, come to Paris on November 18-19, 2016. Here's a list of all the games that will be featured:

http://europe.indiecade.com/?page_id=42&lang=en

See you in Paris!

Feedback & Share Bigosaur, 2016-08-28

MMiaW: Spitfire and damage types

I'm adding some screens without enemies, but with traps instead. It creates an interesting variety. Instead of just plowing through the piles of enemies, sometimes you have to stop and carefully thread across the screen. Of course, some screens will combine enemies with hazards, which you can use to your benefit.

These spitters shoot fireballs. Fire is one of the most dangerous types of damage. Here's a breakdown of the types of damage the game has so far:

Petrify
Turns into stone within 10 seconds. Counter with Life Staff or Dragon Fire Potion.

Fire
Burning drains health really fast. Regular fireballs, walking onto a campfire or getting hit by a spitter drains 50-60 health in a couple of seconds.

Ice
Doesn't do any damage, but prevents movement/attacking for a couple of seconds.

Poison
Slowly drains health. Can only be stopped with Dragon Fire Potion or Antidote.

Hunger
Very slowly drains health. Can be stopped by eating any type of food, including gold coins if you have the Gold Diet buff.

Feedback & Share Bigosaur, 2016-08-27

MMiaW: Battlements

It's time for the second level. As our heroes launch themselves with a catapult into the castle, they land on the top of the battlements:

As the goblin invasion is in progress, the battlements are filled with dangerous war machinery. The castle guards are defending a siege and have prepared various weapons and traps for the invaders. You are intruding here, so prepare to deal with the guards and the hazards at the same time.

The second level is meant to be more dangerous, but possibly shorter than the forest area playwise. You're walking around the battlements looking for a way to enter the castle insides.

Feedback & Share Bigosaur, 2016-08-21

MMiaW: First gameplay trailer

Here's a video showing the some gameplay of the first level:

Feedback & Share Bigosaur, 2016-08-21

MMiaW: Launch into the castle

The forest level ends like this:

I'm drawing the Castle Battlements (roof area) now and soon I'll start animating enemies for the Castle levels.

Feedback & Share Bigosaur, 2016-08-07

MMiaW: The Knight

The Knight is fully animated, programmed and ready to go:

Compared to the mage, he has a couple of extra melee animations. The weak attack has three animations instead of just two and there's a special smash animation which activates when the last enemy in the area is lying on the ground:

Feedback & Share Bigosaur, 2016-08-06

MMiaW: Potion shop

Sometimes a special kind of room will be created in the maze: a potion shop, pet shop or a quest room. More on quest rooms later, but here's the potion room:

Feedback & Share Bigosaur, 2016-07-23

MMiaW: Voodoo Magic

If you snatch a voodoo doll from the Goblin Shaman, you can use it yourself once per area. You first bind it to a target and then drop it. Any damage dealt to the doll is channeled to the target. For example, if you stomp the doll, the target takes damage and falls on the ground. If you hit it with a sword, the target gets stunned and takes damage. If you hit it with a poisoned sword, the target gets poisoned. If you toss the doll into a fire, the target starts to burn:

It took me some time to make this work properly for all the effects, but it's a really cool mechanics now. If you get bound to the doll, wait for Shaman to throw it down and then quickly pick it up and activate it to remove the binding from yourself and bind it to some enemy.

Feedback & Share Bigosaur, 2016-07-17

MMiaW: Hammers and freezing effect

Hammers are often an interesting combination of melee and magic weapon. The standard attack is a melee attack, but special attacks can be varied:

The freeze graphics is generated dynamically at run-time. Because of this the enemies really instantly freeze in place.

And here's the ice hammer:

Ice Hammer's special attack is freezing all enemies on the screen at once.

Feedback & Share Bigosaur, 2016-07-15

MMiaW: The story

I have some cut-scenes planned for the final game, but currently a couple of placeholder images will do the job of showing the game plot:

Feedback & Share Bigosaur, 2016-07-14

MMiaW: The first screen

The first game screen features 5 different NPC characters that teach you the basic game mechanics:

Some dialogs show up only if you have an appropriate type of weapon. You can hit anyone. Some of the NPCs will bear it until they die, while others might run away. At first I wanted to make everyone change their dialog when you hit them, but this is a tutorial screen and you might hit someone accidentally and miss an important part of the dialog that way.

The archery is not covered. The idea is that bows are locked down and don't drop until you unlock the Archer. Once you rescue the Archer, he explains how bows and arrows are used.

Feedback & Share Bigosaur, 2016-07-12

MMiaW: Archery

There are three main skills in the game: Melee, Magic and Archery. Finally, all animations for the mage character are now complete:

There will be a great assortment of bows and arrows available with different damage and special effects like fire, poison, freezing, petrifying, slowing, etc.

Feedback & Share Bigosaur, 2016-07-11

MMiaW: Bushido

If you attack a shopkeeper, you can snatch any item for free. However, he has a bodyguard:

There are various ways you can defeat him though, but it's often very risky:

Feedback & Share Bigosaur, 2016-06-01

MMiaW: Goblin Bomber

Here's the first purely ranged enemy. He still gives you enough time to escape the bombs:

He sometimes hits other goblins, so you can use that to your advantage:

Feedback & Share Bigosaur, 2016-05-24

MMiaW: Meteor shower

The goblin shaman's main weapon is the Meteor Staff. I'm testing how the meteors work:

Looks like I forgot to limit the meteor count ;)

Feedback & Share Bigosaur, 2016-05-18

MMiaW: Goblin Shaman dance

Here's the first magic caster enemy. It's a goblin shaman. He does a magic ritual dance before attacking you from a distance:

Feedback & Share Bigosaur, 2016-05-14

MMiaW: Updating character selection screen

The character selection screen has some basic stats like Archery, Melee and Magic proficiency:

Those numbers are percentages. For example, if a Sword does 12 damage, a hero with 100 Melee will deal 12 damage when he hits, while a Hero with 50 Melee will only deal 6 damage. Those skill numbers can increase and decrease during game with various potions and artifacts.

The character on this screenshot has both Magic and Melee at 100 for testing purposes, but there won't be any such character in the game... Actually, one class (Paladin) will be close, but it will have something like 100/70/30 for Melee/Magic/Archery.

Feedback & Share Bigosaur, 2016-05-13

MMiaW: Spiked balls

Here's another environmental hazard:

I call them SpikeBalls. Does anyone know the real name?

Feedback & Share Bigosaur, 2016-05-12

MMiaW: Death animation

Is this cute, silly, or ?

Feedback & Share Bigosaur, 2016-05-10

MMiaW: Rings

You might discover rings that give you special powers of the second sight. For example, the blue one allows you to see inside locked chests.

Feedback & Share Bigosaur, 2016-05-09

MMiaW: Treasure

On every level there will be some areas that are behind locked doors or simply blocked paths. If you manage to find keys or blast your way through (or teleport across, or ...) you can get inside and loot all the chests. Well, maybe not all. Some chests are locked and you need a key to open those.

This beautiful gold chest is a drawing by George Alexopoulos who will be contributing some more art to the game in the future.

Feedback & Share Bigosaur, 2016-05-08

MMiaW: Weapon Upgrades

During the adventure, you will be able to upgrade your weapons as well. The upgrade material are the runestones, magic stones of unknown origin that can be used to improve damage and range of your weapons. There are different runestones for melee, magic and ranged weapons.

The upgrade animation is still work in progress, but I'm getting there:

Feedback & Share Bigosaur, 2016-05-07

MMiaW: Teleport

So many ways to escape when things go south: blast a door with a bomb, use a scroll to open doors, use a key if some of the doors are locked... but now there's one more. A magic scroll that teleports you to a random location somewhere else in the forest:

It never teleports you into a boss fight, but anything else is possible.

Feedback & Share Bigosaur, 2016-04-30

MMiaW: Bombs

Bombs have three different purposes in the game: 1. blast the rocks to find some items hidden underneath and to open some blocked passages. 2. blast doors to escape tough battles or locked doors when you don't have a key. 3. blast your enemies. This 3rd use is hard to do because the enemies are constantly on the move, but it's great for bosses because most of them will be stunned for a couple of seconds if the bomb hits them.

Yeah, those exploding barrels are really in the game, but they have a special role. It's a secret you will have to discover while playing.

Feedback & Share Bigosaur, 2016-04-25

MMiaW: Where there's smoke, there's (camp)fire

Campfires are the first hazard in the game. If you step on it, you are set on fire for a couple of seconds, which is enough to deplete 80% of a fully healed hero. At least, until you buff your hit points. The fire does not kill you ever, but it can lower your HP to just one point and then a single enemy hit will bring you down.

Enemies try to stay away from it, but with some skill you might be able to push them into fire by a well placed sweeping attack.

P.S. unlike this .gif, the animation doesn't skip frames in the real game ;)

Feedback & Share Bigosaur, 2016-04-23

MMiaW: Green Flame

Yes, I like Acquisitions Incorporated ;)

Here's a cool combo. If you get both the Snake Staff (poison) and the Fireball Staff (fire), you can buff the Fireball Staff with poison to shoot poisonous fireballs:

Enemies that get hit will be set on fire and poisoned at the same time. Somehow the burning animation is missing here, I need to fix that.

Feedback & Share Bigosaur, 2016-04-21

MMiaW: Pyromancies

It's time to play with fire. One of the playable characters will be a fire mage, so I decided to play with various fire effects. Wands can shoot fireballs which explode and enemies can players can be set on fire and lose a lot of health while burning:

Here's some animated action. The mage is still using the Snake Staff to fire fireballs, but there will be a special Fire Staff in the final game:

Feedback & Share Bigosaur, 2016-04-19

MMiaW: More levels

I got so many new elements, I guess it's time to build some variety of levels. Currently there are 15 different level layouts for the forest, but I plan to have at least 60 for the first alpha version:

Feedback & Share Bigosaur, 2016-04-17

MMiaW: Shop

There will be shops on each level, where you can buy various items like potions, bombs, scrolls, weapons, etc.

I plan to have a special potion shop that only sells potions and a pet shop that sells... well, pets.

Feedback & Share Bigosaur, 2016-04-14

MMiaW: Catapult

The first level ends when you catapult yourself into the King's Castle:

Feedback & Share Bigosaur, 2016-04-13

MMiaW: Sneaking behind Ogre Mom

If you try to pass behind her back, you might get smacked in the back:

I'm also planning an arena for the boss fight. There will be a small building for goblin warriors to come out and help the Ogre and there's a catapult that you can use when the battle is over

The boss room will have a distinct door which cannot be blasted with bombs:

Feedback & Share Bigosaur, 2016-04-12

MMiaW: Ogre Mom

Here's the gruesome animation. I still need to work on some dust effects on the ground where the club hits:

Feedback & Share Bigosaur, 2016-04-11

MMiaW: The first Boss

Here's the first boss: Ogre Mom:

She can be challenging, especially for beginners. She will have several different attacks, the main one hitting you with that huge club:

It shows zero damage, because the player is invulnerable during testing ;)

Feedback & Share Bigosaur, 2016-04-09

MMiaW: Time for some magic scrolls

Here are the magic scrolls. Of course, first comes the less interesting part, like picking them up, storing in inventory, etc.:

And then comes the fun part, i.e. using them:

Feedback & Share Bigosaur, 2016-04-08

MMiaW: Throwin' that Axe

As promised, you can pick up enemy weapons and use them. Goblin axe has a simple overhead strike attack mapped to the fast attack button. Pressing Strong attack button throws it:

When your rage meter is full, you can use the sweeping mega throw attack:

Feedback & Share Bigosaur, 2016-04-07

MMiaW: Mayhem

I'm testing my game engine to see how it behaves in big battles:

Two players, 15 enemies and it works as smooth as with an empty screen. The game will run on a 10-year-old Core2Duo CPU with integrated Intel graphics card at 60fps with smaller resolutions like 1366x768. For HD screens it pushes about 53 fps on that config, but if you have just a little bit stronger CPU or dedicated GPU like nVidia or AMD it will work just fine. It only requires OpenGL 1.1, so even some really old hardware will be able to run the game.

Feedback & Share Bigosaur, 2016-04-06

MMiaW: Magic Multishot

I got the multiple shots working. Reminder, it's an effect of one of the potions:

You get more shots, but each orb is weaker. When you start a game with mage you make 6 damage per orb. When split, each orb does 5 damage, but you fire two orbs at once, so that's 10 damage, a nice increase. Of course there are other ways to increase damage back up:

A good combo is when you add poison to it. You can easily poison multiple enemies at once:

Feedback & Share Bigosaur, 2016-04-05

MMiaW: Some bugs are funny

Due to my mistake parts of two goblins got mixed up:

This looks so funny, I just had to post it. Anyway, the axe throwing works now:

Feedback & Share Bigosaur, 2016-04-04

MMiaW: Goblin Berserker

Presenting Goblin Berserker:

This goblin combines ranged and melee into a single unit. His rage increases even without hitting an enemy and when the rage is full, he throws the axe towards the player. When up-close, he uses the axe to fight in classic melee strikes.

Goblin Axe is a very desired weapon for warriors. It can be thrown from a distance. If your rage meter is full, the thrown axe is unstoppable and flies across the screen knocking everyone down.

Feedback & Share Bigosaur, 2016-04-03

MMiaW: Locked doors and keys

Each level in the game will have one or more locked rooms with treasures.

You can unlock the rooms with keys or blast the doors open with bombs. Or you can use magic scrolls that open doors magically.

Unlocked doors are not controlled by monsters, so you can use them to escape from tight battles.

Feedback & Share Bigosaur, 2016-04-02

MMiaW: Barrels and boxes

Every game has some elements that are boring and unexcited to make but still important for player experience. Here are the boxes and barrels.

You can break barrels and boxes and find some items inside. Usually it's food and coins, but sometimes you may find keys, bombs, arrows, potions and other consumable items.

Feedback & Share Bigosaur, 2016-04-01

MMiaW: More potions

Here are some other mysterious potion effects. Some are positive, some negative, and some balanced. For example, this one reduces your hit points but increases magic. Magic skill determines the damage and size of magic projectiles, and effectiveness of magic caused effects like using magic to buff weapons with poison. The game will also feature magic scrolls and the player would need to have a certain magic skill threshold to be able to understand what the scroll does before using it. Of course, if you are a warrior, you could still read the scroll and activate its magic, but some of the scrolls have really bad effects.

Potions can also increase your base skills, even to the point where it would make sense to switch class. For example, if you buffed up archery skill and range a lot, it would be a good strategy to start using bows and arrows.

Feedback & Share Bigosaur, 2016-03-31

MMiaW: Telepathy

On your adventure, you will find different magic potions. These potions are colored differently on each playthrough. For example, blue potion can mean stronger magic in one game, and faster speed in the next game. You can discover their effect with an Identify scroll, or you can take a chance, drink and see what happens.

This one allows you to see the enemies in adjacent areas. (1B) means that the effect will wear off after one battle.

Feedback & Share Bigosaur, 2016-03-29

MMiaW: Drops

Enemies drop some loot when they die:

Feedback & Share Bigosaur, 2016-03-27

MMiaW: Mega Strike

Every melee weapon in the game has a special rage attack. Swords mostly have some kind of dashing, axes can be thrown, hammers will be able to call on help from the gods and clubs become 3 times bigger than usual and smash down the enemies

Here's the animation:

Feedback & Share Bigosaur, 2016-03-26

MMiaW: Dashing attack

Most swords have dashing as special rage attack:

Feedback & Share Bigosaur, 2016-03-26

MMiaW: Stomp complete

Here's the final version of the stomp animation:

Feedback & Share Bigosaur, 2016-03-25

MMiaW: Stomp

When enemies are knocked down, you can stomp them or smash your weapon to the ground to hit them real hard. Of course, when an enemy is on the ground, the hitbox is different, so I'm fine tuning that now.

You will be able to run and jump from a short distance. Unlike the knight, the mage jumps because he's too light to do the ground smashing attack.

This looks so cool, I might add a long-jump competition to the game.

Feedback & Share Bigosaur, 2016-03-23

MMiaW: Approaching from the back and switching weapons

Goblins with shields cannot be attacked when they raise the shield, so you have to got around and attack from back:

When you defeat them, you can pick up their sword and use it:

Feedback & Share Bigosaur, 2016-03-22

MMiaW: It's hack and slash time

I'll let the animation speak for itself:

Feedback & Share Bigosaur, 2016-03-21

MMiaW: Preparing the sword swing attack

I just made this nice swoosh in Gimp for the sword swing attack.

It can also be used partially (on the first strike frame):

If you press attack button during the up-swing, the hero also does the return-swing to get back to initial position:

Feedback & Share Bigosaur, 2016-03-20

MMiaW: Healing animation complete

It's simple. You drink a health potion and regain hit points.

I added some particle effects to make it interesting:

Feedback & Share Bigosaur, 2016-03-19

MMiaW: Buffing weapons with poison

Poison buff animation complete:

Hope you like the bubbles.

Feedback & Share Bigosaur, 2016-03-18

MMiaW: Drinking

While toying with a nice pose to drink potions...

...I figured I need to remove the cork (plug) from the vial. Looks pretty good now:

Added a small emotional touch to it ;)

Feedback & Share Bigosaur, 2016-03-17

MMiaW: Small health potion

You can find various potions in the world. Some are dropped from fallen enemies, some are found in chests, some are stored in barrels and boxes, some even hidden under the rocks which you will be able to destroy with bombs. And you will be able to buy some in shops as well.

Here's a small health potion. At the top, you can see what it looks like in the player's inventory, and underneath is how you pick it up.

It heals 20 hit points, which is equal to one red bar. You can stack multiple potions of the same kind, so they only take one inventory slot.

I made a separate magic particle effect animation for smaller items like this one.

Feedback & Share Bigosaur, 2016-03-16

MMiaW: Special magic powers

One of the characters available at the start of the game is a mage who has a Snake Staff as the primary weapon. The Snake Staff fires basic blue magic orbs and has a special ability to imbue poison to weapons. It can imbue poison to itself as well, so you get to fire poisoned orbs.

The amount of poison damage depends on the player's magic proficiency. At 100% it's going to be 3 poison damage every 1.5 seconds (it only shows 2 in the screenshot, because I messed around with player stats and it wasn't at 100%). If a player is not very good with magic (say, a knight has only 30%), it will only do one poison damage in the same interval.

The poison does not kill, but it can completely drain the health points, and then it only takes one hit to finish off the enemy. The same goes for player characters.

It can be also used to make swords poisonous, or even some more deadly combinations: for example, if you find a fireball staff, you can make it poisonous as well, and it will shoot fireballs that set enemy on fire and poison him at the same time.

Feedback & Share Bigosaur, 2016-03-15

MMiaW: Magic orbs hit and explode animation

Magic orbs break apart when they hit an enemy, some obstacle or lose velocity and fall to the ground

In the actual game, the goblin gets knocked back a little bit further after each hit, but this .gif loops, so it looks like he's just shaking a little.

Feedback & Share Bigosaur, 2016-03-14

MMiaW: Weapon pickup

You can pick up weapons of fallen enemies:

You will also be able to pick up weapons that drop from chests, barrels, boxes, etc. I spent a couple of hours experimenting until I got this cool magic hovering effect:

The .gif doesn't loop perfectly, but you can still see it.

Feedback & Share Bigosaur, 2016-03-13

MMiaW: Crowd control

Add a bunch of goblins and the action becomes intense. I have improved the AI, so now they don't walk over each other anymore. They are trying to surround the player from all sides.

Using melee weapons really feels like playing a true brawler game like Castle Crashers.

Feedback & Share Bigosaur, 2016-03-12

MMiaW: Dual stick shooting

The basic magic staffs fire magic orb projectiles. Some other staffs will be able to launch fireballs, ice bolts, etc. Here's the ice projectile:

When wielding a magic staff, the player can walk in one direction and independently shoot in a different direction. It's very useful when you are retreating:

If you are using a controller, one stick controls the movement and other the shooting direction. Because of the way the game is played, only left and right directions are available for shooting. Although, with some upgrades, you can get diagonal and homing projectiles as well. If you play on keyboard, there are two keys assigned to shoot left or right.

Feedback & Share Bigosaur, 2016-03-11

MMiaW: A third (and final) iteration on UI

I believe I finally nailed the design for the player info overlay:

Here's the explanation how it works:

Feedback & Share Bigosaur, 2016-03-10

MMiaW: A second stab at user interface

I tried playing the game with the previous UI idea which had a horizontal bar for Health, Mana and Rage. However, it's quite unclear that Mana and Rage are tied to the weapons and items. So, now I'm changing the layout: there's only one Health bar at the top - the Mana and Rage bars will be shown alongside weapons and items that require them.

Don't be confused with the portrait image - I'm currently controlling a goblin instead of the hero, because his animation set is complete.

I think this layout will work, but I'm not really happy with the graphics. Need to experiment with some other designs....

Feedback & Share Bigosaur, 2016-03-09

MMiaW: Dead goblins and weapon drops

One of the ideas in MMiaW is that you can pick up any weapon from a defeated enemy. Here's what the goblin looks like when he's dead:

You can then pick up his club and use it to attack.

Feedback & Share Bigosaur, 2016-03-09

MMiaW: Animations and basic AI

Not much to show on the screenshot, but the Goblin Clubber and Goblin Shielder are fully animated and the basic AI works: collision detection, avoiding obstacles, moving towards the player and attacking.

The hitboxes mostly work ok, although there are some subtle bugs (see the club tip for example) that I need to fix.

Feedback & Share Bigosaur, 2016-03-08

MMiaW: UI overlay

Here's the user interface. I'm still not 100% sure whether to show the player stats on top or bottom. The game can be played by 4 players, so maybe I can show two players up and two down, or something like that.

The red bar is health, the blue is mana, and the green one is Rage. The rage fills up when you hit enemies with melee weapons and when you get hit. When the rage bar is full, you can use a special melee attack which will depend on the weapon type (sword, axe, spear, hammer, club).

You can see the two weapon slots, but I plan to allow players to carry some items as well. Not sure where I will show those.

If you wonder what's that blue ball: the magic staff shoots magic orbs that resemble tears in The Binding of Isaac. This is the most basic projectile. Other wands will fire different ones. For example the Staff of Fire will shoot fireballs that set enemies on fire; the Staff of Ice will shoot ice bolts that freeze the enemies, etc.

The map

In the meantime I gave up on the smaller screen idea. 1366x768 sized rooms are too small for big 1920x1080 monitors. Although you can see multiple rooms at the same time, it would still mean that 40% of screen is unused. I tested and there's just too much empty black space on the screen. So, I decided to make the rooms wider. The room size is now 1920x720. Players with smaller screens will scroll left to right, just like Castle Crashers. There is no vertical scrolling. If you have more than 720p high screen you will be able to see more of the beautiful backgrounds that extend at the top of the screen.

Because the rooms are rather wide (or should I say: long?) now having a single entrance vertically doesn't work well. Because of this, I'm changing the maze layout to hexagonal rooms. Each room can have 6 different exits. The new maze generator already works, and here's the minimap:

This one shows small rooms and it's optimized for 720p screens (768px, 800px, etc.) If you have 900+ it starts showing a bigger minimap. Once I add all the different room types I will add markers for different rooms and perhaps if you left some important items somewhere. And there will be magic spells to discover the whole map.

The white rectangle is the current room, light ones were visited and dark ones you know about (have seen the door to it) but haven't been inside.

Feedback & Share Bigosaur, 2016-03-07

MMiaW: Action

This character is a mage, but I decided to animate him first. Mages can pick up melee weapons and attack too - they just deal less damage than knights. You can pick up any weapon that the enemies drop when they die. In this shot, the mage is using a goblin club :)

The font for damage numbers is bad, I'm experimenting with some others. Sorry about the small yellow crosses - I'm using those to determine the hitbox using some basic trigonometry. The cross should represent the location of the weapon's tip.

Feedback & Share Bigosaur, 2016-03-06

MMiaW: Goblin Defender

Here's the second goblin. Once you attack him, he raises his shield and then he's only vulnerable to very strong attacks. However, you can sneak behind his back and hit him.

I built a custom animation engine. I make animations in Anime Studio Pro and then export them into JSON. Then I massage this JSON format into C++ code that I include directly into my project. Since I don't have a player character yet, I'm using the keyboard controls to move the goblin around:

P.S. This .gif animation has a slower framerate than the game. The goblin actually moves a little bit faster. The game runs at constant 60 fps all the time.

Feedback & Share Bigosaur, 2016-03-05

MMiaW: Doors

Here are the doors between forest areas in open, closed and blocked state. You can blast the blocked doors with bombs to discover secret stash of treasure chests. The regular doors close when there are monsters on the screen, so you have to beat them to go further. Or, you can blast the door open with a bomb and escape the battle. Beside this, there will be a magic spell that opens doors.

I also plan to add a special Boss door for the boss room, and locked doors for which you'll need a key to unlock. I'm not sure if the shop needs a special door as well?

Feedback & Share Bigosaur, 2016-03-04

MMiaW: Character selection screen

The character selection screen works now:

The game can be played with 1-4 players. So far the local co-op works, but I plan to make the online multiplayer as well.

Feedback & Share Bigosaur, 2016-03-04

MMiaW: Main menu and forest background

The main menu is fully functional now. I'm reusing the custom engine from my previous game, so all I needed was a good font and some nice graphics to make it work:

I plan to add some goblins who would walk across the screen down in the forest. Just need to animate them first.

This will also be the base background for the forest levels.

Feedback & Share Bigosaur, 2016-03-04

MMiaw: The Story

You mom is a witch. Together with your brother, the three of you live in a forest. One day, the king's soldiers show up at your home and take her away without any explanation. As a player, you can choose one (or both in co-op) of her sons to go on a rescue mission. One of the sons is a young sorcerer and the other one is a warrior.

In the meantime, someone has stolen a powerful ancient artifact from the goblins who live in the nearby forest. Angry goblin patrols are searching the forest for the thief.

You need to avoid or fight the goblins to reach the castle, and then find a way to get inside. On your adventure, you can rescue or recruit other heroes to help you on your quest. (up to 4 players will be able to play in co-op mode, with 12 different playable characters).

Once inside the castle, you try to reach the dungeon hoping that the mom is locked up and alive. Meanwhile, the goblins track the thief to the king's castle gate, and they demand their artifact back. The king soldiers cannot find the thief and aren't able to produce the artifact. The goblins demand to come inside and find it themselves, but the king refuses. The goblin siege begins and soon they manage to break down the defenses and come inside... now you need to fight both the goblins and the guards. They fight against each other too.

But the real reason why your mother was taken away remains a mystery until you find her...

(rest of the story in game)

Feedback & Share Bigosaur, 2016-03-04

MMiaw: The first enemy

Here's the first enemy for the My Mom is a Witch game. I'm still playing with different poses in Anime Studio Pro:

The forest will feature 4 enemy factions: goblins, bandits, skeletons, and various animals: bees, bears, etc. This is the most basic goblin melee unit with short range, but powerful strike that deals a lot of damage. He's slow and heavy, so make sure you don't get hit.

I need to put some work in that swoosh effect to make it look better...

Feedback & Share Bigosaur, 2016-03-03

Room layout for a game like the Binding of Isaac

My Mom is a Witch will feature dungeon crawling with rooms, similar to what Binding of Isaac game does. Unlike Isaac, I want graphics in MMiaW to be pixel-perfect, without stretching artifacts.

The target platform for MMiaW is PC. I looked at the Steam hardware surveys, and it seems that two resolutions dominate: 1366x768 for laptops and 1920x1080 for desktops. I plan to design the game rooms to fit perfectly into the smaller, 1366x768 resolution. Players who have even smaller screens won't be able to see the whole room at once, it will scroll. Players who have biggers screens will be able to see multiple rooms at once. This way the graphics will always be sharp.

I also contemplated making the room size different based on the player's screen resolution, but I want the game to have online multiplayer as well and for that reason the rooms have to be the same size on all computers.

Feedback & Share Bigosaur, 2016-03-02

Witch fonts and graphics

Finding a good font for the game logo takes some time and experimenting...

Here are some trees, bushes and flowers for the forest levels where the story starts.

Feedback & Share Bigosaur, 2016-03-01

My Mom's a Witch

In the past 7 months I have been planning a new game to make. It will be a multiplayer action brawler like Castle Crashers with cartoony graphics. The main problem I have with CC is that once you complete it, there's no incentive to play more. So, I decided to combine the brawler mechanics with roguelike elements: permadeath, procedural generation of levels, items, enemies, etc. and non-modal gameplay (esp. important if you have 4 players playing).

I have most of the concepts on paper and spreadsheets and some 60% of the graphics is ready (still need to work on animations and special effects a lot). Current plan includes: 12 heroes, 44 monsters, 16 bosses and 6 different environments (forest, battlements, castle, dungeon, catacombs and a special ice level). Additionally, 50+ different weapons and items will be available to loot and use for the first version, and more planned later.

There will be 3 distinct play styles available, focusing on melee, ranged or magic combat. The player's starting class would determine the proficiency (i.e. base damage and effect modifiers) but the player can upgrade during the game and become multi-class if desired (and RNG does not get in the way). Melee combat is going to work similar to Castle Crashers with additional "rage" mechanics, which is a meter that fills up and you can use a special attack then.

The levels will be laid out like rooms in the Binding of Isaac with boss fights at the end of each level. The mana system and magic items will work like batteries in Isaac (i.e. you need to complete a couple of rooms before reusing the special magic) and the regular magic users can constantly shoot various weak projectiles similar to tears in Isaac.

I plan to post my progress every day, so stay tuned

Feedback & Share Bigosaur, 2016-03-01

Seeders (was The Final Jump)

I finally got the whole game story in place. A group of skaters learns that their playground is going to be demolished and turned into a mall. They consider all their options and the only possible way would be to steal the permits and other documents from the construction company (not, really, but in their teenage minds that should do it). One of them decides to steal them, but goes missing. You are his friend, determined to find him.

But, that's not all. The real story actually starts 10000 years ago when an alien Von Neumann colonization ship lands on Earth. It's task is to seed the Earth with plants that would convert the atmosphere and also to eliminate any intelligent life that could oppose colonization. However, something goes wrong and hibernated aliens aboard the ship never wake up.

Until a construction company starts digging around, accidentally turns on the ship's systems and aliens take it over. The aliens learn about humans and decide they need to build a robot army to exterminate us. The Mall location is the perfect facade to build an underground factory without raising any alarms.

I'm currently preparing a demo of the game, which will include most of the first chapter. It won't feature any aliens, only the puzzles that lead to the construction company headquarters. So, don't worry about spoilers, the real story starts unveiling after the demo.

Feedback & Share Bigosaur, 2015-03-10

Seeders: The First Encounter

Here are some images from the game. Checkpoints:

Elevators

I'm currently preparing a demo of the game, featuring the first chapter which won't feature any aliens, only the puzzles that lead to the construction company headquarters. So, don't worry about spoilers, the real story starts unveiling after the demo.

Feedback & Share Bigosaur, 2015-03-10

The Final Jump: pixel art

I'm ditching the dark-art idea. The game should be fun and bright. I wanted to draw a game with pixel art for some time, and I guess the time is now. Here's my idea for the lead protagonist:

His passions are driving a spaceship and listening to heavy metal music. I need to work on his legs and...

...well, everything below the head. :)

If you got some suggestions, let me know.

Feedback & Share Bigosaur, 2014-11-20

The Final Jump: dark art

I'm experimenting with different art for the game. Here's the dark version.

The light version does not look that good, but plays much better because brick types are distinct enough and it's clear what you can do. Maybe I should look for a third art style, something like Braid?

I'm not sure what to do next. I got a lot of puzzles prepared but don't want to waste time making the, just to have to redo everything if I decide to change the art style.

Feedback & Share Bigosaur, 2014-11-19

The Final Jump: puzzle platformer

Starting this year I wanted to develop some applications for iPhone and iPad, so I got a Mac Mini. My other computers are 7+ years old, so I couldn't run any recent games. Over the years I accumulated games via Humble Indie Bundles and I finally got to play them. I'm very impressed with Braid, VVVVVV and Limbo.

A few days ago I realized that I wanted to play more puzzle platformers like those, but there aren't many around. So I decided to build one. The idea is to take from each game the element I like:

  • Braid: brilliant puzzles
  • VVVVVV: old school graphics
  • Limbo: continuous camera, puzzles with box2D physics and scripted enemies

The main gripe I have with all of those games is that they were too short (ok, Braid maybe not so, because puzzles were hard). I plan to make A LOT of levels in my game AND I will make a level editor with “cloud save”, so you'll be able to upload and share levels on the game's website. Other players will be able download and rate the levels. If players really start contributing a lot of levels, I'll pick the best ones, pack them together to continue the main games story in a nice way and release as a DLC package.

Because of this, editing levels should be fun. My plan is to mix editing and play mode, so you can play the level as you edit it. Just drag the player, walls, boxes around. You will be able to freeze the enemies and such, but editing should be as fun as playing.

Also, my kids are begging me for multiplayer mode, so it might have separate local co-op puzzles for 2-3 players. Joystick/Controller support is also a must as I plan this to run on desktop computers (Windows, Linux, Mac).

Feedback & Share Bigosaur, 2014-11-05

Gods of Sparta: final release + video

It's all done. Here's a video showing gameplay. It has a mouse pointer because I recorded it on a desktop computer, but it looks exactly the same on Android tablets:

Grab it in Google Play Store:

https://play.google.com/store/apps/details?id=com.bigosaur.gos.android

Feedback & Share Bigosaur, 2014-10-28

Gods of Sparta: second release

The second beta version is ready for testing. Everything should work, except that it lacks music in the main menu screen (should be coming soon). Please test and tell me how you like it and if you think something needs to be improved.

If you installed the first beta, please remove it from your Android. The application package name has changed, so Google is treating this new one as a separate application and won't update the game. You have to install this one as if it was a completely different game. Sorry for the inconvenience.

Feedback & Share Bigosaur, 2014-10-23

Progress report: writing AI, setting up Eclipse and libGDX on Ubuntu

Well, it turns out creating AI wasn't simple at all, but I finally finished it. In the meantime, Voyna created a great music piece to play in the background during the battle. I also had to switch to latest libGDX because I couldn't get the AdMob to work on the old one. Of course, that would be too simple. The new libGDX wouldn't work on my old Slackware, so I installed Ubuntu 14.04 and set up everything there. There was a problem with my old Intel i915 graphic card which supports OpenGL 2.0, but Eclipse/libGDX failed to recognize that. I fixed that by setting an env. variable:

MESA_GL_VERSION_OVERRIDE=2.0 ./eclipse

I also got some weird problems like Eclipse crashing whenever I used autocomplete. I fixed that by adding this to eclipse.ini:

-Dorg.eclipse.swt.browser.DefaultType=mozilla

The tooltips were also completely invisible (black text on black background). Apparently Eclipse only honors the system background color. I fixed that with gnome-color-chooser. At first I changed the color to a bright one, but then tooltips became unreadable in Firefox (while text on white background). Go figure. One would expect that there are some Ubuntu developers who use both Eclipse and Firefox. In the end I used a shade of gray to get some contrast against both white and black text.

I need to do a lot of testing now. First beta should be out tomorrow.

Feedback & Share Bigosaur, 2014-10-22

Gods of Sparta: gameplay works fully

I finished conversion to landscape mode and implemented the attack icons and animations. For most attacks the cards just move and shake a little bit. Ranged units have special animations, Zeus fires thunderbolts and Catapult throws rocks at enemies. I added the damage numbers to attack icons and it's now visible which type of attack deals the most damage.

I also created some nice icons for unit Energy (heart) and also Attack (sword) and Defense (shield). Those show up when the default unit values are modified (by artifact or an ally that stands next to them). This makes the game fluid to play, as you don't have to keep doing the calculations manually all the time.

What's left to do: Turn indicator graphics, Sound effects, Music (I'm going to get help from a musician), AdMob integration. Initially the game was supposed to be only a two-player game, but now I'm thinking about single player mode as well. Writing good AI for this strategy might get complicated, but it's worth a shot. There's still enough time before the end of October.

Feedback & Share Bigosaur, 2014-10-16

Reducing .apk size of my Android game by 88%

As I switched to landscape mode, I started to create mirror-flipped images of unit cards using the -flop option in ImageMagic in one of the card-generating steps. As the script rolled on for some time, it hit me that this would increase the amount of graphics a lot. I got worried about the size of the final .apk file. First time since I started the project I decided to check.

I created a package containing only the lowest (800x480) and highest (2560x1600) resolution images. It's 106MB!

I need to add 4 intermediate resolutions, so I'm looking at 300+ MB for the final .apk. I searched the docs and found that the limit is 50MB and rest has to be provided as a separate package. Or, you can distribute two different .apk files. I didn't like any of those. I hate when you download an Android game, and then you have to wait for it to download hundreds of megabytes more. I needed a new approach.

I searched the Internet. Most advice is about packing your code using compressor/obfuscator programs. But the gains are really negligible. Then one thing caught my eye: using JPEG for textures. I'm using TextureAtlas to pack everything automatically, but I could separate the images with, and those without, transparent areas and pack them separately as PNG or JPG.

The problem is that 90% or the graphics need transparency. In this particular case the main problem are the card images, which have rounded corners. And then I got this great idea: separate the card image into frame and contents. There are only four card types in the game (one for each faction and gold one for the items), and all cards of the same type share the same frame. The inside of the card is different for each one, but it does not require transparency. Instead of packing 126 cards into PNG texture, I would pack 126 cards into JPG texture plus 4 frames into PNG.

As I tried this, I got some weird clipping artifacts in the JPG texture, probably because I turned off the 2-pixel padding. So, instead of pixel precise cropping, I increased part of the graphics that gets copied to JPG so that there is some overlap. When staging the images, make sure the jpg one is drawn first and PNG frame over it. The part that overlays will cover the bad edge pixels.

BTW, by “staging” I mean placing the Images into libGDX Stage. To make the code simpler, I created a nice CardImage class (descended from Group) to handle drawing transparently. This Group contains the center of the card from JPG texture and then positions the frame from PNG texture over that.

This saved A LOT, but I got so concerned about the size that I wanted to do something about flipping as well. I researched if I could only flip a part of the image. It's possible using the AtlasRegion.flip() function. But I also had the problem that I didn't want to flip the whole image. The textual part should remain the same and only the unit graphics should be mirrored. To do this, after calling flip(true,false) I used setRegionY and setRegionHeight to reduce the flipped region size. Using the flipped region I created another Image and added it to the CardImage group. At runtime, I simply show or hide this image when I need the unit to face left or right.

Result

New .apk file with the same content is now only 12MB. A 88% save. Once I add all the other resolutions, I estimate the final .apk to be about 40MB if all goes as planned. Compare this with 300MB+ I expected at the beginning.

TL;DR Summary

Beside all the other advice you might find on the web (compressing the code, etc.), add these three:

  1. use JPG wherever possible
  2. if you use PNG only for semi-transparent border, cut the image into frame + content. Store the frame in PNG and content in JPG Of course, if your frame is not reusable on multiple images and has complex colors this might have the opposite effect. However, there's a solution to that as well: cut the frame into four pieces (left,right,up,down) and assemble it at runtime. No more empty space in the middle of the frame in PNG.
  3. If you have images that are flipped or rotated, store only the original and flip/rotate at runtime.

UPDATE Oct 28: The final .apk with all the graphics, music and sound effects is 42MB:

https://play.google.com/store/apps/details?id=com.bigosaur.gos.android

Mission accomplished :)

Feedback & Share Bigosaur, 2014-10-14

Use the Landscape, Luke

Just like the last time, I decided that I have to change the screen orientation mid-project. This time from portrait into landscape. Here are the reasons:

  • attack graphics looks odd upside down
  • I want to provide hints how damage is calculated, awkward since all the enemy cards are upside down.
  • Thumbnails used to pick units from your deck are too small on phones.
  • YouTube videos are landscape.
  • Desktop version of the game (if I ever release any) can use larger resolution.
  • I can test larger resolutions on my monitor instead of having to run it on the Android devices.
  • Players will sit next to each other, so they won't have to put the device down on a table to play. You can play it with a friend on a bus or on a train.
  • Much more available screen space for unit stack and enough space for additional user interface. See how everything is crammed currently and a lot of space is wasted sideways:

Cons:

  • I have to redraw some of the graphics
  • I now need horizontally flipped unit graphics which will almost double the memory consumption of the game (I cannot simply flip the whole card, as it contains pregenerated text as well)
  • The drafting screen cannot use the rotations to indicate current player

To conclude: unless the game is meant to be played like Flappy Bird (using the same hand that holds the phone and having only one command: “tap anywhere”) use the LANDSCAPE orientation.

Feedback & Share Bigosaur, 2014-10-12

Battlefield

I got a lot done in the past two days. The main battle mechanics work. You can place and move units, and attack. There is still no attack animation. As you can see on the screenshot, some units are turned upside-down. This is because it's a two player game. The idea is that you put the phone/tablet down and sit across each other and play.

Flying units like dragons can reach any field, while others have to move one step at the time. Each turn, a player can move and attack, or attack only. Once you attack, it's the other player's turn.

I'm currently drawing some attack icons. When you select your unit in the field, those circles would rotate over the adjacent enemies and you can pick which one to attack.

Depending on the attacker, a different circle would be used. Olympus units would get a blue round one. Humans get the yellow square (at least I tried to make it resemble a cross). Underworld units have the hexagram. I drew all these in Inkscape.

Feedback & Share Bigosaur, 2014-10-11

Picking cards and explaining how they work

I know players hate reading complex rules, so I tried to make a screen that would explain how the cards work without getting too complicated. Here are the basic rules:

At the start of each game, the players are presented with a deck of 20 cards and they take turns picking one by one until each has 10 in their hand. After that the battle starts.

When the first player picks the card, all the other cards rotate 180 degrees to face the player sitting across. It's a two-player local duel game.

Feedback & Share Bigosaur, 2014-10-10

Understanding relations between setOrigin, setScale and setPosition in libGdx

For card animations in Gods of Sparta I'm using the largest card graphics all around. The cards get scaled and rotated as they move. To rotate the image around its center, you need to setOrigin to (width/2, height/2). However, the origin is also used for scaling, so if you scale the image it will no longer stay at the same (x,y) position you set with setPosition.

To get the scaled image in some particular position, you need to offset the coordinates. See the image below for the exact math:

We want to position the scaled image to (60,70), but since it has setOrigin, it shows up in a different spot. To place it properly, we need to move it half of the difference between full and scaled image.

Now that we know how it works, it all makes sense. I hope this saves other developers some time.

Feedback & Share Bigosaur, 2014-10-10

How to draw a ring with Inkscape

One of the artifacts in my game is the mythical Ring of Gyges. I decided to improve my graphics skills and learn Inkscape better. Rings and other metal surfaces are rather simple to draw, you just need to combine proper gradients.

I started with basic eclipse, duplicated the shape multiple times and then created unions and intersections needed to assemble the ring. I used a brown-gold-white-gold-brown gradient (it's easy to make a custom gradient like this in Inkscape). To get the proper gradient (straightforward or reverse) I put a real ring on my desk and watched the colors.

This is the basic ring. But let's make it look really good. First I rotated it about 180 degrees and then added a gem to it:

As you can see the gem has multiple layers. On the bottom we have a black circle with white border. Border is not the same everywhere, it has a gray-white gradient stretching from left to right. Outside it, there's another border, with black-to-transparent gradient. This is used to create a 3D effect on the ring's metal surface. Over that, we have a half-circle with another gradient. This time the gradient is radial, extending from the bottom-left corner which has a white point. That point looks like a point where the light enters the gem. This is the base. Now we will add color. You can pick any color. I choose blue.

First, we create the dark blue overlay (one the the right in the image above). Note that it also has a slight gradient going from left to right. The light blue layer on the top is used to complement the bottom-left white point in the black and white base. As the light enters in the bottom-left corner it goes through the gem and exits in it's top-right part. There is no sharp point there, although you could put one if you want to achieve a different effect.

Finally, here's the artifact's card in my Gods of Sparta game:

Feedback & Share Bigosaur, 2014-10-08

Gods of Sparta factions

The game is based on 4 card types. There are 3 unit factions: Olymups (Zeus, Athena and some creatures), Underworld (Hades, Cerberus, Minotaur...) and Humans (Achilles, Hercules, etc.) and some items that the units can equip.

Olympus will have a bonus when fighting against Humans. In mythology the gods of Olympus always had control over human fate.

Humans will have a bonus against the Underworld units. In myths, greek heroes often defeated the monsters and some even went into the world of dead to do some quests.

Underworld unit will have a bonus against Olympus. This will make the game fairly balanced. A single unit can be extremely deadly against one opponent and completely useless against the other.

The units will have a single number for attack, defense and energy. But there will be different special abilities that can increase or decrease that during battle. There will also be items (artifacts) that modify attack and defense. For example, here's a sword I drew in InkScape:

Feedback & Share Bigosaur, 2014-10-08

How to pick artists on Fiverr

I'm still learning how to draw well, and I'll make all the artifacts images. But for units, I need some good artists to make nice pictures. I searched the fiverr.com and found some really good ones. Here are some pictures I commissioned for Gods of Sparta game.

Most artists on Fiverr are only good with a particular style, so make sure you look at their portfolio before ordering. For example, an artist from South Africa with the username seatongrey has a great style that would fit Underworld units in Gods of Sparta. But I wouldn't use him for the Human faction. He made the Dragon above, and here's the Hades:

For Human units, I hired glass84 and johannan. Here's Achilles from glass84:

The turnaround is usually a couple of days. You can see the average in the artist's profile. Now, be prepared that some artists might be busy and won't get back to you quickly (or ever). If that happens, just cancel the gig and hire another one.

Be prepared that some designs might fail. For Olympus units I had to combine different artists. flannery is good with horses, so I got Pegasus and Unicorn:

Medusa was a tough nut. I hired four different artists and in the end had to use one who is really expensive. But he's a pro:

I had to edit each of the images a little bit. The dragon was completely ok, but it had a big belly, so I had to crop the image to focus on the head and fire. I had to change or add the background to Achilles, Unicorn and Medusa. I also increased the contrast, added a drop shadow or glow where needed, etc. The only picture I did not touch at all is Hades. So, don't expect to get a perfect image served on a silver platter. Remember that Fiverr is meant to be the cheapest service while still having a decent quality.

I'm pretty satisfied the way all this turned out. Still, I think that for my next project I will learn how to draw myself.

Feedback & Share Bigosaur, 2014-10-07

ImageMagic scripts to scale graphics for different Android screens

Battlefield is the screen players will see all the time. At first I thought about building it from tiles, but I changed my mind. It's going to be fullscreen graphics, in all it's HD glory. I found some free wood, sand and stone textures and played with them in Gimp for almost two days now. Here's the end result:

Looks kind of lame on this thumbnail size, but I assure you it's much better on an Android device. The shaded part is the background used to fill the space on wider devices. It isn't really shaded in the actual file.

I created this screen at 2134x2733 pixels, so that it covers all possible Android devices. Now, I need to scale it to sizes appropriate for 800, 1024, 1280, 1536 and 1920 screens. To avoid doing this manually, I created a simple script that calls the imagemagick tool to do the scaling. Here's the script:

#!/bin/bash
convert images/2560/$1 -resize 31.25% images/800/$1
convert images/2560/$1 -resize 37.5%  -gravity center -crop 1024x1024+0+0 +repage images/1024/$1
convert images/2560/$1 -resize 50%    images/1280/$1
convert images/2560/$1 -resize 60%    images/1536/$1
convert images/2560/$1 -resize 75%    -gravity center -crop 2048x2048+0+0 +repage images/1920/$1

You need to create directories named 800, 1024, 1280, 1536 and 1920. You should create all images in directory named 2560 and then just run the script to create the others:

./generate.sh background.png

If you don't like the default blurry edges, you can use -adaptive-resize instead of just -resize. The difference is similar to using Cubic vs Lanczos algorithm when scaling in Gimp.

I guess I should explain the gravity/crop/repage options. To ensure that the large images load on devices with less RAM or older graphics cards, I'm making sure that the whole background image can fit into one texture. On older devices, textures are limited to 1024x1024 pixels. Then there's a middle ground of 2048x2048 pixels and the newest devices that support 4096x4096 pixel textures. If the device screen is less than 1024x1024 it's a safe bet to allow 1024x1024 pixel textures on it.

The resize script sometimes overflows the texture size but a pixel or two. For example, 2733x2134 picture would be resized to 1025x800 or similar. To work around that, we simply crop the image to 1024x800, or whatever is the maximum allowed texture size. We crop using the center of the image, thus the -gravity option. By default, imagemagick script would create multiple files in this case, and we only want one. That's why +0+0 and +repage are needed. Those options simply discard the second file.

To create the texture atlases, I use the following code in libGDX:

Settings settings1024 = new Settings();
settings1024.minHeight = 1024;
settings1024.minWidth = 1024;
settings1024.maxWidth = 1024;
settings1024.maxHeight = 1024;
settings1024.paddingX = 0;
settings1024.paddingY = 0;
settings1024.combineSubdirectories = true;

Settings settings2048 = new Settings();
settings2048.minHeight = 1024;
settings2048.minWidth = 1024;
settings2048.maxWidth = 2048;
settings2048.maxHeight = 2048;
settings2048.paddingX = 0;
settings2048.paddingY = 0;
settings2048.combineSubdirectories = true;

Settings settings4096 = new Settings();
settings4096.minHeight = 1024;
settings4096.minWidth = 1024;
settings4096.maxWidth = 4096;
settings4096.maxHeight = 4096;
settings4096.paddingX = 0;
settings4096.paddingY = 0;
settings4096.combineSubdirectories = true;

TexturePacker2.process(settings1024, "../images/800", "../GoS-android/assets", "800");
TexturePacker2.process(settings1024, "../images/1024", "../GoS-android/assets", "1024");

TexturePacker2.process(settings2048, "../images/1280", "../GoS-android/assets", "1280");
TexturePacker2.process(settings2048, "../images/1536", "../GoS-android/assets", "1536");
TexturePacker2.process(settings2048, "../images/1920", "../GoS-android/assets", "1920");

TexturePacker2.process(settings4096, "../images/2560", "../GoS-android/assets", "2560");
    

Note how the different texture size is used depending on the device screen resolution. I placed this code in main() function of Main() class of the desktop version of the game. I keep it commented out until I change the graphics.

Important note: the default TexturePacker settings use the 2px padding to avoid any artifacts when your graphics have semi-transparent pixels on the edges (alpha between 0 and 1). I noticed those artifacts in my Drone Invaders game where I did not use the texture packer. When a moon gets rotated, sometimes a few orange dots would show up.

The code above sets the padding to zero to allow 1024 and 2048 pixel backgrounds to fit into a single texture. I recommend using this code for backgrounds and other rectangular graphics. For the rest, there are two options:

  1. create a separate set of directories and settings
  2. add 2-pixel transparent border to all the graphics

The first one complicates the loading code a little bit. The second one is easier, but you have to account for those 2 pixels whenever you want to position something on the screen at the exact coordinates. Both approaches work if you start to do it from the beginning, so just pick one and stick with it all the time.

Feedback & Share Bigosaur, 2014-10-06

How to properly handle fullscreen immersive move in Android KitKat

I noticed that on newer devices, the resolutions from my previous post are not always fully available. After some investigation, it turned out that a part of screen is used for Android interface buttons (back, home, menu) which are hardware buttons on some devices and virtual buttons on other.

To get the full screen and still have the resolution math from my previous post functional, we need to enter the immersive mode. This a feature available since KitKat (Android 4.4). I experimented with various devices and finally arrived to this code:

public class MainActivity extends AndroidApplication {

    private Handler mHandler = new Handler();
    private Runnable decor_view_settings;
    private int viewFlags = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

        if (Build.VERSION.SDK_INT >= 19)    // KitKat
        {
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setupBars19();
        }

        AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
        cfg.useGL20 = false;

        initialize(new GosGame(), cfg);
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus)
    {
        if (Build.VERSION.SDK_INT < 19)	// KitKat
            return;

        if (hasFocus)
            mHandler.postDelayed(decor_view_settings, 5000);
        else
            mHandler.removeCallbacks(decor_view_settings);
    }

    @TargetApi(19)
    public void setupBars19()
    {
        viewFlags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | View.SYSTEM_UI_FLAG_FULLSCREEN;

        decor_view_settings = new Runnable()
        {
            public void run()
            {
                getWindow().getDecorView().setSystemUiVisibility(viewFlags);
            }
        };

        View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(viewFlags);

        decorView.setOnSystemUiVisibilityChangeListener
        (new View.OnSystemUiVisibilityChangeListener() {
            @Override
            public void onSystemUiVisibilityChange(int visibility) {
                if ((visibility & View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) == 0) {
                    mHandler.postDelayed(decor_view_settings, 5000);
                }
            }
        });
    }
}

The code compiles on all versions, but only does stuff when the system is KitKat. As I wrote, I tested various devices (Nexus 7 and 10, Galaxy S3 and S4, etc.). It seems to work perfectly.

Feedback & Share Bigosaur, 2014-10-04

Supporting multiple resolutions in 2D games

Supporting various Android devices for your game can be confusing. For 3D games it's easy, because conversion to 2D space is done constantly at run-time. Players of 3D games don't mind if the result is blocky, blurred or sharp at edges. However, for 2D games, every pixel matters. You could use built-in scaling, but the image is not crisp and your game doesn't look as good as it deserves. All the hard effort you put into making great graphics would go to waste.

To make your game look good, you want to use the device native resolution. Because of this, you need to produce all graphics in different sizes. But there are a myriad of screen sizes and resolutions on Android, with different width/height ratio. Here are some hard and fast rules you can use to support all the devices that currently (2014) make 99% of the market.

First thing to remember is that all resolutions on most modern (made since 2009 forward) devices should have an aspect ratio between 4:3 and 16:9. The solution would be to draw the graphics that would span both ratios (and thus everything in between). The central part would be visible on all devices, while the background would show different areas (top and bottom on wide devices and left and right side on the more square ones).

But this isn't just pure math. We need to take note of market share of different devices, so that we don't sacrifice the way the game looks on the more common ones just to please some outliers.

One picture is worth a thousand words, so here are some diagrams to make it all simple and easy to understand. The lowest resolutions used today are 800x480 and 854x480. There are also some tablets using 800x600. So, we'll set the base at 800:

This would mean that you should draw all the background graphics to cover 854x600 pixels. The central part where all the action takes place is 800x450.

There is no device with 450 pixel on the market, but we still use that as the baseline, so that we can simply scale everything to devices with 1024, 1280 and 1920 base width. Those devices currently make most of the market and have 16:9 aspect ratio. We want the game to look best on them.

The next step is based on 1024 pixels. The most common resolutions are 1024x600, 1024x768 and 1024x800. The problem is 1024x800 which is even more square than 4:3. Those are some cheap tablets from asian manufacturers. Still if we decide to support them, we get this:

Now, there are some devices using 960x540 and 960x640 pixels. Those make less than 1% of the market, so we could use scaling in that case. Or we could sacrifice a little bit of 1024 screen space and allow it to fit.

Luckily the higher resolution screens are more expensive, so we don't have that many variants. It's actually pretty straightforward. The next step is 1280x720, 1280x768, 1280x800 and 1280x960. Again, there are some outliers, more square than 4:3, most notably 1280x1024.

Next, we have 1536x1152. I haven't found any other variants with 1536 base. Still, we want everything to scale, so the play area has to be smaller:

1920x1080 is used in some very popular devices, but also 1920x1152 and 1920x1200 are common. 4:3 ratio would be 1920x1440, but I haven't found any devices using that resolution:

However, there are some 2048x1536 devices out there. The next resolution that follows is 2560x1600 which is much larger, so we don't want to clamp them together. Creating a special set of assets for 2048 would only give us 6-7% larger images. Therefore, it would be best to merge 2048 into 1920 base:

The current top devices (say Nexus 10) use 2560 as the base. I have only seen 2560x1600 devices, which is 16:10 and found 2560x1536 mentioned on the web without a device name. If we wanted to accommodate future 4:3 devices, we would have to produce 2560x1920 assets.

I used the wider 16:9 ratio as the base, because more mainstream devices use it (Samsung, Google, Sony, etc.). Square ones approaching 4:3 (and beyond) are produced by cheaper brands and don't have the market share. We still support all those devices, but 5-30% of screen real estate is just showing background filler picture.

Here's the whole table:

Typical resolution Play area Background Scale
800x480 800x450 854x600 100%
1024x600 960x540 1024x800 120%
1280x800 1280x720 1280x1024 160%
1536x1152 1536x864 1536x1152 192%
1920x1200 1920x1080 2048x1536 240%
2560x1600 2560x1440 2560x1600 320%

It turns out you'd need 6 different sets of assets for a game. To do all this in libGDX, I use separate bundles for different resolutions, so devices with low specs (low resolution, not much memory) do not try to load the large images.

When designing backgrounds, you might want to create a common huge background picture and scale it down. However, 2560x1920 would not suffice in this case because when you scale that to 1280 pixels, the other dimension would be only 960 pixels. Some tablets are 1280x1024, so you would have to create a separate background for them. This might be desirable if you want to have different assets adapted for each resolution, but if you have pictures or other graphics that don't lose quality when scaled in some drawing program (Gimp, Photoshop), you might want to simplify the process. In that case, we would need to use the source image of 2560x2048 pixels to be sure. But, the problem can also happen with the other dimension. Calculating the relations in the table above, we end up with 2733x2134 pixels.

Conclusion: if you want to draw a huge picture and just scale it down for each resolution without having to consider different aspect ratios later, make sure your source picture is at least 2733x2134 pixels.

With that out of the way, I'm starting to create the title screen. I commissioned some images on fiverr. For $5-$30 you can get some real quality if you take some time to investigate who are good designers.

As you can see, the game will use the portrait mode. I created the title using Diogenes font and Gimp.

Feedback & Share Bigosaur, 2014-10-03

Ludum Dare October Challenge 2014. I'm in!

Being a busy father of two never leaves enough time to do regular LudumDares. It's almost impossible for me to dedicate 48 hours straight to anything. That's why I love the October Challenge. Last year in October I participated in my first LudumDare OC. I made an Android Game called Drone Invaders, released it on Google Play, got about 3000 players and earned some trivial money (about $140). But I learned a lot, especially all about Android development.

This year I plan to build another Android game. Some (say, 60%) of the graphics will be outsourced to artists on Fiverr. Rest of the gfx, programming and sound effect I plan to do myself. I'm still not sure about music. I depends how much time is left when everything else is done.

Last time I used libGDX as bare-bones graphics library, only utilizing Sprite and BitmapFontCache classes. This time I plan to use Scene2D with Stages and Actors. Another big change is that I will make sure that devices with higher screen resolutions are properly supported and all the graphics are crisp clear.

As for the $1 goal, I will stay away from IAP this time. Google Wallet accounts are still not available in my country, and doing it through some friend abroad just complicates things and slows me down. I decided to try AdMod instead. It's linked with my AdSense account, so there should be no problems with the payments.

As for the game itself, I plan to revamp my Gods of Sparta strategy game. The main focus will now be local, hot-seat game for two players on Android devices. It will be completely free to play, supported by ads. I will reuse some old graphics, but more need to be drawn, especially higher resolution stuff for Nexus10 (2560x1600 pixel screen) I got recently. Also, UI needs to be drastically improved and game rules have to be simplified. To cut the long story short, I need to improve the player experience and make it feel more like computer strategy game and less like paper card game. Here's some teaser graphics that will be included in the game...

Feedback & Share Bigosaur, 2014-10-02

Taking a break

I have this sci-fi story in my head for about three years now and I decided it is time to write it down. I love sci-fi genre and like to see good movies. But there haven't been many epic sci-fi movies lately. You know, the Star Wars type of thing. But I'm not that into fantasy, my story is more to the ground, and is pure science fiction.

The story is really two-part. First part is a end-of-the-world thriller involving hackers, rogue military and top scientists. It all starts with a mysterious message coming from the outer space.

The second part is... well... “Spoilers” as River Song would say. No, I'm not going to reveal it. All I can promise is that there will be aliens.

Anyway, I'm not a native English speaker and the number of sci-fi readers in my country is miniscule. So I undertook this hard task of improving my English to sci-fi writer level, so that I could reach a wider audience. Apparently some popular writers have done it before. At the same time, I started to learn how it is to write a novel. I still haven't decided whether making the draft or editing it afterwards is harder, but I do enjoy the end result.

I'm currently done with editing the Chapter I. Please take a look and tell me if the story is interesting and if you want to read it to the end. Or it's pure crap and I should just forget about that and go back to making games.

The book title is: After Doomsday

Feedback & Share Bigosaur, 2014-09-15

Using Facebook Ads to reach Android Game players

Some time ago I decided to spend $100 on advertizing my Drone Invaders game on Facebook. Facebook ads have some really nice features, like picking only people from certain countries who like certain things. So I selected people from English speaking countries, who have an Android phone and like Space Invaders or Galaga.

The campaign ran for 18 days and got 839 clicks, which is around 46 clicks per day. On the other hand, I was monitoring players that played the game. Unlike Google Play which monitors installs, I'm monitoring how many people play the game and get to the Game Over screen. During the campaign I had about 40-45 new players coming in each day. Since the campaign has ended, I have about 10 new players coming in each day. So, the campaign effect was about 30 new players per day or 540 total. That's 540 players for $100, or $0.185 per player. It's nice to know this figure before doing some ads, but spending $100 to learn this is also not a big deal. During this campaign the game earned about $25, so it's a net loss, but the game is not about making much money anyway. It's free to play with completely optional in-game purchases.

To conclude: I find Facebook ads useful and would use it in the future if I create some game that I feel can bring in some real money. Especially if I make a non-free game, this seems like a good way to attract more players. It's great that you can target people who like similar games and have a device it runs on.

Feedback & Share Bigosaur, 2013-11-29

Marketing your Android game - start early

Three weeks ago I released Drone Invaders. After the initial hype, the number of daily downloads has slowely but surely went down, and now sits stable at around 40 per day. But I want to talk about this initial hype in hope other beginner game developers might find it useful.

As I wrote before, I posted about my game to multiple sites. I posted daily updates to LudumDare, and important milestones to Java-gaming. I posted twice to HackerNews, and Reddit. I posted once or twice to other sites listed in the linked blog post above. In this case numbers speak more than words, so here are the top sources of traffic to my blog posts about Drone Invaders:

Top traffic sources for Android game blog

Conclusion: do not wait to market your game. The main site I missed is TIGSource. It's a high-traffic site with a lot of posts every day. If you just post when your game is completed, not many people would see your post. I wish I posted my progress daily, or at least as often as on Java-gaming. It would build more interest as the game was built, and surely would result in more installs after the release. If you know some more sites like those listed, where developers can post about the game development progress, please send me a tweet about it.

Feedback & Share Bigosaur, 2013-11-14

October Challenge Complete!

In the last two days, I got a couple of new orders for in-game coins, coming from Denmark, Australia and USA. Thank you.

That's $21.81 of income, of which about $5 was me testing if the payments work, and there's Google's cut as well. In the end, I earned about $11. Since October Challenge was to earn $1, I succeeded. However, I still have a net-loss of about $14, since I invested $25 in Google Play developer license.

Now that I see there is some interest in in-app currency, I'll try to do some paying forms of marketing, to see if that brings in some new players. When you publish an Android game, a lot of marketing companies e-mail you with their offers. I'm going to try some of those. I'll write about the results in a week or so, after I have some data.

Feedback & Share Bigosaur, 2013-11-04

Success or failure?

I released my game Drone Invaders about a week ago. It's a free to play shooter game for Android with optional in-app purchases. I did successful promotion on LudumDare, Java-gaming and HN websites, which got me to about 1000 installs so far. I'll soon post more stats about user retention, games played, etc.

I also posted in Shoot 'em up forums, TIG forums, IndieGameMag and added info to IndieDB. All those did not bring in much interest. Judging from player feedback, the main source of interest was HN post, where some people were more excited that I created the game in just 23 days, than in the game itself.

All this got me $0.69 profit so far (if you ignore the $25 fee to open a developer account on Google Play) as one person bought one in-game pack of coins. LudumDare challenge is to earn $1, so I need only one more purchase. But, it seems that will be a huge challenge to get it.

I also tried promoting the game on Twitter, but from my 200 followers I had prior to launching, only 3 tried the game. I guess you really have to engage daily with a lot of people to even get them to read your tweets. After the launch I got about 180 new followers. BTW, using bit.ly to track how many clicks came from which source (Twitter, forums, etc.) is a great idea, I'm sorry I did not apply it everywhere.

I posted several posts on Reddit and I noticed someone from HN crowd also posted. While mine posts to /r/gaming, /r/gamedev were barely voted up, that other one in /r/Android got some +187 votes and got some attention.

I wrote an e-mail to eleven journalists who do cover mobile games and I thought would be interested about the game. No reviews came out of that. In fact, nobody replied except for one guy who was decent enough to tell me that he thinks that the game is not worth covering on his main website, but I could try the forums. I guess it's hard to get through with retro graphics.

To be honest, I'm a little bit tired of banging my head against the wall with the marketing. The user reviews on Google Play are great, but the game is not very attractive when you look at screenshots or video, it only shines when you play it yourself. I have no idea how to get some journalist that covers Android to try the game?

Feedback & Share Bigosaur, 2013-10-31

Day 23: Release!

My game is ready and available for download on Google Play:

https://play.google.com/store/apps/details?id=com.bigosaur.backyardpanic

Please try it out, let me know if you find any bugs. The game is free, but if you like it, please tell your friends to try it and rate it in the Google Play. Hopefully, someone would like it enough to buy some in-game coins and I'll complete the $1 challenge :)

Even if you're not going to buy anything, please tweet about the game to your followers on Twitter. Thanks.

Feedback & Share Bigosaur, 2013-10-22

Day 22: Sound effects

Although I have a wast library of wav sfx files I accumulated over the years, I've seen other game devs use Bfxr to create their own effects, so I decided to give it a try.

This is nice, because you own the effect 100% and you don't need to prove where did you get the audio file. Some of the sites I used to download my sfx in the past are no longer online, and tracking people who made those is impossible. For example, my favorite mod music is Aspirating Milk which I found on modarchive. I tried to contact the author via e-mail in the tracker file, but got no reply. It was probably his address at university or something.

Bfxr requires Windows or Mac, while I prefer doing my development on Linux. I thought about running it on Wine, but didn't even bother to try because I found this:

http://www.superflashbros.net/as3sfxr/

It's a super easy to use and simple Flash app you can run in your browser. I highly recommend it.

These sfx programs produce various simple sound effects. Some complex sound effect can be created by mixing a couple of simple effects in a program like Audacity. I used it to create sfx for Atomic Bomb powerup:

Mixing sound effects from as3sfxr in Audacity

BTW, I basically completed the game, I'm now testing on various Android devices. I'll probably do the release on Google Play store tomorrow.

Feedback & Share Bigosaur, 2013-10-21

Day 21: Monetization of Android game

I'm making this game as an experiment, so I don't expect to earn much money. This game is going to be free to play, with option to buy coins in the game if you want. I like the way it's done in games like Pudding Monsters where players can play everything without paying at all. Drone Invaders will be completely playable without paying a dime, so it is not a kind of "pay to win" types. However, I still want to enable players who can't wait to have fully powered up weapons right away.

Buy coins for Android game

I opened the Google Play account without problems. It was $25, which is fine. I just read some blog post where a solution to saturation of Google Play was suggested - it proposed to have $5000 registration fee, so only developers who are serious would apply. I'm not sure if I would apply for $5000, it seems so me that only big studios who are already making money on other platforms would participate.

However, opening a Google Merchant Account is mission impossible from my country. So, what are the options. Well, you can still add payments with services like Fortumo or Centili, but this has two problems: 1. it goes against Google Play terms of use, so you either risk getting your account suspended or you only publish to other Android app stores (there are some 30+ as far as I can tell, and some stats say they make up about 30% of the market, although this seems too high to me). 2. to enable payment via SMS, your game needs to ask for two system permissions which users probably won't like: send and receive SMS. Although this is the only way to enable monetization in some countries, if you aim for US market, it's a bad idea.

Third option is to start a company in USA and register account that way. This is of course the right thing to do if you expect to earn some substantial amount of money from your game, but having an US company brings in some costs. There are specialized agencies that can register you a company in Delaware. Delaware is a USA state and a tax-haven. Of course, you can always transfer the earned money from there to yourself, and then pay the taxes locally on that transfer. I'm not ready for this step yet, as this is my first game and I have no clue if I will make any money of it.

Luckily, I have a friend who lives in US, so we opened an account under his name, and the game will be released under that account. At least merchant account is available for US individuals. I still don't understand why Google won't allow merchant accounts from my country, when I'm receiving money from their AdSense directly, without any problems. I guess not all departments of Google have the same policy.

Feedback & Share Bigosaur, 2013-10-20

Day 20: Weekly challenge. Persistent player data. Java date woes.

Weekly challenge will be to collect some amount of stars during a week and get some nice reward, like 8 atomic bombs, 5 shields or similar. I made a nice gold star in Gimp. I tried different particle effects on it and also some diffused star-light, but it did not look really good. So I went back to the particle effect used for powerups and tweaked that until I got something distinct for the star. Stars show up on their own pacing, so you can have both a star and a powerup on the screen at the same time.

Weekly Challenge

I also worked on loading and saving player data. It was much easier than I expected. I expected to have to learn some Android data storage API, but for simple key-value storage, libGDX provides the Preferences class. Just init with:

Preferences prefs = Gdx.app.getPreferences("DroneInvaders");

and then use get("key", defaultValute) and set(key, value) to read and write the values.

The only thing I had problems with are the dates. To keep track of daily and weekly challenges, the game stores the date of last play. When player launches the game, it compares that and resets some counters. Theoretically, I could prevent players from changing the system's calendar to past date, but I don't want to. What I am doing, is setting new set of daily and weekly challenges when day rolls over and resetting the counters for number of stars and letters picked up.

To make that work, I had to get the day difference between the previous play and current date. It matters whether it's the same day, exactly one day apart or more than one day. Googling got me to various websites and StackOverflow questions. Answers are funny. Many programmers simply calculate difference in seconds and then divide by 60 * 60 * 24 to get the days, completely ignorant about issues with daylight savings and leap seconds. One could argue that it does not matter that much for a game, but still getting many bug reports twice a year doesn't sound like fun to me. Some other guys simply count the days by adding one-by-one from start until they reach the end. While those loops might look correct, they still miss sometimes as they do not take the time out of the calculation. If one object stored 01.Jan at 5am, and you calculate it vs 02.Jan at 23pm, adding one day to first object is still less than the second, so they add two and get 2 day difference.

One of the tricks I use in this situation is to always set the time of the earlier Date to be something like 10am, and set the time for the later Date object to 5pm. Since daylight changes always happen at night, this is safe. And we also have 7 hours in between, just in case someone in future decides to do daylight saving changes in the middle of the day.

Feedback & Share Bigosaur, 2013-10-19

Day 19: Daily Challenge and Missions

Daily challenge is to collect 5 letter which fly like powerups do. Once you collect them all, you get some coins to buy powerups. This is a way to get easy free coins just by playing the game. I was inspired by Subway Surfers when creating this.

Missions are various tasks for player to complete to earn coins. Coins are used to buy upgrades and expendable items like shields, bombs, etc. Missions come in sets of three, and you need to complete all three tasks to earn the reward.

Daily challenge, collect letters

For the missions I figured that it would be easiest to use the builtin multiline text wrapping. However, the line height is too big, and I couldn't find a way to reduce it. At least, not from code. Then I edited the .fnt file generated by BMFont and just changed

lineHeight=33

to

lineHeight=23

I added 5 pixels of drop shadow around all letters after the bitmap was generated initially, so I'm now reducing height by ten (5 pixels above, and 5 below the glyph).

While searching the docs for this, I found something else I missed before: Depending on the font you choose for the game, numbers might not look very nice as glyph for digit "one" can we very slim, and numbers like 11 look odd. To solve this, you can fix some of the glyphs in the font to use fixed width:

font.setFixedWidthGlyphs("0123456789");

This looks really good, but I already did some design decisions that used the slim-glyphs "feature", so I'm not going to use this.

Feedback & Share Bigosaur, 2013-10-18

Day 18: Sprite collisions with circle shape. Pixel-perfect bullet trajectory.

Today I got fed up with the "moon hit" bug. Sometimes aliens would not get hit even if they are visible on the screen. I set up a bunch of tests with screen filled with aliens and semi-transparent moon to see what's going on. My coordinates for hit-test area were a bit off, but even when I fixed that it was not good. Box simply cannot cover the circled area well. You either miss aliens when you should hit them, or you shoot some that are completely hidden.

Shooting the moon

So I decided to switch to circle based checks. Since the moon in much larger than aliens, it would be enough to check whether all the 4 points of alien's bounding box are inside the moon's circle or not. To test this visually, I used libGDX builtin ShapeRenderer, like this:

    shapeRenderer.setProjectionMatrix(camera.combined);
    shapeRenderer.begin(ShapeType.Circle);
    shapeRenderer.setColor(1, 1, 1, 1);
    shapeRenderer.circle(sMoon.getX() + 119, sMoon.getY() + 116, 167);
    shapeRenderer.end();

This code comes after SpriteBatch is complete. The white circle is drawn over the scene. I also draw all the bounding boxes of aliens using ShapeType.Box.

An efficient way to test whether point is inside the circle is not to use square root (slow) and just compare squared distances instead. libGDX builting function Circle.contains(x, y) does that properly, so I'm using that for checks. This works really nice. I extended the radius by a few pixels, because all the sprites have some padding and I'm really satisfied with the result:

After Shooting

Pixel-perfect bullet trajectory

In this game, bullets are fired some 50px below the bottom of the screen. I'm using atan2 function to rotate the bullet and hit the mark, but there were a couple of errors in my code, especially when you miss the target. To understand the rest of this post, please note that the game uses HitScan for all the shots in the game.

When player misses the target, the code extrapolates the trajectory to the end of the screen. Previous code that did this set the end point too far. Since the bullet is using tween engine to fly, this results in large jumps and bullet is only seen in 2-3 positions on the screen before it flies out. I fixed this code to set the end point at the edge of the screen, so now you can actually see the bullet flying.

This revealed another problem: the bullet sprite was sometimes 10-20 pixels off from the point where player touched the screen. There are three causes of this problem. First, I was using X and Y coordinates of the bullet sprite, which is the lower-bottom corner. I fixed this to use the bullet sprite center by adding half of width and height. But it was still off on some shots. Second problem was that I forgot to set the origin, so bullet was rotated around the bottom-left corner. I fixed that as well, but still some shots going to the left side of the screen were bad.

Then I realized that, when bullet rotates, width and height of the sprite changes, so the bullet center needs to be calculated after the rotation. With that fix, the bullet flies right through the point where player touched. The code looks like this:

    // fly the bullet
    LaserBullet lb = new LaserBullet(tUI, 65, 64, 20, 40);
    lb.setPosition(0, -450);
    lb.setOrigin(10, 20);
    lb.setRotation( (float)(Math.atan2(-x, 450f+y) * 180f / Math.PI) );
    Rectangle r = lb.getBoundingRectangle();
    x = (int)(x - r.width * 0.5f);
    y = (int)(y - r.height * 0.5f);
    lb.target.set(x, y);
    bullets.add(lb);
    Tween.to(lb, SpriteTweenAccessor.POSITION_XY, delay)
        .target(x, y).start(tweenManager);
Feedback & Share Bigosaur, 2013-10-17

Day 17: Android icons. Powerups completed.

I like that Android allows (even recommends) that icons are not rounded rectangle. It can give your game some style. At first I thought about creating a special icon for the game, but I really, really like this shield with pixelated alien drone on it. And I have made this in Inkscape, so I can create any size I want (unlike some other graphics I created in Gimp). I'm presenting you the official Drone Invaders icon:

Drone Invaders Icon

Powerups galore

Here's a video showing all the collectible powerups:

There's Atomic Bomb. I'm not sure about the name, maybe Nuke or Plutonium Bomb or Smart Bomb or something completely different. It damages everything on the screen. Bosses survive one or two, but 3 bombs destroy them too. Internally, each boss has 20 energy and bomb has 8 damage. Regular shot is 1 damage, until you upgrade lasers.

Second, there's 3-Way Shooting. You still lose one round of bullets for each 3-shot. This is a very powerful powerup as you can clean up waves and bosses just like that.

Third, there's Auto-Reload. As the name says, your lasers reload automatically, so you're free to shoot, shoot, shoot and shoot.

Fourth, there's Slowdown. It only slows down aliens, everything else moves normally. It's quite useless on first 20 waves, but gets really, really useful later.

Fifth, there's Double-Score. While this powerup lasts, all the points you earn are doubled. I'm still not sure if something will be awarded for some point threshold, but it's still cool to beat the hiscore.

Feedback & Share Bigosaur, 2013-10-16

Day 16: Recording a movie from libGDX game

I thought about posting a YouTube video of the gameplay. I used recordmydesktop program to record videos in the past, but the problem is that libGDX and rmd do not sync so I get a lot of artifacts on the screen, sprites are cut in half, etc. I searched and found some useful articles about it. Basically, one would record each frame to a PNG file and then create a video out of it. Of course, this requires a lot of disk space, but that's not an issue. I found this page really helpful:

http://www.wendytech.de/2012/07/opengl-screen-capture-in-real-time/

However, their code has some weak points. For some reason, when I overlay background with sprites with semi-transparent pixels, the resulting PNG file has semi-transparent pixels in that area. Producing a video from it yields some really ugly artifacts. I tried different settings, even changed my render code, but the problem remained. Now, a simple post-processing step using ImageMagick (adding black background) fixes the problem, so I figured if I'm going to post-process it anyway, I might do the vertical flip in ImageMagick as well. So I turned off the y-flip in the code. This makes it more efficient: there is no need to allocate w*h*4 bytes of memory on each frame. On 800x480 screen, that's about 1.5MB allocate on each frame!

Also, the code that deals with framerate (skipping frames) is really sub-optimal. It skips the file numbers, which is not a big deal, but it also creates a new ScreenShot object each frame, which is completely not needed. For example, if you are recording at 30fps and game runs at 60fps, you're creating new object 50% of the time.

Finally, the code seems to forget to dispose of pixmap, so if you run it for a really long time, if would eat all your RAM.

So, I yanked out the whole FPS code out of ScreenShot class, and leave that to the class that sets up countinous screenshots instead. I also noted that some of the variables are initialized but never used. My ScreenShot class is much simpler and straightforward:

public class ScreenShot implements Runnable
{
    private static int fileCounter = 0;
    private Pixmap pixmap;

    @Override
    public void run()
    {
        saveScreenshot();
    }

    public void prepare()
    {
        getScreenshot(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), false);
    }

    public void saveScreenshot()
    {
        FileHandle file = new FileHandle("/tmp/shot_"+ String.format("%06d",  fileCounter++) + ".png");
        PixmapIO.writePNG(file, pixmap);
        pixmap.dispose();
    }

    public void getScreenshot(int x, int y, int w, int h, boolean flipY)
    {
        Gdx.gl.glPixelStorei(GL10.GL_PACK_ALIGNMENT, 1);
        pixmap = new Pixmap(w, h, Pixmap.Format.RGBA8888);
        Gdx.gl.glReadPixels(x, y, w, h, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, pixmap.getPixels());
    }
}

Yep, that's all. In render loop I use this at and of each render:

ScreenShot worker = new ScreenShot();
worker.prepare();			// grab screenshot
executor.execute(worker);	// delayed save in other thread

For completeness, executor added to my Screen subclass:

private ExecutorService executor;
...
executor = Executors.newFixedThreadPool(25);

Now, on my Core2Duo it has a hard time keeping up frame rate. On one hand, it's good, because gameplay slows down and I'm able to play a nice, partly scripted video. On the other hand, it would be nicer to just record and later cut out what you need. So I added a hotkey for screenshots. It only records shots while S is pressed on the keyboard. When you record a few interesting seconds, just release S and let the PNG writer catch up. When it does, and CPU load goes back to normal, you can record again.

Videos created like this are super easy to edit. Just remove the unneeded PNG files and compress video without them. It's also easy to sync with music, because you can add/remove frames at will.

Turning screenshots into YouTube video

Since Android screen I'm using by default is 480x800 pixels, the closest fit is YouTube's 1280x720 format. We need to scale the image to 432x720 to maintain aspect ratio. This leaves us with a lot of unused area. You can put your logo there, or even show 2 videos running side-by-side ;) I decided to put the video inside another rectangle, that resembles a handheld device, so it's even smaller, it's 372x620.

Anyway, I created a 1280x720 static image with my logo and now I'm blending the gameplay into it, and also flipping it vertically. On Linux, I'm using a command like this:

for i in shot*png; do echo $i; convert $i -flip -filter Lanczos -resize 372x620 temp1.png; composite temp1.png back.png -geometry +126+56 $i; done

Once all the images are ready, we can run mencoder to produce the video. YouTube recommends using H.264 format and bitrate up to 5000 for 720p videos. They also recommend two B-frames. Here's my command:

mencoder mf://shot*.png -mf w=1080:h=720:fps=25:type=png -ovc x264 -audiofile music.mp3 -oac copy -o movie.avi -x264encopts bitrate=5000:bframes=2:subq=6:frameref=3:pass=1:nr=2000

This yields a solid quality YT video of your gameplay. You can see the result at the start of this post. As for the audio, I just slapped over the game's soundtrack. I'm not capturing the audio of the actual game.

UPDATE Jun 2016: Guys from Lifemakers Studio tried my method and made some improvements to solve the transparency problem and make it run faster. Please read their analysis

Feedback & Share Bigosaur, 2013-10-15

Day 15: Android Back button, Main menu screen, fixed bug with coordinates

Remember that problem from Day 11 about screen coordinates and mouse clicks missing the aliens? Well, it was all my fault. Good thing I discovered it now and not when the game got downloaded by a bunch of Android users not using 800x480 screens. I was naive and translated the touch coordinates to world coordinates like this:

float x = Gdx.input.getX() - 240f;
float y = 400 - Gdx.input.getY();

That's not the way to do it. The proper and easiest way is to ask Gdx to translate it for you:

Vector3 touchPos;
touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0);
camera.unproject(touchPos);

Handling Back button on Android

Most examples on the net about handling Back button talk about overriding keyDown method. Unfortunately, this requires that you use the Stage, which I do not. I understand now that I'm replicating a lot of Actor and Stage stuff in my own code, but nevermind. I'll use the Stage for the next project.

Luckily, I found the solution. Just add this to your Game subclass in create() function:

Gdx.input.setCatchBackKey(true);

And then in render(), check if it's pressed:

if (Gdx.input.isKeyPressed(Keys.BACK))
{
    Gdx.app.exit();
}

Now, watch out, you probably want a boolean flag variable to detect when it is released, as render() calls go many times per second.

if (backReleased && Gdx.input.isKeyPressed(Keys.BACK))
{
    backReleased = false;
    Gdx.app.exit();
}
else
{
    backReleased = true;
}

Now you can enter the game, the shop menu and go back to main menu. Of course, menus just display items, but none of it works yet.

Use 9-patch for dynamic sized buttons and boxes

I also learned how to use NinePatch to create nice buttons. One moment I realized I'd have to draw like 10 sizes of various option buttons, that basically look the same, only with different content inside. I even looked at Gdx buttons, but decided I still use the DIY approach. Buttons in my game have special needs, some of them combine 2 images and 4 text labels with 2 different fonts, all inside a single button.

Anyway, I have drawn a small 46x46 9-patch that covers all button sizes and I'm drawing other stuff over that with some custom code. I used the constructor with TextureRegion to extract the 9-patch graphics from my large texture that contains everything else. One less texture switch.

Creating this allowed me to populate main menu screen with various options, and I also added a scrolling marquee giving some tips about the gameplay. I really like that concept, but games rarely use it. Some games display just one tip at start. Maybe they do not want to distract players with scroll in main menu.

And here's the shop menu to buy some powerups:

Buy powerups

Powerups

Here are some new ideas for powerups. One can be temporary slowdown of aliens. Another one would be 5x score for a limited time. I'm thinking to eliminate the "double score" improvement which was to be available in the shop. Some players might be really competitive about the hiscore, so this is probably a bad idea.

On the other hand, a powerup to increase number of shots before reloading would probably be welcome by everyone, so I'm adding that.

I was hoping to keep the shop at 7 items tops, so that it all fits a single screen. But now I'm not sure with all the possible upgrades... we'll see.

Feedback & Share Bigosaur, 2013-10-14

Day 14: Completed all basic alien graphics

All 7 basic alien types are complete, I just finished Catcher, while Humaniod and Scorpio was done yesterday evening. I also created some basic graphics for the shop, where you can buy upgrades.

Alien types in Drone Invaders

I got some new ideas for boss aliens. One of them is a snake-like alien, and you body is composed of multiple parts, which you need to destroy separately.

The second one is alien boss creating alien bosses. Basically, if you don't destroy it on time, it will create another boss. This second boss spits regular aliens and moves downwards (to free the space for the next one).

Third boss is a special creature, able to multiply by division. When you shoot it, you get two identical aliens, each having half energy of the parent one. This division happens until you split them into 1-energy ones and shoot those.

Fourth boss is... well, let's leave some surprizes for when you play the game. I'm sure fourth boss will be very annoying to some players, until they figure out how it's behaving.

Snake boss

Allocate time for music

I spent rest of the day browsing for some free music. There are many sites, but listening to hundreds of tracks is really not fun. Most of the free stuff out there is junk. I found links to various sites recommended on /r/gamedev on Reddit and also in gamedev.stackexhange.com site and some indie sites. Except for Jamendo which is expensive, most of the free stuff is really bad.

I usually compose my own music, using MilkyTracker or some other tracker program. I got this habit from Amiga 500 and I feel at home when making .it or .s3m modules. But this time I decided I do not have time for that. It usually takes me about 3-4 weeks to create a decent track. I though about re-using some of my old tracks, but I already have used all of them in previous games - and none would really fit to be honest. I did find some good tunes by Kevin MacLeod, so I'm going to use those.

It looks like it really comes down to your own estimation. Whether you spend hours listening to different free tunes or you focus and make your own.

Feedback & Share Bigosaur, 2013-10-13

Day 13: Shields, new Boss

I added a new boss and now I have two of them. Here are the alien names so far: Worker, Eater, Hairy, Glider. Bosses are called Worker Boss (it looks like big Worker and spits small Workers) and Borg (it's cube-shaped and destructs into big cubes).

Second level boss

I also added the shield. I have drawn this nice shield icon before. I drew it using Inkscape and got inspiration from a some YT tutorial. I tried to follow the tutorial (it was for Adobe Illustrator, not Inkscape), but failed. So I started to observe some shields that I like and noted how it's just a bunch or curves and gradients. I slapped Hairy on it, it looks really nice. This might even become the application icon for Android.

Anyway, the shield can be invoked at any time. It lasts 20 seconds. There will be some powerups to upgrade the shield to last longer. If aliens hit the shield it loses energy much faster, so you should still try to shoot them down even if shields are up.

Raised shields

Shield graphics looks like force-field. It required some manual messing with Gimp to draw it nice as I wanted a nice circle-segment instead of straight line and casting a gradient shadow that way doesn't seem to be supported. Maybe there's some trick I don't know. So I combined multiple linear gradients at a different angle. It turned out really nice.

I tried adding some glow to the shield icon, but then it stands out too much. I'll leave the glowing for situation when powerup flies across the screen and you need to pick it up.

With these new graphics, it starting to look like a complete game. I'm still thinking where to place the score multiplier and whether the current wave should be shown.

I'm also thinking that player should be able to buy some powerups before playing, but this would require some coins or something like that, and with current, fast gameplay it simply would not fit. Maybe a some aliens could leave some crystals behind them or something like that or random powerups would show up. Or you would simply get as much coins as the number of waves you survived.

Feedback & Share Bigosaur, 2013-10-12

Day 12: Introducing DRONE INVADERS

I finally decided on the name. There were many game names out there, but I only found 6-7 available. This one seems to fit the game theme the best. New title screen is ready, using the same Ruslan font.

Drone Invader title

Today I learned difference between Comparable and Comparator in Java. I changed the bullet code, so that you can fire multiple bullets (laser fragments) at the same time. Also, you don't need to touch the alien to shoot it, but rather just fire in its direction and bullet hits it. Instead of going with full collision detection, I simply extrapolate bullet trajectory at the moment of firing and see which alien it hits first. This worked fine for all levels until the Boss level. Since Boss spits other aliens, he gets to be the first in array and bullet would fly through all the aliens and hit the boss. I left this behavior if you touch the boss directly. But, when you just shoot in some direction I'm sorting the aliens by y-coordinate to shoot the nearest one.

This new feature changes gameplay a bit. It's now easier to play, and more enjoyable as aliens you shoot are no longer obscured by your finger. The game has turned from "precise touches" to "shooting fest" and only that 10-bullet clip prevents you from destroying everything in two seconds.

I guess I'll now have to make alien movement even more challenging, so that the game doesn't get too easy.

Day 12: Part 2

Aliens hiding behind a moon

I started to like the game too much, and decided to work on it more before going to sleep. On levels 16, 26,... I added a big moon, and aliens are hiding behind it. The moon slowly moves across the screen, just in time to finish before the Boss level. This makes the gameplay really challenging. It was also challenging to do detection whether aliens are hidden behind the moon or not. Since moon is round, rectangles are not very easy to use. I looked into pixel-precise detection, but I'm afraid it would slow the game to look individual pixels each time a shot is fired - especially since moon is rotating all the time. So I just reduced the original sprite rectangle by some 12% and I'm doing the rectangular checks instead. It is not pixel-precise, but it works really well. The way it works, bullets fly over the moon and aliens fly under the moon, so you can shoot those who haven't reached the cover yet.

I'm really satisfied with the gameplay now. It's fun, challenging and engaging. Now I need more bosses, a couple of more alien types and powerups. Without powerups it's a real challenge to reach wave 60, so I'll try to create enough content to have new stuff show up at least until level 100 without repeating bosses. I guess it will be easier with powerups. We'll see once I add those.

This is the first time I'm feeling it's going to be a great game, rising above the average space shooter.

Feedback & Share Bigosaur, 2013-10-11

Day 11: More alien types and attack formations. First boss level

The first boss is on level 10. It's big and cube-shaped. I'm calling it Borg, although it does not assimilate you ;) It emits regular aliens. You have to hit the boss multiple times to destroy it. I set energy to 20 for the first one, it's challenging but not really hard. I added a big shake when boss is destroyed. Boss is made out of 10x10 pixel blocks, so explosion looks nice.

Borg boss in Drone Invaders game

I also added a new snake like formation, aliens move down, then left/right and then down again, repeating it until they reach bottom. I made them a little bit faster in this formation, so it's challenging.

I have also drawn some nice aliens, and named all of them, as each type is represented by a Java class and I needed nice class names. Here they are: Hairy, Glider, Worker and Eater.

Here's a .jar file I made today, you can run in on Windows or Linux or Mac, as long as you have Java installed. On Linux I use: java -jar stardust.jar

Please note that you need to allow game's window to be at least 800px high, for it to work properly. I'm running it on my 1680x1050 desktop and it works fine, but on 1280x800 laptop the taskbar uses some space, so window size is reduced vertically and I need to click underneath the alien to shoot it. I guess I'll need to fix this if I even decide to release the PC version.

Feedback & Share Bigosaur, 2013-10-10

Day 10: Making it more fun to play

I'm having doubts whether the current concept is fun enough to play longer. Maybe it would be better if aliens would move left and right as well. I implemented that now for two new attack formations and it looks and feels much better. I also added the camera shake code when you hit an alien and it explodes. The game feels more alive now. The reload button works, so now you can empty your 10-bullet clip and have to reload. Makes the gameplay more interesting as you have to break from shooting spree to reload the gun. I replaced the ugly magenta color of some aliens with cold, whiteish blue. It looks much better.

Incoming wave of aliens

I'm thinking maybe it would be better if player could only touch the lower part of the screen - area within his shield. This way the upper part would always be visible - not hidden underneath player's finger as it happens often now. Maybe if shield is half screen size at start and as enemies hit it, it reduces until the gun is naked and vulnerable. Although, this would mean having to draw a gun as well. Probably not a bad idea though, I might try this.

Star Dust name is taken, I tried some 20+ others, but it seems that it's really hard to find a free name, as there are many space-theme games.

Feedback & Share Bigosaur, 2013-10-09

Day 9: It's a shooter, and it has first person perspective. Yet, it is not a darn FPS.

Looks like I'll have a hard time classifying this game when I talk to people. I could say it's a "retro arcade". Although, it differs from retro arcades where you move your ship around and it fires bullets straight. Here your position is static, and gun fires wherever you tell it to. Come to think of it, I've never seen a game that plays exacly like this, so don't try to classify it in some existing genre. The closest I got was "it's like Space Invaders, but without a ship". This got people completely confused.

Today I reworked the alien spawning code. I also redraw all the aliens in white color, so that I can change color at runtime using the same sprite. In case you didn't notice, aliens are single-color. I'm thinking to leave it this way, except for bosses. Maybe just add some glow animation or something like that. Who knows, maybe some artist will see a potential this game has and create some cool graphics. Feel free to contact me about this.

I'm thinking there could be an event in the game when enemies would "upgrade" to better graphics. Accompanied with a message "Aliens have evolved", which would bring in some metallic look and feel, for example.

Explosion code is also unified, so now I just supply a 2D array of "pixels" and enemies get blown to pieces. This has been working for some time, but now I got that code clean and universally usable for any kind of alien. Except maybe bosses, which might fall apart in stages. I still need to ponder on that one.

Anyway, if you're interested in playing, here's an .apk file of what I've done so far. Features are obviously missing, but you can see what I'm up to.

Feedback & Share Bigosaur, 2013-10-08

Day 8: Star Dust

I'm looking for a new title for the game. Got one, but need to research more to see if it's available: STAR DUST. I tried some fonts and I think I'll use the one called Ruslan Display.

Star Dust title

I polished the algorithm for alien explosions today. I'm also thinking how will the enemy waves look like. There would be 10 waves of enemies, and then a boss and after that the game would speed up a little bit and some new enemies would be introduced. At each tenth level (10,20,30...) there would be a new, unique boss. This algorithm would repeat until player dies. The speed would be capped at 2x starting speed as it seems to me that takes a lot of effort to play if you want to destroy all aliens.

And then, there will be powerups. Here are current ideas:

Time limited, collectible during the game:

  • shield (sits at bottom of the screen, protects against one alien going through)
  • score multiplier boost (x2)
  • rapid fire (just hold your finger down and move around)
  • mega bomb (destroy all aliens on screen)
  • hyperdrive (skip 10 waves of enemies, but gain points as if you destroyed them)
  • gallactic ninja (cut enemies with a jedi sword - fruit ninja style)
  • auto reload (auto reload lasers)
  • spread fire (fire 3 or 4 lasers at the same time)
  • extra life (start game with 4 lives)

Permanent, can be upgraded between plays:

  • rapid fire duration
  • shield duration
  • galactic ninja duration
  • auto reload duration
Feedback & Share Bigosaur, 2013-10-07

Day 7: Change of layout and screen orientation

You can shoot aliens now. Since the graphics is retro style, I decided to explode the alien's large pixels (I draw aliens using large zoom tool in Gimp, and then I enlarge the image 5x without any interpolation). I wrote a custom particle manager code and use built in tweening in libGDX to send each piece in a random direction away from center.

Particle effects libGDX and Android

You may notice that there is no you on the screen. This is on purpose. In case you did not realize yet, this is a first person shooter. ROFL. Well, at least technically, it is. You don't get to see yourself, you only shoot at enemies. In some test version I also tried to scale the aliens to give a feeling of depth and them coming from far away, but it's hard to shoot small sprites on Android using your finger, so I gave up on the idea.

To make the game more interesting, the laser gun you're using would need reloading. You got 10 shots and then you need to hit the Reload button at lower left corner of the screen. I'm still not sure about this feature - needs testing.

As I was testing this, one thing bothered me a lot: While I shoot the aliens, my index finger is all over the screen and it's hard to see what's going on. Then I looked at different Android games on my phone and realized that it would be much better if screen was oriented in portrait mode. When in portrait mode, your index finger does not come from below, but from right side (if you're right-handed, of course). Most of the screen is still visible in this case. I'm also changing the flying direction. Instead of going from left to right, aliens are coming from the top of the screen.

Because of this, I'm also changing the main game concept. Instead of playing a fixed amount of time, you would play until you allow one of the aliens to get past you. My initial idea was that you would play for one minute and score as many points possible during that time (something like fruit ninja arcade mode). But now I'm thinking you could have 3 lives or something like that, and if you let some aliens pass, it's game over.

I also changed the nebulas in the background. I wrote before about that tutorial how to draw a night sky with stars and nebulas in Gimp, but I had to experiment a bit to get the look I wanted. It works by using Subtract layer effect on two layers with rendered Solid Noise, and then colored using Overlay with a single color and a gradient. The problem is that Subtracting those two layers always created a "small" nebula, while I wanted the whole screen to be full with color. I draw the stars by placing a bunch of random dots using pencil and a couple of different colors. I separated the stars in 3 layers. On one of the layers I added a 2px drop shadow (with no offset), on second one I used blur and I left the third one as it is. The trick to nice stars is that those drawn close to each other should always be different color or have different sharpness. This is the way it is on the real sky. The stars that look close together are lightyears away and only appear close from Earth.

Feedback & Share Bigosaur, 2013-10-06

Day 6: First aliens and screen orientation

OK, I got some really retro aliens, and they are flying around. Sorry for no demo, it's an Android game, all I got is .apk and you probably wouldn't want to install .apk from a complete stranger. Basically, the background loads, and stars load, and stars slowly move. To scroll the stars I'm using setV() and setV2() on the stars texture, slowly increasing the timer. Like this:

    scrollTimer -= delta*0.014;
    if (scrollTimer < 0.0f)
        scrollTimer = 1.0f;
    sStars.setV(scrollTimer);
    sStars.setV2(scrollTimer+1);

And then some aliens show up and they move to the right. That's about all that works now. I'm still learning libGDX, so a lot of time goes into googling and reading tutorials or watching videos.

Helpful tip: I noticed that some games built with libGDX have fixed screen orientation. If you flip the device, the game shows upside-down. I found a very simple solution to this in some obscure comment in some SO thread. Just replace landscape with sensorLandscape in AndroidManifest.xml and device flips the screen automatically.

Setting up Eclipse for libGDX and Android

Feedback & Share Bigosaur, 2013-10-05

Day 5: libGDX and graphics ideas

I selected the library I'm going to use. It's Java, and it seems pretty complete. I managed to build and tweak a test application very quickly. I'm still confused whether to use Scenes, Actors, and all the other features or build the stuff myself as I'm used to. The docs are lacking examples and explanation how to tie in some stuff, I guess I'll have to google a lot. For example, there is no explanation how should you wire up the Actor and Sprite. And what if you have like 20 sprites with same graphics and stuff like that.

For this first project, I guess I'll learn just enough to manipulate Sprites and then build the rest myself using my previous experience. For some future project I'll probably be smarter and figure out which stuff did I build that was already there. I just hate learning so much up front and then figuring that framework/library is not flexible enough for some out-of-the-box ideas I might have in the future.

Here are some of my ideas for retro-graphic aliens. Most of the time I first draw stuff on paper. Maybe it's just a habit, but it helps me concentrate when I'm away from keyboard and monitor:

Retro graphic aliens drawing

Feedback & Share Bigosaur, 2013-10-04

Day 4: A Twist

I have been trying to draw some docking bay graphics and it looks like s***. So, I'm ditching the "docking bay" idea. The combat will happen in space. Yep, that's it. Aliens would come from one side of the screen, and you would shoot them before they leave it on the other end. At the bottom there will be some destrucable stuff. Aliens could hide behind that, and maybe you can shoot it down or make holes in it by shooting. Here's an example with a tower, satellite dish and some other things:

Nebulas, stars, aliens, tower, satellite dish

The idea is that you have limited time (say, one minute) to shoot down as many aliens as you can.

Since the game will have a space theme, I'm browsing my font collection, to find some cool gallactic font. So far, ArdourGM looks like the one I'll use for in-game text like points, option screens, etc.

The graphics above are created using Gimp, and insipred by this nebula tutorial. After reading that and doing some my own tweaks I was able to draw the above picture in a couple of hours. I hate when I lose that much time on a single thing, but this background would be used for most of the game.

Feedback & Share Bigosaur, 2013-10-03

Day 3: A new game idea

Looking around the net for ideas, and browsing Android forums, I found an ad for Revenge of the Titans. Cool game with retro graphics and nice animation. I can do retro graphics. So, instead of monsters, aliens would descent from space into your backyard... well...

No! Backyard does not seem like a good idea. I guess I'll need a new game name as well. I have two ideas here:

  1. Aliens attack a remote defensive station on the border. They disable the automated system, so you have to manually override the controls and shoot them. The game would be called MANUAL OVERRIDE or EMERGENCY OVERRIDE. I looked up on Google Play and Internet, it seems these names are free to be used.
  2. Aliens land on a docking bay of a large spaceship and you have to keep them away. They could hide behind some barrels, landed spacecraft, etc. I'd like to have some stuff in the game beside enemies that is destructible. The game would be called DOCKING BAY or DECK 42, or something like that.

Not very exciting titles? Oh, well.

Feedback & Share Bigosaur, 2013-10-02

Day 2: Eclipse setup and choosing a game library

I downloaded Android bundle and set up my Linux machine with Eclipse. I was able to run Hello World on my Galaxy S2. Hello Java. I really have to remember all the Java stuff as I haven't used it since 2002 or something like that.

Free Unity license

Looking at all the 2D/3D OpenGL stuff, it looks like it would be a good idea to use some toolkit/library to build the game. I got some free licenses for Unity3D at NordicGame 2013, but those do not include rights to release on Google Play, so I guess I'll skip Unity for now. I'm now looking into CoronaSDK and some other libraries.

Feedback & Share Bigosaur, 2013-10-01

Day 1: Backyard Panic

Looking at some websites with animation stuff, I found some nice, freeware, zombie animations. They have even animations for zombie being shot, crawling, etc. So, maybe this game could be a zombie shooter.

Your character would sit on his/her porch and shoot the zombies coming out of the cornfield. The game would be called Backyard Panic. You could switch different characters from the old granny, redneck with a shotgun, to a member of the Marines with some long-range rifle. Here's a really, really rough sketch:

Zombies coming out from the cornfield

Update: I just played Zombie in USA. Interesting game, but gets a little bit boring to tap the device like crazy. I want a single touch equals kill type of interaction, at least for non-boss enemies. As I think about it more, the whole zombie topic seems too gloomy for me, and having yet another zombie game is hardly called fresh. So, I'm not sure about this. Also, it seems it would involve 3D graphics, and I'd like to stick with 2D, at least for my first Android game.

Stay tuned. I plan to post my progress each day.

Feedback & Share Bigosaur, 2013-09-30

Creating a complete Android game from scratch in one month

My inspiration I wanted to build an Android game for some time, but never got some good idea. Lately I have been playing Subway Surfers and got really passionate about it. I usually don't like the "endless" games, that you basically cannot finish, so I always set an arbitrary goal to reach. This time it was reaching 30x score multiplier. While I did that, I got some skill and really got addicted to the game. It also made me realize that Android games don't have to be a AAA title with huge story and complex gameplay. Something simple and casual is OK.

Anyway, I thought it would be nice to have a game where you could simply point your finger at something and shoot it. With a system of Missions, Daily and Weekly Challenges and weapon upgrades it could be fun. My first idea was to create a game where some cute monsters would run around a beautiful scenery, hide behind the trees, old houses, or even in the clouds and you would need to shoot as many as you can. By cute monsters, I mean something like Gremlins. They would also bring in some huge machines and do other stupid things that would make you laugh. Of course, being an indie game developer with zero budget, I decided this would require too much art and too much of my time because of complex animation I envisioned. So I decided to use a different setup, something I can produce myself in a reasonable timeframe.

My goal now is to make an interesting, playable game for Android in one month.

Feedback & Share Bigosaur, 2013-09-29

Hello Gamers and Gamedevs

This is the place where you can read about games that I released so far as well the progress on the new games. I recently released a battle card strategy Gods of Sparta and now I plan to try to make my first Android game.

Update: I never managed to start this, but Ludum Dare October Challenge is here, and this is enough to finally get me going. Initially, this was supposed to be a Create Android game in 21 days challenge for me, but I got some more time because Ludum Dare ends by November 1st.

Feedback & Share Bigosaur, 2013-09-12

Son of a Witch | SoaW graphics, screenshots and .gifs
Bigosaur.com Website Home Page Bigosaur.com Website Home Page Blog main page YouTube channel Twitter account Google+ page Facebook page