We are proud to announce the integration of Noble Avatar into eCribbage (this actually happened a while ago). eCribbage is the largest, most comprehensive collection of free online cribbage games on the web. See below for a depiction of the winners podium after a game has ended.
If you like cribbage, definitely give the game a try. For the guys out there: the game also seems to be quite popular amongst the ladies!
Website: http://ecribbage.com

Winner's Podium for eCribbage
Age of Conquest is doing pretty well in the Android Market. The Lite version has been downloaded over 200′000 times. That is actual very close to Noble Fart downloads with a little over 350′000. Conversion rate from Lite downloads to sales is a little under 10%.

Age of Conquest Ratings in Android Market
I spent some time reworking the splash screen! Here we go…

Age of Conquest III - Splash Screen

Icons for AoC III
I got some of the icons ready for Age of Conquest III. Sergey our artist is drawing all the graphics for the upcoming installment of the game. So far, he is doing an excellent job.
In regards to coding; I am currently porting Age of Conquest from iPod/iPhone to the iPad. I am creating an Universal Binary which can be run both on small as well as big screens. I noted there are only a “few” games for the iPad available so far (unless I am mistaken?). If I get Age of Conquest in there soon, it might get extra exposure. I also started doing some initial GUI work for the desktop release (Windows, Macintosh, Linux).
The graph below denotes the visitor statistics for the domain AgeOfConquest.com for April 21, 2009 – April 20, 2010. Please note the increase around November/December time frame. The increase happens during the time the Droid phone is started to be sold in the United States.
Also note there is a higher number of users from Android devices who visited the site compared to iPhone users.
- WinXP – 41%
- Win7 – 17.2%
- Android – 15.8%
- WinVista -15.4%
- MacOSX – 6.8%
- iPhoneOS – 1.8%
- Linux – 1.6%
- Win2000 0.4%

Visitor Stats for Age of Conquest

Age of Conquest Ad (Korea)
Age of Conquest has been released in Korea for a little over a month. It appears both Age of Conquest Asia as well as Age of Conquest Europe have been well received with ratings of 4.4/5 and higher.
Age of Conquest is available in SKT’s T-Store. The game is published by JoyMoa. SKT is SKTelecom, one of South Korea’s major mobile telecommunication providers. SKT is in competition with KTF (Korea Telecom Freetel) to regain the market share it lost due to KTF releasing the iPhone in South Korea. SKT is focused on Android hand held devices.
Direct links to T-Store:

Vassalization
I completed implementation of vassalage for Age of Conquest ONLINE on Android. A vassal is depicted with diagonal stripes:
- Duke/Duchess: thick stripes
- Count/Countess: thin stripes
Each empire can have one or more vassal. Each vassal can have exactly one liege. Vassals will pay 10% of their tax income to their liege. For the standard type game, goal points are assigned as follows:
- Self: 1
- Alliance points multiplier: 0.35
- Liege (vassal master) points multiplier: 0.29
- Direct vassal points multiplayer (level 1): 0.41
- Indirect vassal points multiplayer (level 2): 1/2 * 0.41
This basically means, you will get the full points for the provinces that you own yourself. You will receive 35% of the points from the provinces your allies own. A vassal will receive 29% of the points from his/her liege. A liege will receive 41% of the points from the direct vassal and 20.5% for the vassal below.
Each turn, the following updates are applied to the ecosystem of Age of Conquest. Updates include population growth, population migration and economy changes.
// population: constant growth
for (int i = 0; i < provinceList.size(); i++) {
Province province = provinceList.get(i);
int population = province.getPopulation();
long increasePercent = 8;
long increase = population * increasePercent / 100
* province.getEconomy() / Province.MAX_ECONOMY
* (province.isTown() ? 125 : 100) / 100;
population += increase;
province.setPopulation(population);
}
// population: migration
List populations = new ArrayList();
for (int i = 0; i < provinceList.size(); i++) {
Province province = provinceList.get(i);
populations.add(province.getPopulation());
}
for (int i = 0; i < provinceList.size(); i++) {
Province province = provinceList.get(i);
ProvinceList neighbors = province.getNeighbors();
int population = populations.get(i);
int neighborCount = neighbors.size();
if (neighborCount > 0) {
int migrationPercent = 15;
int migrationPopulation = population * migrationPercent / 100 / neighborCount;
for (int k = 0; k < neighborCount; k++) {
Province neighbor = neighbors.get(k);
neighbor.setPopulation(neighbor.getPopulation() + migrationPopulation);
province.setPopulation(province.getPopulation() - migrationPopulation);
}
}
}
// economy: changes depending on population size difference to economy difference
for (int i = 0; i < provinceList.size(); i++) {
Province province = provinceList.get(i);
int economy = province.getEconomy();
long increasePercent = 2;
long increase = (province.getPopulation() - economy) * increasePercent / 100;
economy += increase;
province.setEconomy(economy);
}
Please note that the code sample does not include all the variables as of yet.

