Friday, January 31, 2014

Dev Blog 16

A quick note: The last 15 dev blogs were written before this blogspot domain was created, which is why they are back dated. Starting today all blog post titles won't include the date of publish.

Met with my professor Casper Harteveld today to go over progress, get advice, and discuss Chromacore's design. Casper suggested I publish my daily developer's logs that I had already been writing, and thus this blog was born!

In addition I re-worked the file browser so it is automatically full-screened on start; users can no longer resize the window themselves, but can still drag it around.

The issue with the mp3 file loading indefinitely on Android still hasn't been fixed, working on it!

Update:
So after sprinkling in some debugging GUIText objects, I discovered that on Android the mp3 file was downloaded but never reached PlayAudioFile() to actually play. Just pushed some code that could fix this issue, waiting to see results.

Dev Blog 15 - 01/30/2014

Today I remotely tested iOS with the communal iMac - the quality of Unity Remote is quite poor, but enough to do basic functionality testing. During this testing I realized there was no way touch screen users without joysticks could pause the game, so I spent some time implementing swipe functionality so users can swipe to pause.

I also worked on file browser resizing, unsuccessfully. I was able to get it to resize to the full screen, but only after the user attempted resizing it themselves. The UniFileBrowser documentation wasn't particularly helpful in this regard.

Dev Blog 14 - 01/29/2014

Fixed a pause bug where Teli was dying immediately after the game was resumed. Added “Quit to Menu” option to the pause screen. The menu navigation text was too small, doubled text size (except for file browser, this will be refactored so it fits to the entire screen size - not yet done). Added white background to tutorial billboards.
Rather than depend on borrowing other people’s Apple laptops to test for and push to the iOS store, I will start using the fraternities communal iMac, which is free almost all the time.

Dev Blog 13 - 01/28/2014

Touch screen support works! Added some additional touch screen support code to Movement_Gravity.js. Also disabled “Show Volumes” feature for the file browser for mobile platforms, the error stopped showing up and it appears as though navigation is unaffected (since mobile devices don’t have multiple drives).

Now working on pushing Chromacore to Apple App Store from a brother’s Mac laptop (which appears to be wildly complicated), so I can test on iOS devices.

Dev Blog 12 - 01/27/2014

The landscape rotation is fixed! A third issue was discovered today - the first is the input across platforms changes, but some inputs don’t appear to map to anything (ex: on the NVIDIA Shield, jump is Y but punch isn’t mapped to anything). This issue was fixed later the same day, and I also added code to modify the tutorial text based on the platform. I created tickets for all of these issues on GitHub to track progress.

Later today also implemented touch screen support. Pushed to Google Play, waiting to see results. Not yet published as of 12:31am.

Dev Blog 11 - 01/26/2014


Attempted a fix to prevent the landscape rotation on launch, waiting for the newest update to appear in the Google Play store. Not sure about the file browser problem - it shouldn’t be an incompatibility with Android, since UniFileBrowser claims to support it. The error message I get suggests it’s related to “Show Volumes”, which I could potentially only enable for PC if it’s a problem. Not sure if that would make navigation on mobile platforms more difficult.

Dev Blog 10 - 01/24/2014

In order to do functional testing, today I purchased Apple and Google developer licenses. I published the latest build of Chromacore to the Google Play store as an Alpha build (so only users I specify can see it). I tested the alpha build on my brother Colin’s NVIDIA Shield - the game launches sideways, and the file browser does not seem to function properly on Android. Safe to say the functionality test for this device failed, will try to get it working and try more devices.

Dev Blog 9 - 01/23/2014

Improved smoothness of color transition a bit, still needs work.

Discovered that the PC and Android solution for playing audio files at runtime also works for iOS without any changes. This truly surprised me; based on my research I was expecting to have to implement custom solutions for all 3 platforms. Because of this, I am a little skeptical and will be running functionality tests using Android and iOS devices borrowed from my fraternity brothers to confirm that this solution works across all 3 platforms.


Last but not least, the runtime file browser was only showing the F: drive that the project was in. Could not see C: D: or E: drives. After consulting the UniFileBrowser docs I found that the “Show Volumes” checkbox will show all drives on the device.

Dev Blog 8 - 01/22/2014


  • Discovered milestones and issues tracker on GitHub, began using them to stay better organized. Keeping track of bugs and milestone goals will help not only myself but the other collaborators stay on track.
  • Added a README file to Chromacore’s GItHub page to make it look more professional.
  • Successfully implemented import of MP3 at runtime for Android, piggybacking off of the PC solution.
  • Ronny implemented a basic audio detection algorithm in Java, and even got a visualizer working based on the collected data (just for fun!).
  • Very happy with progress thus far!

