Monday, September 27, 2010

City of Wonder: Review and Tips



This is a personal review City of Wonder, a casual social game on Facebook. I started playing City of Wonder about a month ago so bear in mind that I may not have unlocked all that there is to unlock. City of Wonder is a simulation game developed by Playdom and played on Facebook where you can create prosperous civilizations which will let you progress through the ages while researching various technologies. In short, City of Wonder is a streamlined, very social version, of Civilization which focuses more on city building.

When starting out, you will be given a piece of land to cultivate. The tutorial and your advisors will help you reached several levels before setting you free on your own.

There are a few numbers to keep track of when playing City of Wonder.

Population is the number of people living in your city. To increase the population of your city, you have to build residential buildings or dwellings. To build a residential building, you will need coins. Some building require certain research to be completed before you are able to build them. Once a residential building is built, a timer will count down and when it finishes, an icon will float over the residential building indicating that people are ready to move in. Clicking on the building will increase your population by a certain amount depending on the type of residential building. Different residential buildings add different amounts of population and also requires varying lengths of time.

Happiness sets the maximum number of people that can reside in your city. One of the ways to increase this number is to build cultural buildings and decorations. Both will cost some coins but will surely increase the happiness in your city and allow your population to grow. The same with residential buildings, some cultural buildings and decorations requires a certain research to be completed before you are allowed to build them.

Coins are required to build things among other things. Coins can be earned in several ways, the simplest of which is to build Market buildings. Building market buildings will cost you some coins. Once, a market building is built, a timer will count down and when it finishes, an icon will float over the market building indicating that coins are ready for collection. Clicking on the market building will add a certain amount of coins to your total. Different buildings add different amounts of coins and also requires varying lengths of time. The number of market buildings you may construct depends on your population. You may also earn coins using Goods buildings. You may construct Goods buildings which will cost you some coins. When finished, you can click on a goods building and choose which goods you would like it to produce. Different goods will cost you different amounts of coins as well as earn different profits and take different amounts of time to finish. The number of goods buildings that you may construct depends on the size of your city.

XP or experience is used to determine your level. XP is gained by doing actions in City of Wonder. Earning a level will open up research options for you so that you can fulfill the requirements of the other buildings.

All in all, City of Wonder is a social game that offers more depth than the other games out there and I feel it is a nice change.

I hope you found the post useful. You can subscribe via email or subscribe via a feed reader to get relevant updates from this blog. Have a nice day.

Friday, September 17, 2010

iPhone App Review: Eliminate

Eliminate is a real-time multi-player arena style first-person shooter game which is free to download and install. More importantly Eliminate is FREE to play. Players duke it out in 4-player free for all matches across several maps.

Eliminate offers a good amount of customization as players can purchase different weapons and armor as well as upgrade their existing ones. To earn credits, players must do well in the matches i.e. getting the kills and picking up the dropped credits whenever they succeed to eliminate another player. Players also level-up which unlocks more powerful weapons and armor.

The players armor has an energy meter which is expended with each match that is played. When the meter is full, a player can play up to 3 matches. A player can still play with no energy but that player will not earn credits. The energy bar recharges itself every 4 hours. Players can also use power cells to charge their energy bar. Power cells maybe purchased thru the iTunes’s in-app purchase system. A pack of 20 power cells costs $0.99.

As for me, I downloaded and installed the different versions of the game from the app store:

Eliminate Boost
Eliminate Burst
Eliminate Turbo
Eliminate Co-op

Each version offers some free power cells so I believe I have around 40 power cells in my account. I've tried the bot matches and as expected, I sucked at it. I will be doing some more training with the bots before I dive into actual player vs player combat. I recommend everyone to at least give Eliminate a try.

I hope you found the post useful. You can subscribe via email or subscribe via a feed reader to get relevant updates from this blog. Have a nice day.

Wednesday, September 15, 2010

REST XML parsing with Grails 1.3.4

We encountered an issue with Grails 1.3.4 where we found that the XML packet was not parsed and added to the params variable in the controller.

The grails manual has a section which describes how to do REST web services. We followed the instructions but we weren't able to get the automatic data binding to our domain class to work. A fix seems to be on the way but in the mean time, the code below provides a workaround for the issue:

private populateParamsFromXML(xml,map) {              
        def rootName = xml.name()
        //check if params is already populated
        if(map[rootName])
            return
        def xmlMap = [:]
        map[rootName] = xmlMap          
        map = xmlMap
        for (child in xml.children()) {
            // one-to-ones have ids
            if (child.@id.text()) {
                map["${child.name()}.id"] = child.@id.text()
                def childMap = [:]
                def key 
                map[child.name()] = childMap
                populateParamsFromXML(child, childMap)
            }
            else {
                map[child.name()] = child.text()
            }
        }
    }

It should be called in a controller action before the params variable is used to populate a domain class.

populateParamsFromXML(request.XML,params)

I hope you found the post useful. You can subscribe via email or subscribe via a feed reader to get relevant updates from this blog. Have a nice day.