Sunday, May 19, 2013

Windows Problems

I need a new computer. That's basically what this week has been saying. My drivers for Android phones don't work. I'm not actually sure how to solve this, but I know my Windows Update hasn't been working. So this week I've been repairing Windows Update. I tried a ton of different solutions online, and narrowed down my problem a little bit. Finally, I just posted on a techsupport forum ( They've been super helpful! A few told me to try things I'd already tried, but a lot of it was helpful. One guy even told me where to find a Windows Recovery disk, which I hope is going to solve my problems.

Other than that, I made a few relevant changes to the screen size/resolution. It's still quite buggy though, and I need to more research into porting to Android devices. Right now I'm trying to keep just one version of the game that I can play on both Windows and Android. Theoretically this is possible because I'm using Gamemaker which can export the same code to both platforms, but it may not be realistic. The immediate difficulty is simply a different screen size: most Android devices have a size of 480wx800h, but my Windows laptop has 1280wx800h. And both Android and Windows can have even more sizes than that. Right now my rooms are just too large for the Android device - either it shrinks everything or only displays one portion of the screen. I can programatically adjust the size of my rooms, but it may be better to also have separate Android and Windows rooms. I need to try out more things and do a little more research.

Sorry for the short post - I didn't get that much done this week and tech support is really quite boring. Hopefully soon I will be able to test the game on my phone without having to build an apk. I'd also like to get the screen resolution working, and fix a few other bugs I found on Android.

Sunday, May 12, 2013

Droid and Device Drivers

This weekend (it feels like I've been working a lot more on the weekend than during the week) I've been getting my computer to work with the Android development kit. Well, it doesn't actually work yet, but the good news is that I did play Germ Wars on my phone.

Gamemaker has export functionality to basically everything - HTML5, Android, iOs, Steam/Windows. This is pretty awesome, and one of the reasons we're using Gamemaker. It also has some nice debugging tools; once I get it setup, I should theoretically be able to just plug my phone into my computer, and compile the game directly from Gamemaker to my phone. Unfortunately, my computer has a lot of issues with my phone’s drivers. So I’ve way too long going through a bunch of help files and resources trying to fix my computer, which also has issues with Windows Update and other stuff...

I was able to run the game on my phone by exporting the Gamemaker file to an apk (the eventual end product that will be on Google Play), but it took a little longer than I would like. There were obviously some issues, the most prominent being the resolution of the screen is way too wide, but it actually worked pretty well. There wasn’t any noticeable lag, despite my never having optimized for the phone before. And apparently Mouse Click translates into Press on Screen automatically.

Finally, I also set myself up a ticketing system on gitHub with tasks and priorities to get them done. While I did write done some stuff for what I was going to do this week last week, I ended up being a little lost and switching gears mid-week. That's now how I'm setting the goals you see here, and hopefully it'll keep me on track and I'll always know what I should be working on. The biggest priority now is still getting android to work properly – I might give up on the drivers but I’ll still work on some of the other changes like the aspect ratio. Then a back button out of the app & to the main menu using an Android specific button. And my stretch goal is a dash feature by tapping far away from you or something.

Sunday, May 5, 2013

Pause Complete!

It’s been a crazy week. Monday-Wednesday always pass quickly, so I only really got to work on Thursday. The week was gone so fast! Luckily I got a lot of work done yesterday, so I managed to at least basically complete the pause/debug menu. Both this and last week’s task were fairly UI oriented and don’t look the greatest, but we have an artist who should be good at that. Here’s a screenshot of the pause menu.

This week took quite a bit of wrestling with Gamemaker, even more so than usual. The basic idea was to have a list of variables that myself and playtesters could change to adjust difficulty etc. I wanted to store them all in just one list so it would be easy to swap in/out variables whenever I wanted. However, Gamemaker doesn’t support pointers at all. It used to have functions that would let you look up variables by name, but with the move to mobile, HTML5, and such these no longer exist. Eventually I resorted to just listing out each variable on in a switch statement. So, for those 5 variables above, I have a script getValue and setValue which have a switch from 0-5 that maps the 0th inputBox in the list to the GERM_SPEED_MOD variable in obj_constants, and the 1st to ENEMY_SPAWN_TIME, etc. A pain if I want to change up those variables and a pain to make and a pain in general.
Making the pause menu was pretty fun, though I had a few troubles with deactivating/activating objects. I sorted most of those out with delayed pause changes. The problem was I would reactivate instances, but couldn’t execute code in those objects using the with(object) construct that same step. To solve it I put called an alarm[1] event when pausing/unpausing, and the alarm[1] event would execute the with statements. Since the reactivation code had a chance to resolve, everything worked out. I’ve also now accepted the importance of alarm[0] ‘slow creation’ events that require other objects’ initial variables. By calling those 1 step after all the objects have been created, it’s assured that each object will already have run its creation code and will have variables the other object needs to check. For example, obj_menu and obj_player both play music in the ‘slow creation’ event that needs to check if obj_constants’ MUSIC_ON is true or false. (By the way, this functionality is mostly for myself because, as good as our music is, there’s only so long I can bear listening to it.)
This week things are going to start getting exciting. It’s time for playtesting! I’m going to be adding a feature or two and playtesting them. I already have a basic timeline set up for the tutorial, and I’ll expand that to work with the regular spawning code which right now is pretty much entirely random. So I’m gonna add a little more structure to that. This will also let me add unique challenges to the game – like flooding the screen with one color of germ, adding waves from one side of the screen, or spawning trackers to come in from multiple directions.