Private Messaging
Age of Conquest III is equipped with a private messaging system. Messages can be sent to any of the players of the game without them having to give away their email address. You can be notified of new messages by email if desired. In addition there is a friend list to manage friends and foes.
The new private messaging system will make it easier to organize games, organize clans & communities, get latest tournament updates, investigate cheaters and bother the game developer.

Profile Popup Window
Age of Conquest III will feature profile popup windows that display user information. The popup window will be made available by simply clicking on a username.
The popup window displays ratings, rankings and awards. Furthermore, it provides quick access to write private messages as well as adding and removing a contact from the personal friend list. The personal friend list can be utilized to invite people to a game or write bulk messages.
Still under development:
- The profile picture will be replaced by an actual avatar image.
- Awards will be added and depicted using medals/trophies.
- [Report] button to report a user as possible cheater.
Age of Conquest III will get a graphics overhaul. The goal is to add graphical depictions of armies as well as structures to give it a more game-like look & feel. The fortification display (currently checker board) will be replaced with an actual wall. The units will be displayed using actual icons of soldiers. Attacks as well as defenses will animated.
Small armies will be depicted with one soldier icon, larger armies using more:
- Unit Size 1-999: 1 soldier icon
- Unit Size 1000-3999: 2 soldier icons
- Unit Size 4000-9999: 3 soldier icons
- Unit Size 10000-19999: 4 soldier icons
- Unit Size 20000+: 5 soldier icons
Attack animation for a large army (5 soldier icons):

The graphics production is financed by Android sales.
In order to prevent a future downtime, the next server release will contain code to monitor itself. A separate thread will poll the server every 30 seconds. If the server does not respond for 7 consequitive times, the server will be considered down and automatically restarted.
Possible reasons for a downtime include: running out of memory, database going down, loosing the connection to the database, file handles exhausted, other crashes and errors.
Although the code will not catch all server problems and will not be able to restart the server in all cases, it will still be able to take care of at least some of the cases listed above. The server monitor will be better than having nothing in place at all.
Java code to restart a computer:
String os = System.getProperty("os.name").toLowerCase();
boolean windows = os.indexOf( "win" ) >= 0;
Runtime runtime = Runtime.getRuntime();
if (windows) {
// for windows
runtime.exec("cmd /c shutdown -r -t 0");
}
else {
// for Linux and Mac OS X
runtime.exec("/sbin/shutdown -r now");
}
Business should be replaced by “woes”; the woes of running a game server. Given my estimates, it takes about 4x as much time to implement and run an online game compared to a single player game. Costs (=time investments) include implementing a server, implementing client-server communication, setting up a server and database. An online game needs social networking tools to facilitate player-to-player communication including chat system, rankings and ratings, private messaging, clan system and game creating/management amongst others. An online server requires constant monitoring and maintenance. It needs to be backup’ed every so often. There is also a huge income difference between single player sales and multiplayer subscriptions (on Android) which make me wonder if running an online game is really worth the time? I could probably make about 10x more money in ¼ of the time implementing a new single player game as compared to running and maintaining a game server.
Generally, if the server is up & running, no one will notice. The opposite is true when the server goes down. There were some problems with the new server (Age of Conquest V3) where the game server would not startup after a computer restart. It appears, the database connection pool would be locked. Everything that wasn’t database related would still work (e.g. server socket). It would only occur every tenth time or so, which made it difficult to track. I believe the problem was related to the Bitronix transaction manager which would not properly startup but go into a deadlock situation. Multiple threads would try to access the transaction manager at startup preventing it from fully initializing. The transaction manager is now force-initialized before everything else preventing it from going into a deadlock. Things worked fine so far; keeping my fingers crossed!
The latest is a “Too many open files” error that happened yesterday. It appears the server was running out of file handles preventing it to respond to anyone connecting. A file handle under Linux can be an actual file handle but also includes socket connections as well. From the looks of things, it appears the file handle limit was set too low at 1024. I upped the limit to 65535 handles which should hopefully do the trick?