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.
0 comments by Gamieon on Feb 17th, 2012
Couple things off the bat that I've found:
Here's what I tell myself when I want to debug and profile my apps:
These steps got me going. I'm open to comments on other peoples' anedcotes or important things I'm probably leaving out.
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.
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:
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
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:
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.
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:
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!
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:
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.
0 comments by Gamieon on Dec 6th, 2011
I got a linked from LinkedIn this morning:
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.
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?
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:
...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:
I'd write more, but I've got another press release to write and another new feature in Tiltz to sneak in.
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:
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:
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!