Gamieon

Christopher joined Mar 14, 2009

Gamieon is a privately owned entertainment software development company located in Tampa, Florida. Since October of 2004, we have aimed to provide quality video game software which emphasizes both intellectual and action-driven challenge to the gaming community. Gamieon depends on the talent of individuals working as a team to develop video games and video game engines with a focus on exceptional game play and surrealism.

Blog RSS Feed Report abuse Checklist for debugging and profiling Android apps from Unity

0 comments by Gamieon on Feb 17th, 2012

Couple things off the bat that I've found:

  • Your device may not appear in the Active Profiler dropdown in the Unity Profiler after you launch Unity. Don't worry about that...until after you Build and Run and it still doesn't show. Then worry.
  • When you have Development Build checked, and you do Build and Run, and then try to attach the profiler, Unity may freeze up. So, trying to profile or debug your Android app in Unity could freeze Unity 3.4.2f3 until you kill it with task manager. (Find those keywords, Google!)

Here's what I tell myself when I want to debug and profile my apps:

  1. First, make sure your Android is on your home network via Wi-Fi.
  2. Ping your Android device from the machine you're using Unity from. If you're not getting a response...then either your wireless setup is incorrect or there's a firewall in the way. I've never had firewall issues here. An improper setup can cause Unity to freeze up if you try to profile while the app is running.
  3. Go to File => Build Settings
  4. Check Development Build and Autoconnect Profiler. If necessary, check Script Debugging.
  5. If you need to see everything going on; like all the Debug.Logs and render statistics, go to Player Settings and check Enable 'logcat' profiler. (Later on I'll open a DOS window and run "adb logcat")
  6. Click Build and Run.

These steps got me going. I'm open to comments on other peoples' anedcotes or important things I'm probably leaving out.

 Check out my homepage and news feeds
   
And my projects!
     

Report abuse What to read before releasing your first Android app

0 comments by Gamieon on Feb 11th, 2012

Here's a list of places that I visited or will be visiting before releasing my first Android game:

Learn how to actually put an app on the Android market:
Developer.android.com

Learn the basics of marketing and what to expect:
Androidappmarketingtips.com
Marketandroidapps.com
Articles that were particularly useful to me on the above sites:
Androidappmarketingtips.com 
Marketandroidapps.com

Some review sites:
Androidappreviewsource.com
Pcworld.com
Bestandroidappsreview.com
Android.appstorm.net
Theandroidappreviewer.com
Dailyappshow.com
Androidappsreview.com
Pcmag.com

Really, anyone can find these in five minutes with Google...but this list might come in handy for a developer or two someday.

Once small piece of advice: If this is your first app, and you wrote it with very little or no help, then don't send your game to -every- reviewer on or before the first day. This way, if your release comes out of the gate with poor ratings and/or unforeseen bugs, then you can fix it before more people see it.

Check out my homepage and news feeds
   
And my projects!
     

Report abuse Tips for first time Unity Android game developers

0 comments by Gamieon on Jan 28th, 2012

When I started to work on my first Unity Android game two weeks ago, I had a lot of questions that I didn't find the answers for as easily as I would have liked. Hopefully this blog will help some people get started.

The tools you need:

Additional stuff I chose to involve in my projects:

 Additional stuff I will probably use in my projects in the future:


The general approach:

  • Create your core app with no plug-ins or extensions
  • Test Test Test 
  • Get it to deploy onto your Android device
  • Test Test Test 
  • Add plug-ins and libraries one at a time
  • Test Test Test
  • Get betas out to testers
  • Test Test Test
  • Deploy to the Android Market


Step 1: Create your core app
If this is your first time developing a Unity Android app, get your game as matured as possible without integrating third party plug-ins or libraries that result in .jar files or other things getting dropped into your plug-ins folder which only work on the Android device you're testing on. You may see "Android Manifest" cross your path as you visit websites learning how to do those integrations. Bookmark them all in your browser, but don't mess with your manifest just yet.

As you develop, keep these important things in mind:

- Don't assume Screen.width and Screen.height will be the usable screen area. Hyperspace Pinball, for instance, has a 3D playfield. It looks fine on an iPhone and iPad, but the sides get clipped off on an HTC Thunderbolt. So, I had to write a script to change the camera rectangle to support a minimum aspect ratio of 2:3. Tiltz for Android has persistent ads at the time of this writing, so I had to make changes to make it so the camera pixelRect and OnGUI always stay away from the banner area. I also had to intercept OnGUI and use GUI.DrawTexture with a plain black texture to cover up the unused render area so you don't get graphical glyphs appearing in places the camera doesn't render at.

- Minimize the number of OnGUI calls. Don't even call it if it's not doing anything...because even if they do absolutely nothing, they still cost you some performance.

- If you have Unity Full, use the profiler early and often! Don't get tricked into thinking your app is fast because it is on your powerhouse development computer.

- Every time you deploy to the phone, look at the build size! I try to keep mine under 20 mb since I write simple yet graphically detailed games. I may have lost thousands of downloads of my iOS apps because I wasn't paying attention to that.

- Don't rely on touch phases firing correctly nor on touch values like touchDelta. Please read this post for details:  Answers.unity3d.com . I have first-hand experience with the same issue the author wrote about. 

- Android has its own accelerometer axes. If you already wrote an iOS game, and you do a straight up conversion, you will find everything falling to the left side of your screen. Make sure you account for this.

- Try to use the GUILayout utility functions instead of using the GUI functions for rendering configuration menus. This goes back to what I said about controlling the aspect ratio. I had to rewrite all of my menus because my old design assumed usage of the full screen dimensions (and that code was otherwise not thought out very well).

- If you are using Unity's GUI/GUILayout controls for configuration menus, view the post at Answers.unity3d.com that discusses how to make the controls sensitive enough for phones to detect user interaction.

- Androids have standard back buttons. Use them in your menus. More info at Answers.unity3d.com

Step 2: Build and deploy your app onto your Android device if you haven't already.
Here are screenshots of my Android player settings SO FAR in the development process:

     

     

- The splash screen is Center (only scale down). My splash screen image is twice as tall as it is wide...it's the only way I could get it to look good. (Note: It was reported to me that it looks terrible in a high resolution device, I'm going to have it scale to fit in the future)

