Dice Wars 2: Strategy game with dice

Dice Wars 2

Dice Wars is a board strategy game which is played using dice (lots of them actually). Dice wars is similar to Risk game, but has different maps, strategies and rules. Dice Wars 2 allows you to play against 1-5 bots or play 1v1 network games against random opponent or your friends.

What’s New in Dice Wars 2
  • You can invite your friend!
  • Added bonus tiles (see gameplay for details)
  • Moved dice roll popup to the bottom of screen (less annoying)
  • As always we keep our “No ads during gameplay” approach, but aside from them removed double triple ads from being popped up randomly in menus. (should be less annoying)
  • New UI (Yay!)
  • Now you can save your games and watch them later or share with your friends
  • Improvement in backend (the server) it should feel lighter and work faster than before
  • and there are many “invisible” changes in version 2 including network, performance, some bug fixes, etc.

What it looks like…

Dice Wars 472 473 474 475


Gameplay Single player

Dice Wars is turn based game. At the beginning of game there are tiles on which you can see piles of 1-8 dice. Human player is playing with blue colored dice. Other players have dice of different colors and neutral player has gray dice. On your turn you can attack each tile which is adjacent to your own tile. To attack tile you need to select tile from which you want to attack and then tile which you want to attack. Attacking tile means that you are rolling all your dice on your tile and opponent is rolling his dice. If the sum of your dice is bigger than sum of opponents dice then you left 1 die behind and move rest of your dice to opponents tile removing his rices from board. If sum of your dice smaller or equal to sum of opponents dice then he successfully defended and you loose all your dice on that tile except for one die which remains on its place. Neutral player is like other players, but it never attacks anybody. When all your moves are done you need to hit “End Turn” button (Thumb up) to finish your turn. At the end of turn you will randomly get some dice to your tiles. Number of dice is equal to the area of largest connected area you have (plus bonuses).

Your goal is to remove all opponents dice from board.

Gameplay Network

Network game rules are the same as single player. In order to start network game you need to hit Find Opponent or Invite buttons. When other player does the same you will be matched and your game will start.  Currently there are only 1v1 network games available.

Simple Replays from our players

Please note that web replay is still in demo stage

Gameplay video

Links to download Dice Wars








Math Defender Game for iOS and Android

Math Defender Description

Aliens are attacking Earth! Each of them has code which Math defender need to break in order to destroy their ship. Code is hidden in math equation you need to solve. After you got the answer tune your zapper to correct answer and zap the UFO.

Math defender is very fun game which at the same time makes your brain work. Very good for preschoolers and schoolers to learn math. Game has 10 levels from easiest to hard and each level has 5 speeds.

Math defender game is available in iTunes and Google Play stores.

appstore googleplay


iOS Simulator Screen shot Aug 12, 2014, 2.08.25 AM iOS Simulator Screen shot Aug 12, 2014, 2.08.28 AM iOS Simulator Screen shot Aug 12, 2014, 2.08.36 AM iOS Simulator Screen shot Aug 12, 2014, 2.08.49 AMMath Defender iOS Simulator Screen shot Aug 12, 2014, 2.08.11 AM



Wazzlex Mobile Demo

Wazzlex Mobile Demo

Game is available online




Welcome screen


Game play




Player profile page


Short video how Wazzlex grew

Mac OS/Linux: Batch rename files to random name

This is probably most used line in terminal for me:

Batch rename files and generate random names

for i in *.jpg; do mv "$i" $RANDOM.jpg; done

also batch changing extension of files (for example make lower case)

for file in *.JPG; do
    mv "$file" "`basename $file .JPG`.jpg"


Animal Sounds Game


Corona SDK Utilities: NewVariable function

Hello Corona Devs,

Second function I want to share with you is UTL.NewVariable. It is committed into GitHub repository and is located in file utl/settings.lua

Please feel free to use/share them. If you find any bugs or have any comments please don’t hesitate to write me.



function UTL.NewVariable(filename, default)
	local tbl = UTL.LoadTable(filename);
	if not (tbl) then
		tbl = default;
		UTL.SaveTable(tbl, filename);

	return setmetatable({
			Get = function()
				return tbl;
		}, {
		__index = function(t, key)
			return tbl[key];

		__newindex = function(t, key, value)
			tbl[key] = value;
			UTL.SaveTable(tbl, filename);

This function uses UTL.LoadTable and UTL.SaveTable function you can find below:

function UTL.SaveTable(t, filename)
	local path = system.pathForFile( filename, system.DocumentsDirectory)
	local file =, "w")
	if file then
		local contents = JSON.encode(t)
		file:write( contents )
		io.close( file )
		return true
		return false

function UTL.LoadTable(filename, dir)
	if (dir == nil) then
		dir = system.DocumentsDirectory;

	local path = system.pathForFile( filename, dir)
	local contents = ""
	local myTable = {}
	local file = path, "r" )
	if file then
		 -- read all contents of file into a string
		 local contents = file:read( "*a" )
		 myTable = JSON.decode(contents);
		 io.close( file )
		 return myTable 
	return nil


What it does

