Productive Weekend Here is a dev update on quite the productive weekend. Gnomium is being developed in Unity, so it is primarily tested on Mac and PC during development because well, that's easy to do. The load times on iOS have always been a pain point, but pushed to the back-burner for too long as something to worry about later. Months ago, the first several builds I pushed to iOS were a single scene with just the grid for game play and touch based testing. I was surprised that took it took 20s to load on my iPhone 6+ and nearly double that on an iPad 4 when it loaded almost instantly on my PC. Since then the game has been split into multiple scenes and last weeks test on iOS surprised me. The initial title scene loaded almost instantly, and it's not just a few simple images and buttons, but many large overlapping textures that are used to create a parallax effect when the camera follows an animated gnome. I was pleased. However, when tapping the play button it took over 1 minute to load the game scene. Obviously unacceptable performance. Digging in I used the unity profiler to identify which tasks were taking so much time. Here are the changes that I made that allowed me to cut load times from 60s to 0.2s (over 100x faster)! - Created scene prefabs instead of scenes by taking all of the contents of a given scene and parenting them to an empty game object and prefabing the object. - Save each scene prefab into the resources folder so that it can be loaded asnyc as necessary. - Created a single scene containing an object with a script responsible for async loading scenes, removing current scene objects and instantiating new ones. - Wrote a script to reformat dictionary files containing 80K+ words into flat lists so that parsing logic could be simplified at load time. Also it turns out that using a StringReader with the ReadLine() method is about twice as fast as doing a string.split() on a large text file. - Spawned a background thread to parse dictionary files instead of the main thread. - Marked all sounds as 'load async' - Sprite-packing textures into 4K textures from 2K textures may have made an improvement but I'll need to test that. All in all, the game and it's levels just load almost instantly now on iOS which is a huge yay! I've also added some great animation to ore collection and some slow-mo effects to some of the juicier explosion. Added a lot of new code for player and game statistics so that you can track your progress and compare your skills to others. Dynamic game difficulty adjustment based on skill. I'm also working on a surprise that you'll all find out more about later. Last weeks demo at the Utah Indie Games Night was a great success with many people watching and playing the latest build on PC and iOS. Chatted with the famed Jeff Peters (Syfygames article) for an hour about the mobile game market. Great guy! Much to do this week. I'll continue to post progress here. Cheers!
Nice one & props for sharing. Feels so good to optimize. I do similar. Prefabs are the way to go. All my unity projects are a single empty scene. Everything is dynamically instantiated, only when needed. Great idea on reformatting the dictionary file. Best wishes, Gnomium looks awesome!
firstordergames, Thanks! Yes, I'm finding that using a variety scenes may only make sense for very large projects, or when taking certain designs into consideration. I was really floored with the difference in loading performance, even when loading scenes async, there is the problem of having 'unload' the current scene. Anyways, it can make for a good discussion. Swipey Rogue is looking fantastic by the way, enjoying the videos, keep 'em coming.
Random side effects. Some game play footage I captured the other night on my phone when playing around in what I call the "Gnomium Sandbox" where I test new and existing features. This inadvertent zero-gravity ore made for a kind of zen-like experience while playing. Subscribe to the TouchArcade YouTube channel Enjoy!
Updated Links Here are a list of updated links to resources containing news about Gnomium. The initial post has been updated also to contain these links. Progress.. progress. Official Facebook page: http://facebook.com/Gnomium Twitter Accounts: https://twitter.com/Retrodigio https://twitter.com/BicPentameter YouTube Channel: https://www.youtube.com/channel/UCTnnQyik2CjiG3J7KOMQXkw TouchArcade Article: http://toucharcade.com/2015/05/19/gnomium-trailer/ PocketGamer Article: http://www.pocketgamer.co.uk/r/Android/Gnomium/news.asp?c=65459
Official Facebook page LIKED Twitter Accounts FOLLOWING YouTube Channel SUBSCRIBED TouchArcade Article READ PocketGamer Article ignored Yeah, I'm so looking forward to this game! Can't wait to put my hands on Beta.. Bring it!
Thanks macplash, you rock! Really digging the avatar too. Dev update: - Added new title scene and transition animations between game pages to make for a quick and smooth gaming experience. - Added the core code for in-game tweaks and boosts. These are means to sink your hard-earned gold into some permanent and temporary improvements to in-game probabilities for goodness. - Made the gem-find probability curve exponential rather than a linear sequence. This means that you have a probability of finding higher level gems when matching gold coins or other gems. - Improved mushroom logic. - Warmed up some cream of mushroom soup. Have a great weekend.
IndieCade 2015 Gnomium has been submitted to IndieCade 2015! http://indiecade.com/ I was able to submit an entry within the final hour before registration closed. There is a high probability that Gnomium will be released on iOS before we even hear the jury results from the IndieCade committee. It will be great to attend IndieXchange in October. BTW, for other interested Indies, here is a list of other relevant gaming events, conventions etc.. in 2015: IndieCade East 2015 Different Games Arcade 2015 Come Out & Play 2015 ALT.CTRL.GDC 2015 Vector 2015 PAX 2015 PAX East 2015 GothCon 2015 Intercon 2015 Gary Con 2015 GameCity 2014 South by Southwest 2015 Gen Con 2015 MAGFest Athens Plaython 2015 w00t 2015 Screenshake 2015 Games for Change 2015 DiGRA 2015 Meaningful Play 2015 Serious Games Showcase Wild Rumpus GDC 2015 Mild Rumpus GDC 2015 Global Game Jam 2015 Freeplay 2015 (Melbourne) Play in the Dark @ Shine 2015 The State of Play 2015 w00t: Play & Games Festival 2015 Lyst Summit 2015 Northern Lights 2015 Tribeca Film Festival 2015 Games Showcase A MAZE 2015 ETC/CMU Student Showcase 2015 IGF 2015 GDC 2015 PlayPublik 2015 NYU Student Showcase 2015 USC MFA Show 2015 UCLA DMA MFA Show 2015 UCLA DMA Undergraduate Show 2015 Northeastern University Student Showcase 2015 FDG 2015 cya.
Dev Update Another productive weekend, here is a rundown: 1) Added animations for end-game dialog. The gnome jumps out of the cart, points are converted to gold coins that fill the mine cart (often to overflowing if you've done well). The cart dumps the coins which are then added to the player's overall gold collection. 2) Game stats are displayed in the end-game dialog. Stats like score, time, amounts of ores, coins and gems collected, most valuable word-group, highest score and average score. Will probably add ranking, achievements or others. Actually, I'm storing a ton of game stats, it really just depends on what to show without there begin to much clutter. Sharing buttons need to be added to this dialog. 3) (For Gnomium PE, which I'll discuss in future posts) Added the Tweaks screen. Think of something that looks and functions close to the character selection screen in Crossy Road. A horizontally scrolling list of in-game Tweaks you upgrade or boosts you buy for certain game stats like chances to get 2x, 3x or 4x multiplier tiles, explosive tiles, different colored mushrooms, buckets, chisels, pickaxes and many others. You can spend in-game gold on permanently increasing probabilities or value by "Leveling Up" the stat, or buy a temporary boost to 2x-max-level-value for any stat for the next game. 4) Gems are now categorized and rewarded in tiers rather than linearly. Prior to this players could obtain gems in a linearly progressive order by matching 3s in the following order copper coin->silver coin->gold coin->garnet->peridot->amethyst->topaz->pearl->aquamarine->opal->tanzanite->sapphire->ruby->emerald->diamond. Gems are now divided into 3 tiers of 4 gems each. Matching 3 gold will give you a random tier 1 gem. Matching any 3 of the same gem will give you a random gem from the next tier level. This introduces variety, anticipation and luck and also eliminates the near impossibility of reaching higher level gems. 5) Some very cool ore-collecting animations that you'll just have to wait and see. 6) Transitions and logic between Title, Game, End-game, Tweaks and Store screens. 5) Spent a considerable amount of time tracking down a random bug in the tweening library I'm using, still need to slay it. This week: - Serialization (save game/character) - Finish tweaks dialog and core code. - Integrate with Ads, Analytics, Leaderboards and other app store APIs. - More sfx. - More gnomish animations. - Balance gameplay. - Slay bugs. Cheers.
I've been working on the inventory scrolling system over the past few nights. It's nice to have something that just looks and feels snappy. What do you think?
Thanks vectorarchitekt! Celebrated this morning also because at long last I tracked down a random bug that has been plaguing me for months! Amazing how happy bug-fixing can make you.
A Few New Themes and a Dev Update Been receiving some more artwork and color schemes lately from Roland. He does an awesome job. These are a few new themes that will be available in the Pocket Edition of Gnomium that will be available for beta testing soon. I'll announce more about this 'special version' later, but it's a precursor to the official Gnomium release. Really been balancing game play lately with what are called 'stat tweaks' in Gnomium PE. The loop is simple. Play the game to earn gold, spend gold on upgrading (tweaking) stats and improving your chances for in game awesomeness and earn more gold. See how far you can get in the game by how many chests you an unlock in one session. Working on a tutorial, animations, SFX and improved performance on mobile. App icons to come soon!
Infinite Sky Parallax Subscribe to the TouchArcade YouTube channel Worked on this script last night for generating the illusion of an infinitely scrolling sky with parallax for use in Gnomium PE. This is seriously fun to play with. If anyone wants to know how this is done in Unity, message me or I can post details here.
Progress It's been too long between updates, but I'll be announcing something special soon! Dev Progress: Mostly focusing on game balance. There is a lot going on in Gnomium, despite the somewhat simple look to the grid, there are forces underneath that must be tamed, a thousand dials and switches that must be fine-tuned to produce that game experience that is just right. One of the most intriguing aspects of game play is the balance of decision and consequence. The default game mode implements a dynamic timer that resets every time the player breaks a word-group or combines a set of coins or gems. This 15 seconds timer adds back-pressure to think and act quickly. Gnomium has two core letter tile types: basic and stone. Basic tiles (the blue ones) easily slide and can be moved around the grid with ease, they wrap at the edges and can be tapped and swapped with any other basic tile. These tiles combine into your basic word-groups (blue) which can also become copper, silver or gold if the combination of letters is valuable enough. These types of word-groups can destroyed with a simple tap. Stone tiles are less flexible in that they can be moved, but do not wrap on the edges and thus behave more like items. When one or more stone tiles become part of a word-group the word-group itself become stone and cannot be destroyed by tapping until it reaches a copper, silver or gold level. Given these two tile types, the fewer stone letter tiles in the grid, the better. Here is where decision and consequence come into play. Basic word-groups (the blue ones that don't yield any coins or ore) can be destroyed by the user at any time, however, doing so will slightly increase the probability of stone tiles coming into the grid. These increases can be reversed by breaking copper, silver and gold word-groups, but at a much smaller rate. Why not just avoid breaking the blue basic word-groups altogether? Sure, that is the safest strategy, but also the least effective in reaching your goal with a great time. Each Gnomium game is about reaching a specific goal with the shortest time possible. The leader board rankings are 'fasted-first', but short times also ensure high rewards. Since your goal will most likely involve getting gems of one type or another, and since gems are created by combining gold coins, and since gold coins come from silver which come from copper, and since copper and silver coins have a limited lifetime in the grid, it behooveth the player to combine them as quickly as possible This often involves the decision to break basic word-groups in order to combine coins quickly. So this takes balance and a skill. Gnomium is very much a skill based game with heavy doses of luck here and there, but this balance of mechanics keeps the player on his toes and provides for a wide variety of play styles. More to come.. exciting stuff ahead. Please feel free to ask questions.