- I use OpenGL ES 1.x. My games don't need anything fancier; and testing under 2.0 caused my device to crash and reboot.

- I didn't mess with the publisher settings.

- I didn't mess with any Android-Manifest.xml files. You don't need to worry about that right now.You need to make sure it will run on your device before you go further.

Step 3: Add plug-ins and libraries one at a time
Being new to Android development, I'm still trying to understand exactly how Android-Manifest.xml works and the minimal text it requires to be functional in an app. What I figured out so far is that it tells the device the requirements of the app (does it need internet access? accelerometer support?), and what libraries to load it with. Some third-party plug-ins require this, others do not. For instance, HeyZap didn't require me to make any changes (that I know of yet) to Android-Manifest.xml . The "Instant Ads Android Plugin", on the other hand, did. I also found that Unity generates one, and you can find it in the temp folder in your project. Here's what worked for me:

- The first library that requires customizations to Android-Manifest.xml usually comes with its own Android-Manifest.xml. After importing the library and xml into Unity (the xml always goes in Assets\Plugins\Android), I opened the xml and made sure the package name and version were correct at the top of the main element.

- For every subsequent library, I would back up my existing Android-Manifest.xml, then import the new one, then merge the two together. Most of the work was identifying which elements to add into the main one. If one had a higher version requirement of something than the other as specified in some XML element, then I'd retain the highest version requirement.

- I made sure to do general testing for all existing libraries in between each library addition. If something in one of them broke, then I knew what changes caused it. I won't go into the exact details of how I integrated the libraries I did; there's too much to write and I'm still new at things. I may get around to writing a blog about that, though.

Step 4: Get betas out to other testers
Once your app passes your own developer testing, you need to get other people to test it. Just today I learned of Zubhium.com which acts as a hub for test distributions. This is also the time to start looking at Android forums for people willing to test your apps.

I can tell you that I did not have to do anything special with the build settings to make this work; a friend of mine got the app from Zubhium after I posted it without any issues.

 
Step 5:  Deploy to the Android Market
I haven't gotten this far yet, but when I do, I'll probably write another blog.

Conclusion 
Well, that's all I have for now. Check out these bookmarks that helped me gather information:

Market.android.com
Developer.android.com
Developer.android.com
Support.google.com
Support.google.com
Weston-fl.com
Unity3d.com
Unity3d.com
Drupal.technicat.com
Forum.unity3d.com
Zubhium.com

Check out my homepage and news feeds
   
And my projects!
     

