All Posts By

faizan

Project ThirdCharm Initiated

By | Developer Diary, Game Development, iOS, Platforms, ThirdCharm, Uncategorized, Unity | No Comments
[imageeffect image=”1106″ type=”reflection” lightbox=”yes” target=”_self”]

We have been busy working on our next game, code named ThirdCharm. We are pretty bad with names so we just decided to use that for now until we land on a good name.

There is not much we can say or show about it but here is a concept art image and some untextured level designs that we have been trying out. Stay tuned.

[postgallery_grid id=”grid_thirdcharm1″ title=”Project ThirdCharm” data_source=”data-4″ orderby=”ASC” flickr_set=”No username entered” slidesetid=”ThirdCharm1″ content_type=”image” lightbox=”yes”]

Google Play Game Services for Unity

By | Game Development, iPhone, Technical, Unity | 105 Comments

Google announced Google Game Play Services (GPG) for iOS and Android about 2 days ago at Google I/O. The most important part for us is the ability to save game progress in Google Cloud and realtime Multiplayer game support. This brings Google upto mark with iOS GameCenter.

We just created a plugin for Unity for iOS and Android for GPG with following features

  • Google Cloud Save
  • Leaderboards
  • Achievements
  • Signin/SilentSignin

Google Play Game Services Unity Plugin Demo

In coming weeks we shall add support for Android as well.

Multiplayer matchmaking will be a bit of work since state synch will have to be done from scratch just like it needs to be done for GameCenter. The Unity.Network would not be helpful in multiplayer without a Unity Raknet MasterServer.

The code is available as opensource at https://github.com/faizann/UnityGPGPlugin

Update June 16, 2013

The code now supports Android plugin as well.

Mobile World Congress 2012

By | Android, Blackberry, Game Development, General, Microsoft, Nokia | No Comments

I had a chance to go to Barcelona for Mobile World Congress 2012 at end February. Here are some pictures and what was interesting from game development perspective.

NVIDIA

NVIDIA stand was big as usual and they had TV’s attached to Tablets. I got to see NVIDIA tablets running Tegra 3. I think the tablet was made by ZTE as a prototype.

NVIDIA Booth with Tegra 3 being the most highly visible product/tech

 

Huawei Smartphones and Tablet

Interestingly Huawei has started to manufacture Tablets and Smartphones. They looked really nice and polished. Something interesting for future. All running Android 2.3 (for phones) and 4.0 ( for tablets).

ZTE

ZTE launched its smartphone called ZTE Era as well. Phone runs Android. No pictures for that either.

RightWare

RightWare wan interesting company. They provide system called Kanzi UI to create 3D UI for mobile platforms. Don’t forget to checkout their demo video. They even had a device that had 3D display without glasses. The UI engine works using OpenGL ES and should be possible to use in-game for creating Menu etc. I was promised a trial licence and will know more when we try ourselves.

 

 Qualcomm

Qualcomm’s Snapdragon was very interesting. I had a short game (CS like?) with Manish who is Product Manager for Graphics, Gaming and Tools. I hope he forgives me for making him lose the game he was playing all day. I am excited to get hands on the tools they got and see what we can learn and improve for our games.

Blackberry

Blackberry had a big booth as well. Bigger than I was expecting. We have already released BLAZ3D for Blackberry and it was nice to chat with people there. The guys at developer connect section were very helpful and we discussed a few things and got some contacts to stay in touch and updated with RIM world.
The most interesting part was a Porsche running Blackberry Tablet OS (QNX).

 Android

Android booth was big as well. I stayed there for quite long and had fun chatting with guys. Complimentary IceCream sandwich and smoothie were awesome. I also took a ride in their slide as seen and got a printed picture from their automatic camera. The whole feel of Android booth was playful and it felt less business like there. Too bad they didn’t have Stickers this time, so no free android goodies. As for tech it was all usual Android tablets and HTC/Samsung phones on display.

 

Nokia

Booths for both companies were separate and quite far from each other. Even in separate halls. Booth for Nokia was like whole hall in itself. Probably the biggest booth in the whole conference. There were some phones like Lumia but Iforgot to check on Nokia 808 PureView. We are hoping to release BLAZ3D soon for Symbian.

 

Microsoft