Function NewVariable creates table to which you can set/get values and every time value in that table is changed it will be saved in file specified. Initial value of variable will be one that is saved in file.


Here is a small example:

local var = UTL.NewVariable("test.json", {
    counter = 0
var.value1 = "something";
var.value2 = 12;
var.counter = var.counter + 1;

print("value1 = ", var.value1);
print("value2 = ", var.value2);
print("counter = ", var.counter);

Above example will output following:

First run:
value1 = 	something
value2 = 	12
counter = 	1

Second run:
value1 = 	something
value2 = 	12
counter = 	2

Third run:
value1 = 	something
value2 = 	12
counter = 	3


When to use

This object is useful when you want to save apps state and restore on next run easily.

For example:

local Settings = UTL.NewVariable("settings.json", {
    soundEnabled = true,
    musicEnabled = true,
    coins = 0


store:addEventListener("purchase", function(amount)
    Settings.coins = Settings.coins + amount;


Corona SDK Utilities: Chain function

Hello Corona Devs,

I am starting series of tutorial like posts where I will share with all of you some small utility functions for Corona SDK which I use in my apps and games. I have created GitHub repository where I committed all my current utility functions. Please feel free to use/share them. If you find any bugs or have any comments please don’t hesitate to write me.

For my first post I have this small function I called Chain.



function UTL.Chain(...)
	local callbacks = {...};

	return function(...)
		local res = {...};
		for i = 1, #callbacks do
			res = { callbacks[i](unpack(res)) };
		return unpack(res);


What it does

Function Chain take other functions as argument and returns single function: chain function. When chain function called it will start calling first function with arguments it got, then second function with return value of first function, then third function with return value of second and so on. Chain function will return return value of last function.


Here is a small example:

local function Func1(a, b)
	print("Func1 called with ", a, b);
	return a + 1, b + 2;

local function Func2(a, b)
	print("Func2 called with ", a, b);
	return a + b;

local function Func3(a)
	print("Func3 called with ", a);
	return a * 2;

local chain = UTL.Chain(Func1, Func2, Func3);
print("Result is ", chain(1, 1));

Above example will output following:

Func1 called with 	1	1
Func2 called with 	2	3
Func3 called with 	5
Result is 	10


When to use

Chain function is very useful in places where you want to call two functions and don’t want to create a new  anonymous function in place.

For example:

obj:addEventListener("tap", UTL.Chain(PlayTapSound, HideBottomBar, DoSomethingElse));

If you want to return some value from chain: for example you want to return true to stop event layering you can just add function that returns true at the end: in this library there is a function UTL.TrueFn which does that.




Angry Marmot became Corona Ambassador

I’m honored to be Corona’s Armenian Ambassador! Stay tuned for info about our meetups.


Cute Animals: Puzzle games


Cute Animals puzzle is two in one puzzle game with 130 amazing animals. You can enjoy slider puzzle and 15 puzzle games with all pictures and after winning level you can save image on your mobile device and use them as wallpaper.


Game is available here:


Slider Puzzle game

Picture will be split into 3×3, 4×4 or 5×5 part and then all parts will be shuffled. Your goal is to restore original image by swapping any two pieces.

15 puzzle game

15 Puzzle is classic puzzle game where you have your picture split into 3×3, 4×4 or 5×5 parts and they are numbered from top left to bottom right. Last part is always missing leaving empty place on board. You should restore image by sliding pieces adjacent to empty place to it.


screenshots Puzzle game iOS Simulator Screen shot Apr 24, 2014, 4.20.15 AM iOS Simulator Screen shot Apr 24, 2014, 4.20.21 AM iOS Simulator Screen shot Apr 24, 2014, 4.19.33 AM


You can watch gameplay here:


Checkers War: Chapayev game


Checkers war is unique hybrid of checkers and billiards games. The aim is to knock the opponent’s pieces off the board. Checkers War gives you 4 different play sets:
  • Classic – Both sides will have single row of light checkers (tanks)
  • Two Row – Two rows of checkers one with light and other with heavy tanks
  • Turn by Turn – Mix of light and Heavy tanks with obstacles on the corners of board
  • Pool – Pool like board with mix of tanks

Checkers War is well known as Chapaev Game in former USSR countries.


You can download Checkers War from your favorite app store using following links


In order to play Checkers War just choose tank which you want to shoot, drag and release it. It will fly in direction you chose and knock off other tanks in front of it. You should knock all opponents tanks off the board.


Checkers war is turn based game. In classic version turn switches to opponent if you knocked off one or more of your tanks or did not knock anything off board. In turn by turn version you switch turns after each move.


Checkers War gameplay is here:


Checkers war iOS Simulator Screen shot May 15, 2014, 3.10.48 PM iOS Simulator Screen shot May 15, 2014, 3.11.18 PM iOS Simulator Screen shot May 15, 2014, 3.13.09 PM iOS Simulator Screen shot May 15, 2014, 3.13.27 PM



Checkers War is first new game released in Nokia Store. Future updates will give you choice of bot, ability to create custom games and maybe even custom board configuration. I will also add couple of different tanks you can play with and network gaming.