Report abuse Building my Unity 3.4 iOS app on Android (Part 2)

0 comments by Gamieon on Jan 20th, 2012

So after playing Hyperspace Pinball on my HTC Thunderbolt for a while, I've come up with a short list of things that need to be done before I even think of publishing it (it's already out for iOS) on an Android phone:

  • Trying to go to the home screen roughly thirty seconds after Unity launches the game (right after building) can sometimes result in the phone "dying" and requiring the battery to be remounted. Not a very friendly testing environment. 
  • After doing at least one Android build / deployment, I can't seem to close Unity without using the task manager to kill adb.exe.
  • Window aspect ratio needs to be controlled. Some of the scene is being clipped on the sides. Maybe
    Gamedesigntheory.blogspot.com can help me.
  • Need to set up the Android HeyZap libraries (should be a trivial task)
  • My games were all designed to retain local high scores locally, and sync them with a remote high score server (like Game Center). It may be wise to not rush into this, and do a first release without global rankings.
  • Unpredictable speed issues. I played the first three rounds of my game over and over again...sometimes it was smooth, and other times it was terribly choppy. On some occasions it simply froze up entirely. I spent many, many hours optimizing my game to work smoothly on an iPhone 3GS. If an HTC Thunderbolt can't handle it, and this is a preview of the things to come; then I chose the wrong platform for this particular game. It's really nothing more than some geometric primitives bouncing around the screen with particle effects...so why the slowness? 

Despite all this...with the profiling tools that came with Unity, and a very active Unity community, I see no reason for this Android port to fail.


Update 1: I found 
Mindthecube.com today and I discovered I'm not using OnGUI optimally. After going through all my scenes and reducing the number of different scripts calling OnGUI to one, things seem to be smoother. Disabling the logcat profiler from the player settings helped too; but there is still choppiness during multiball, so the optimizations must continue.

Update 2: I went into the Player settings and set the Graphics Level to OpenGL ES 1.x. That seems to have made all the crashes go away so far...I wanted it to be 1.x in the first place.

Update 3: The link for fixing the window aspect ratio seems to have worked; and even revealed a bug where I'm actually clipping off the right side of the pinball set but never noticed it before! However, there's a new issue now: The aspect change caused the top and bottom regions to be a "wild west of pixels" with artifacting and other weird issues. I may have to cover them up with GUI.DrawTexture.


Check out my homepage and news feeds
   

And my projects!

     

Report abuse Building my Unity 3.4 iOS app on Android for the first time

0 comments by Gamieon on Jan 14th, 2012

Since I bought the Unity license to do so, I decided to see what happens if I build and deploy Hyperspace Pinball, which has been out on the App Store for a while, onto my HTC Thunderbolt. I wanted to do so without changing anything in the Unity project except for target platform and OpenGL version (1.x) just to see what would happen.

First, I found some great tutorials to get me started:

YouTube Tutorial: Getting Started with Unity3D for Android by Dr. Brian G Burton (Part 1 of 2)
Youtube.com

Tutorial: Getting started in the market
Unity3d.com


After doing some watching and reading, I did the following in order:

  1. Installed HTC Sync to make sure my device was talking to my computer without problems. I never used it before because I really just use my phone for calls, web surfing and development.
  2. Changed my phone to be in "HTC Sync" mode when I plug it in
  3. Made sure I could get it to sync by syncing some music.
  4. Installed Java JDK from Oracle.com
  5. Installed Android SDK  http://developer.android.com/sdk/index.html
  6. Fired up Unity, opened Hyperspace Pinball, set target platform to Android, forced OpenGL 1.x, and pressed the magic build button.
  7. Kept getting build errors; something about a value not in an expected range (-1).
  8. Uninstalled HTC sync. Error gone.
  9. New error: Building DEX Failed! java.lang.IllegalArgumentException: already added: Lcom/heyzap/sdk/ClickableToast$1;
  10. Fixed the error by deleting all my HeyZap jar files from my Plugins/Android folder in my Unity project. I'm not ready to integrate HeyZap for Android yet anyway; I have a ton of other things to learn and do first.
  11. Build succeeded, and ran on my phone!

Two problems I saw in the game off the bat:

1. Game play was actually a bit sluggish!!! This is intolerable. I must find out why.
2. Hyperspace Pinball has two of every font; one is regular size and one is half size. I decide which fonts to use based on the device's resolution (specifically, a width of 320 uses the half-size ones, the rest use the default size. It's ugly, but I have no better solution yet). Anyway, the fonts are too big on my Thunderbolt, so I need to figure out what to do about that.