Microsoft had pretty much just a big blue wall. I am not sure if it was some sort of secondary booth but it hardly had anything. One interesting thing was a scoreboard where comparison of phones was made based on speed. Not sure exactly what it was but I think it was similar Smoked By Windows Phone challenge. Got some Windows Phone stickers only.

 

 

These are really interesting times for mobile game development. The processing, graphics and resolution is increasing rapidly for smartphones. There are more players entering the market that would shake things up. There are even more uses of mobile OS than just being on Mobile and Tablets (Porsche example).

Our experience with Apple’s approval process for submission of BLAZ3D

By | Developer Diary, Technical | No Comments

Inspiration for this post

We had a lot of confusion about app submission and approval process of Apple. The best documentation for process is on Apple’s own developer resources but still it doesn’t explain what can go wrong. Something like this you can only learn from experience and hence we decided to share our experience of approval process.
 

29th November 2011 sometime

App ID was setup for BLAZ3D game in iTunesConnect. Put description of app as BLAZ3D RACING and enabled GameCenter. Created all Gamecenter achievements.

13th December 2011 (5 AM SGT)

Created Distribution Mobile Provisioning Profile for AppStore. No Ad-hoc or Developer.
Tried uploading app using App Uploader application. Got error that uploaded content didn’t contain _CodeResource directory etc.
Realised from forums that we have to send appname.app.zip instead of appname.ipa file.
Tried upload again and App Loader rejected without uploading telling us that signature was invalid for Distribution.
Realised it was still going under Developer certificate even though we had used Distribution. Went back to Marmalade and selected Sign for Distribution and gave it distribution profile. Removed other certificates just to be sure that it doesn’t sign with Developer again. Checked if app is signed with App Store Distribution profile using codesign -dvvvvvv appname.

13th December 2011 (6:15 AM SGT)

Finally Uploaded our binary of 55MB. Status was updated to [highlight type=”two”]Upload Received[/highlight]. Shook hands and gave hugs and went to bed next minute. Some of us had been up for over 50 hours to finish game.

13th December 2011 (6:00 PM SGT)

Woke up after almost 12 hours of satisfying/happy sleep to checked emails.
WTF!!! Binary got rejected after a few minutes of our upload because of issue in certificate entitlements. If we had bothered to wait for a few more minutes we would not have wasted 12 hours to see that binary was rejected.
Checked some forums but nothing seemed wrong with our app. Icons and file size and os type etc were all good. Our app supports both iPad and iPhone.
Suddenly we realised that we had been ignoring a warning on Marmalade Deploy Tool about ‘aps-environment‘ not being in provision profile.
Recompiled app and we saw same warning again. We were not using any push notification code so we didn’t think it was necessary to have ‘aps-environment’ in provisioning profile but it appears that marmalade somewhere in its own code uses the API. This we knew from our experience with OpenFeint extension we built for Marmalade that also requires Push Notification.
Went back to AppID and configured SSL certificate for Push Notification for Distribution.
To be sure that provision profile gets updated with this, clicked on Modify in Provisioning portal for our provision profile and then re-saved it without making changes. After that downloaded the profile and used it to sign app.

13th December 8:20 PM SGT (4:20 AM PST)

uploaded app again and went out to dinner leaving the upload running.

13th December 9:01 PM SGT (5:01 AM PST)

received email with status of app as [highlight type=”two”]Waiting for Review[/highlight]. Knew too well not to celebrate pre-maturely.

14th December 12:10 AM SGT (8:10 AM PST)

after almost 24 hours of our planned submission we realised that we were using Marmalade’s old free licence which was about to expire in 10 days. Marmalade used to have free licence that allowed apps to be built for iPhone only and showed now splash screen. We were not sure to take the risk and re-signed our app using Standard Licence.

14th December 1:30 AM SGT (09:00 AM PST)

The status was still [highlight type=”two”]Waiting for Review[/highlight] so we rejected binary in iTunesConnect. App Status email came with [highlight type=”two”]Waiting for Upload[/highlight] status. We re-uploaded the new binary.

14th December 2:00 AM SGT (09:00 AM PST)

App status changed from [highlight type=”two”]Upload Received[/highlight] to [highlight type=”two”]Waiting for Review[/highlight] within a few minutes of upload completion.