Dev Blog 7 - 01/21/2014 @ 11:15PM

Discovered a bug later this same day: the file path string for the file browser system can’t exceed 78 characters for some reason. As a temporary solution I implemented some basic error messaging that warns the user in-game when file names are too long (and then proceeds to not load anything, waiting for the user to shorten the name). Will try to discover source of bug and see if I can extend limit, but this is low priority.

Dev Blog 6 - 01/21/2014

Today I worked on a smoother color transition between backgrounds - tried making the edges of both color and BW background softer, which oddly enough ended up making the transition more jagged. Also tried a “bandaid” approach, where I’d stick a super low opacity sprite at each transition edge, this made the transition a little smoother.

Once I’m happy with the color transition, Milestone 2 will be complete roughly 1 week early. With this extra time I will focus on Android and iOS implementations for 2nd game mode, perhaps start implementing additional stock levels.

Dev Blog 5 - 01/20/2014

Decided to update Unity to 4.3.3 since collaborators (Ronny & Sean) freshly downloaded this latest version. Disaster. MonoDevelop wouldn’t launch, the latest version of our tk2d plugin wasn’t working properly. Spent part of the day researching, many others had the same specific problem of MonoDevelop not launching. Tried some suggested remedies, nothing worked. Reverted to Unity 4.3.2, everything working properly now. Unrelated: Decided to dedicate more time to the implementation of the 2nd game mode, updated milestone timeline accordingly. Because Chromacore has a lot of potential to be a really good game, and also because the 2nd gameplay mode is proving to be a challenge, I might push back overall release target date by up to 1 month and devote less time to Enigmatic. I’m also considering doing this because I haven’t come up with many new ideas or features for Enigmatic; all I’m really planning on doing is creating more tons more levels and adding varying sprites to give them variety. Devoting less time to Enigmatic seems totally fine, but we’ll see how progress goes with Chromacore.

Dev Blog 4 - 01/18/2014

Had Skype call with Sean and Ronny to discuss plan for writing an Audio Listener algorithm to detect important data for Note generation. This week Ronny and Sean will be collaboratively working on a script to collect data from Audio Clips. This data, such as the song’s RMS, decibel, and pitch values, will be used to automatically place Notes in a level. The rest of the level will then be generated based on the placement of Notes.

Dev Blog 3 - 01/17/2014

Successfully implemented an OGG solution for PC, working on applying the same type of solution to Android. Haven’t heard from FMod. Ronny, Sean & I are doing preliminary research and discussion on implementing a solution to detect BPM and frequency of the MP3/OGG files. The method AudioListener.GetSpectrumData() looks promising. I will likely have Sean and Ronny work on implementing that, depending on how soon I can finish runtime imports of MP3/OGG files for all 3 platforms.

Dev Blog 2 - 01/16/2014

After a lot of research on the Unity Forums and Unity Answers websites, I’ve learned a lot. First a foremost, I’ve learned that Unity doesn’t have a license to decode MP3 files for PC standalone builds, only for mobile iOS and Android. PC standalone builds can only take OGG, which is essentially a free version of MP3 (and it’s also just better, technically speaking) but not widely used. This makes things more difficult. I looked into a number of different solutions, all of which require money (not ideal). I could buy a Unity Pro license and write a Unity plug-in to convert an MP3 to OGG at runtime. I could buy an FMod Commercial license (an MP3 decoder) and use it to read and decode MP3 files for the PC platform. I could drop the PC platform entirely. I could drop the 2nd gameplay mode entirely. I could have the 2nd gameplay mode a mobile-exclusive feature. I could have the 2nd gameplay mode on mobile, and implement and OGG solution for PC and show PC users a little message saying “Hey sorry, but you’ll have to download Audacity, a free tool, and use it to convert your MP3 files to OGG to use this game mode”.

At the moment I am leaning towards implementing an OGG solution for PC and showing the apology message, or buying an FMod license. It’s $500 for a commercial license, free for non-commercial. I was given a tip by a fellow Unity developer - since Unity comes with FMod pre-packaged, and since I’m an indie developer, if I contact the nice people over at FMod I might get a license for cheap. I sent them an email, depending on the % discount I will be going with one of these 2 options. For now I’m working on an OGG solution.

Dev Blog 1 - 01/15/2014

Thus far the most difficult challenge has been finding a cross-platform solution to take player-provided MP3 files and working with them. So far I’ve implemented a file browser system and a way to download a given MP3 for Android using WWW. However, WWW is incompatible with Standalone Desktop PC builds, as well as iPhones. I am working with Sean and Ronny to come up think of a solution - it will likely have to be a multi-pronged process, each prong being platform specific.