Will post more blogs as I learn how to publish apps and integrate banner ads.

Please follow my development news feed and check out all my projects!

           

Report abuse Ben Kuchera - "Marketing for Indie Games" Video

1 comment by Gamieon on Dec 11th, 2011

Thanks go to Strager for giving me a link to this video featuring Ben Kuchera with marketing tips for Indies:

Runjumpdev.com

It's an excellent video piece split up into a speaking session and a Q&A session. Very useful information, and I wish I were there for it! If I'm lucky, maybe Ben will review my two App Store games. In the meantime, I need to get started on something Ben suggested: Making a "Media Kit" section on my homepage so reviewers can easily get collective links to all the screenshots, stories and videos I've done for my games in summary view.

Report abuse WebAppRater blog on blogging

0 comments by Gamieon on Dec 6th, 2011

I got a linked from LinkedIn this morning:

Webapprater.com

The link delivers what it implies; thirty tips for those who want to be the most effective bloggers possible. Below the article is a number of other links with blogging tips as well. I find this to be a welcome addition to the links in my previous blogs because it raises some things I had never thought about before with regards to blogging. Even if you're not a full time blogger trying to earn ad revenue from your blogs, the link is still very helpful if you're just trying to gain publicity for your Indie games.

Report abuse Thanksgiving for the Indie Developer

0 comments by Gamieon on Nov 25th, 2011

It's the day after Thanksgiving, but not too late to reflect what I'm thankful for as a one-man-shop Indie developer.

Contract Help - I'm pretty much a jack-of-all-trades at Gamieon, but I contract help on a need-to basis. Jeff Gordon modeled the pinball field for Hyperspace Pinball. He did in hours what would have taken me at least a week. I'm thankful he was willing to help out a small minnow in the ocean of game developers.

My Dominoze game has never gotten past beta, but Eric Barth, Jeff Gordon, Jordan Pelovitz, Yisroel Goldstein, Helder Gomes, Russ McMackin, Bryan Taylor, and Mick Rippon were an amazing help. I can't thank them enough.

If you have a team of good developers who care about what everyone is doing, cherish it! Show your appreciation for each other from time to time. If you're all friends in real life, get pizza this Friday!

 
Beta Testers - I'm thankful for everyone who beta tested my games. Seth Miko, Adam McDonald and "Dark_Link" were extraordinarily helpful, and found some real showstopping bugs that would have ruined the release. Honorable mention also go to "User201" for the great feedback from iBetaTest. 

Google - If I'm stuck with a programming issue, or just want to find information, I know where to go.

Blogs and Articles - I learned a lot just by reading other developers' anecdotes, stories, tips, and instructions. There's just too many to cite (though you can see them in some of my previous blogs). I'm thankful for the free flow sharing of knowledge I've seen, and I hope my blogs will perpetuate that in their own way.

Dedicated Indie Websites - Sites like IndieDB.com and pixelprospector.com make it easy to find fellow indies and to see what's going on out there. I'm thankful to be part of a community of game developers.

Game Development Tool Developers - As much fun as it was writing my own game engine instead of a game, I'm finally over that. I'm glad I chose to continue game development using the Unity engine to power my apps. What used to take months can now be accomplished in days, and I just don't have that kind of free time anymore.

I'm thankful to be in an era where game developers can focus on writing games instead of the deep internals that power them. Instead of spending days trying to add a new feature to my video engine, I can let Unity developers worry about that. Want to write your game for the XBox and the PC? XNA is there for you. Oh, and you can use both for free (though conditions apply)! This is not to say one should be totally ignorant of the internal workings of game engines. One must be cognizant of writing good, optimal code on top of the engine, and understand the features and limitations of the underlying engine as they pertain to the project at hand.

Canned Content - If you need a generic bit of content for your game, sites like pixeljoint.com and turbosquid.com have resources to help you, even on a $0 budget. I'm thankful for all the free and cheap content I got from those sites in just a few clicks.


Those are just some of the things I'm thankful for. Go ahead and post some feedback; what did I overlook to be thankful for?

Report abuse Tiltz Redemption (and more lessons learned!)

0 comments by Gamieon on Nov 7th, 2011