16th December 12:11 PM SGT (15th December, 8:11 AM PST)

received email that app status was [highlight type=”two”]In Review[/highlight].

16th December 12:32 PM SGT (15th December, 8:32 AM PST)

Received email with title [highlight type=”two”]App Submission Feedback[/highlight] explaining meta data issue in app. Fortunately Apple allows to change meta data without re-uploading the binary. The App resolution center notified that our app description only had 2 words BLAZ3D RACING which was not descriptive enough. We realised that we didn’t update the description since we set the App on iTunesConnect on 29th November 2011.

16th December 01:00 PM SGT (9 AM PST)

Quickly updated the description with more marketing information and then resubmitted app (without uploading binary).

16th December 5:00 PM SGT (1 PM PST)

Received email that app was [highlight type=”two”]In Review[/highlight]. We knew from experience that it should be approved/rejected in a few minutes. We were wrong here.

17th December 12:08 AM SGT (8 PM PST)

After a few hours of fixing of meta data. Received email that app was [highlight type=”two”]Being processed for AppStore[/highlight]. This meant that app was approved.

 

All in all the Apple approval process was not that bad. Our own mistakes caused us extra hassle. Forums and blogs complain a lot about Apple approval process but it seems Apple has been improving things all the time. Marmalade documentation also explains steps to follow to prepare your application for submission to Apple which is also a good help.

Openfeint extension for Marmalade

By | Android, Developer Diary, Game Development, iPhone, Technical | 26 Comments

We wanted to integrate Openfeint in our game BLAZ3D but there was no extension in Marmalade, the game engine we used. We decided to create an Openfeint extension for ourselves.
The extension and relevant documentation is available on Marmalade Github Community repo at[highlight type=”two”]https://github.com/marmalade/openfeint[/highlight]

The extension supports following API
[list style=”arrow” color=”blue”]

  • User login/approval
  • Display of Main dashboard
  • Display of dashboard directly to specific page like Challenges, Acheivements, Leaderoards (iOS Only)
  • Sending of challenges (iOS Only)
  • Highscore submission to leaderboards
  • Acheivement unlock
  • iOS Push Notifications for Openfeint (iOS Only)
[/list]  

Some sample code snippets (Not all API is available on Android as OpenFeint doesn’t support them either)

 

Initialising OpenFeint


s3eNOFSettingVal *settings = (s3eNOFSettingVal*)s3eMalloc(sizeof(s3eNOFSettingVal) * 6);
// Fill settings
// UIOrientation value
strncpy(settings[0].m_varName,
"OpenFeintSettingDashboardOrientation",
S3E_NOPENFEINT_SETTINGS_STRING_MAX);
settings[0].m_intVal = s3eNOFUIInterfaceOrientationPortrait;
//
// Shortdisplay name
strncpy(settings[1].m_varName,
"OpenFeintSettingShortDisplayName",
S3E_NOPENFEINT_SETTINGS_STRING_MAX);
strncpy(settings[1].m_stringVal,
"FunkyRacers",
S3E_NOPENFEINT_STRING_MAX);
// Push Notification Setting
strncpy(settings[2].m_varName,
"OpenFeintSettingEnablePushNotifications",
S3E_NOPENFEINT_SETTINGS_STRING_MAX);
settings[2].m_intVal = 1; // TRUE/YES
//
// Sandbox Notification Mode
strncpy(settings[3].m_varName,
"OpenFeintSettingUseSandboxPushNotificationServer",
S3E_NOPENFEINT_SETTINGS_STRING_MAX);
settings[3].m_intVal = 1;
//
// Disable User generated content
strncpy(settings[4].m_varName,
"OpenFeintSettingDisableUserGeneratedContent",
S3E_NOPENFEINT_SETTINGS_STRING_MAX);
settings[4].m_intVal = 0;
//
// Disable ask for approval in debug mode
strncpy(settings[5].m_varName,
"OpenFeintSettingAlwaysAskForApprovalInDebug",
S3E_NOPENFEINT_SETTINGS_STRING_MAX);
settings[5].m_intVal = 0;
//
s3eNOFArray array;
array.m_count = 6;
array.m_items = settings;
s3eNOFinitializeWithProductKey("PRODUCT_KEY_HERE",
"APP_ID_HERE",
"RacingGame",
&array);
s3eFree(settings);