A year ago I released my first iPhone game: Tiltz. You may think "But you just released it!" What I just released is the remake. Following my past blogs, you'll see I made a lot of mistakes with the original Tiltz. It got so bad, I pulled it off the App Store. To list just a few things I improved on:

  • Shrunk the app size from 50 to 15 mb using optimizations in Unity Full
  • Made it run faster by properly using static meshes and carefully optimizing texture and mesh content
  • Making the game brighter instead of dark and shadowy
  • Adding more levels with more diverse game play
  • Preparing a press release
  • Splitting the full and free versions
  • Social networking integration with HeyZap

...and all the hard work paid off. Tiltz Lite is rapidly gaining on Tiltz in terms of ad revenue (it skyrocketed out of the gate in comparison), and Tiltz Deluxe (the 99 cent version) is well ahead in sales from the original Tiltz in its first month.



As nice as all that sounds, Tiltz is still not at its pinnacle of success. Not by a mile. Which is why I'm adding some big new features in the 1.2 update; but also making more changes as I've learned more lessons:

  1. Don't confuse casual gaming for gaming without difficulty.  The problem with Tiltz is you can't lose. It's the main customer complaint. I'm addressing it in the next update by making it so players can lose if they drop too many marbles.
     
  2. Use unusual level designs that deviate from typical game play sparingly. This one I already knew, but was affirmed by one of my testers. They didn't care for the upside-down level. I suspected it was so different that the novelty would wear off fast, so I kept a low marble count just to be safe.
     
  3. Reviewer and user feedback are both valuable.  Tiltz 1.2 has many changes in it. How many of them were NOT from user feedback? Just one. And sure enough, I better understand the criticisms now that I see how they wanted it to be more like!
     
  4. Minimize the amount of time between the "Game Over" announcement and restarting the game.  The player knows they lost. You don't need to rub it in. If they want to play again, don't stop them! Don't even make them wait!
     
  5. In pre-viral marketing stages, the market only responds when you ask it to.  I have download graphs that prove, in my case, the nearly sole reason sales ever go up is that I made an announcement or gave away free copies.
     
  6. When you think "I'm too busy to write an update", you should instead think  "I'm not managing my time properly".  I haven't done any kind of press release since the Tiltz release because I've been busy working on pinball. Potential Tiltz sales have suffered for that. This is the price of doing close to everything by oneself. As they say in Habitat for Humanity: Don't work hard...work smart. I need to get it together!
     
  7. When you think "There's nothing to write about," you should instead think "Why don't I have anything to write about!?!?"

I'd write more, but I've got another press release to write and another new feature in Tiltz to sneak in.
 

Report abuse Marketing Graph Beta

0 comments by Gamieon on Oct 5th, 2011

In order to better understand what I'm doing with respect to posting on social media outlets, and to ensure I don't double post anywhere, I decided to start making a graph of all the places I manually post to, and places where I could aggregate them. Using the Dia graphing utility from Freshmeat.net , I threw this together:

Marketing Graph

All logos are property of their respective owners!

The top row represents all the social mediums I manually post on. AppGiveaway is a way to draw attention to your game by giving out free copies. HeyZap is a mobile social gaming network that basically provides free continual advertising when people "Check In" from my games. GamesPress is -the- place to post all official news announcements. IndieDB is -the- place for Indie gaming news announcements, downloads and blogging. All the items to the right are forums I post announcements on. I've also noted RSS feeds where applicable.

Below the first row are all the social networks that further aggregation takes place from. Note Twitter and Facebook on the left; those are special because I also manually post on those and maintain pages on them as well. In the third row we have all other social networks: Digg, Tumblr,Reddit, Google Buzz, StumbleUpon, and MySpace. 

The arrows represent the fact that I can repost news from one place to another. For example, when I posted my game on AppGiveaway, it tweeted the post to all its listeners. IndieDB has many of these. I have personally not used any of them because, well, I just never did my homework. I'll need to start using those sites.

This graph is quite incomplete, and therefore a beta. Note some glaring omissions:

  • I didn't include my own website. This is in a state of flux because I'm exploring Joomla news aggregator add-ons.
  • I didn't include LinkedIn. I'm still learning how that fits into marketing.
  • No blogs! I have a blog on IndieDB, but I need to find out if that's the best place to host a blog. Should I also make an account on an official blogging site? Should I link that into my company homepage?

 
Anyway, that's what I have so far. I'll be updating the graph and mulling things over the coming days. If you have any helpful suggestions, please comment!