Launch Main Dashboard after login


// Open Main Dashboard
// s3eNOFlaunchDashboard();

Pull Information about all achievements for user


const unsigned int max_achievements = 20; // whatever we think is max we need
void* data = s3eMalloc(sizeof(s3eNOFAchievement) * max_achievements);
if (data == NULL) {
AppendMessageColour(RED, ("Couldn't allocate data"));
return false;
}
//
s3eNOFArray achArray;
achArray.m_items = data;
achArray.m_count = max_achievements;
s3eNOFachievements(&achArray);
// AppendMessage("Size of achievement %d and double %d",
// sizeof(s3eNOFAchievement),
// sizeof(double));
for (uint i=0; i < achArray.m_count && i < max_achievements; i++) {
// s3eNOFAchievement* ach = &((s3eNOFAchievement*)achArray.m_items[i]);
// AppendMessage("Ach at %p", &((s3eNOFAchievement*)achArray.m_items)[i]);
AppendMessage("Acheivement title %s", ((s3eNOFAchievement*)achArray.m_items)[i].title);

Update December 30, 2011

The extension now supports both Android and iOS. Android API is extremely limited by OpenFeint itself and thus most APIs in extension just return -1 and do nothing.

E3 2011 from a Mobile Game Development Perspective

By | Game Development, General | No Comments

 

I think from a mobile game development company’s perspective we can take a lot from E3 even though it is focused on high end console games. Top games were once again first person shooters. BattleField3 is highly awaited one and is also on top of my own list.  http://kotaku.com/5810589/these-are-your-favourite-games-of-e3-2011

Shooting games are somewhat tricky to develop on mobile platforms. The controls on touch screen are not that great for an immersive gameplay where character can move in 4-8 directions while camera can be movedaround and buttons pressed for shooting. Sweaty hands add to the trouble of controlling. Many a times player finds himself touching the screen out of the joystick area trying to move the character.

Probably the most innovative ideas that are relevant to mobile gaming can be taken from Nintendo. The new controller announced (not released) by Nintendo called Wii U, closely resembles the features that a typical smart phone would have. A touch screen, gyro/accelerometers and good processing power. It has hardware buttons which gives it advantage over most mainstream smartphones. Augmented reality based War Card games could be very nice. Not sure if they already exist but placing cards on table and viewing the characters animation fighting and taking/inflicting damage seems like a good take on War Card Games genre. The combination of real world with virtual world is always amusing.

Nintendo 3DS is pretty awesome device and just may be we can take something from it as well. We don’t have the hardware to really display 3D media without glasses but we could use some of methods like stereoscopic display with glasses that could be stolen from local 3D cinema. I already have a few with me and will surely experiment with that.

One of the natural advantage that Smartphones or handheld devices(with accelerometers) have is the ability of full 360 degree of movement which you can’t do with console. You always have to face your Television while playing games on consoles.

At the end of day Mobile Phones have their own unique advantages/disadvantages and games that are built with these differences in mind can give much better experience than games ported from other platform.

Who are Nerdiacs?

By | Game Development, General | One Comment

We are a small team of developers who share the idea of creating excellent high end games for Mobile Phones. We are registered entity in Singapore as Nerdiacs Pte Limited with subsidiary in Pakistan. Our game development is done mostly in Karachi, Pakistan and marketing/sales is done via Singapore.

We started with our first mobile game idea of a Labrynth look a like. We quickly discarded the idea as better games already existed in that genre. We then decided to do another 2D game and soon scrapped it as we could never get it to look great and we got plenty of physics issues. These 2 games seemed like failures but as a team we learned a lot from these experiences.

Previous failures didn’t put us down but made us think of doing a better job and differentiate ourselves from most games on mobile platforms. We decided to move into 3D project knowing very well that this could take 6 months to 1 year in development. It has taken us longer than that but our believe in this game has stayed alive and we never felt the need to scrap this game.

We have even more ambitious plans for our next game titles and we are quite confident of our skills as a team now. We are confident that we will be regarded as one of best game companies in mobile platforms in a short period of time.

Contact us at info@nerdiacs.com or use the form below

[enquiry_form id=”footercontact” emailto=”info@nerdiacs.com” thankyou=”thanks, we’ll be in touch soon!” /]