Project #2: Alpha Release

Mars Commander Good Enough

“As your nation’s most technologically advanced accomplishment, the HUB, lands on the surface of Mars, millions of your fellow citizens cheer. As another nation’s most technologically advanced accomplishment, their HUB, lands on the surface of Mars, a million of their fellow citizens also cheer. Find a partner to face-off and claim this planet of resources for your own and remove all foreign threats.”

Done! Okay, not “done” in the classic sense of the word, but done enough for alpha testing (i.e. “Is this even fun?” and “Arrr, thar be bugs”). It works best on a Windows 8.1 tablet with two human players. Each player starts with a HUB and the goal of the game is to destroy your opponents first HUB.

The six units included in this alpha release are:

  1. HUB – The Hub is your primary unit and the only unit that can create and throw other units. Each time you throw out a new unit, you are unable to use the Hub for some amount of time (3-20 seconds, depending on the last unit thrown). The new units will also need a few seconds to charge once they get deployed.
  2. EYE – The eye let’s you see a great distance but can be easily destroyed.
  3. AA. This is your anti-air unit and will fire a tracking missile out if anything gets close it.
  4. BMB. The bomb is the cheapest to use but the hardest to aim. It packs a wallop if you can get a direct hit.
  5. MSL. This missile is expensive to use and doesn’t hit as hard as the bomb, but it will find a target and launch itself directly at it.
  6. CRW. Oh man, the crawler is dangerous. Put this kid on the ground and she’ll crawl forward until she hits something – then BLAMMO.

Here’s some gameplay of the using all of the units. You’ll see I missed with the crawler (the red circle) so I had to throw a bomb at it to make it go off. As with the previous video, I’m using the mouse just so you can see where you would normally touch.

 

Installing a Windows Store App without the Windows Store

Since the Windows 8 store doesn’t currently support closed/hidden/beta releases (but the Windows Phone store does – weird), you can download the app package directly. Installing takes a couple extra steps but we’re all about learning new stuff here. Here’s something new! In the app development world we call the act of installing an application from outside a sanctioned marketplace (e.g. Windows Store, iOS App Store, Google Play) “Side-loading”. It’s inconvenient on purpose since your eschewing all of the protections you would normally get when you install from an app store.

I tried real hard to keep all the viruses and information stealing malware out of my alpha game, but let be known that I make no guarantees and you should install this package at your own risk and all that.

How to install Mars Commander Alpha on your Windows 8.1 device:

  1. Download the app package from here: Mars Commander Alpha for Windows 8.1.
  2. Extract the file somewhere.
  3. Right-click on the file MarsCommander_Win8_1.1.0.1_AnyCPU.cer and select Install Certificate.
  4. The Certificate Import Wizard will open.  Select the Current User store location and click Next.
  5. Select Automatically select the certificate store… and click Next.
  6. Click Finish and then OK when the install completes.
  7. Open PowerShell and change directory to where you extracted the files.
  8. Run “import-module appx”.
  9. Run “add-appxpackage MarsCommander_Win8_1.1.0.1_AnyCPU.appx”.
  10. Some stuff should blip on your screen while it installs and if there are no errors you should see Mars Commander in your app list! Huzzah!

(Thanks again to Matthew for trying to warn me ahead of time that I was going to go way over 24 hours on this one (he was right) and being a constant source of support and design advice.)

Project #2: Mars Commander 32 (ahem) hour update

Mars Commander Bettererer

It’s fun!

Today on Project Update: a demo video! I have most of the Hub unit’s functionality completed as well as basic unit-to-unit connections. I use a mouse for the video below so you can see where I’m clicking, but the multi-touch testing seems to work just as well. I waited until I had just enough stuff implemented to see if it was fun (read: throwing new units and blowing them up) before doing an update. It’s fun! Well, I think it’s fun, but I am…biased.

Gameplay

To review, the screen is split in half with a player on the left (green) and a player on the right (blue). Ideally, this would be played on a tablet flat on a table with players facing each other. When first touching a Hub you’ll see an interface come up to select which unit to throw. The only units implemented right now are the Hub (top left) and the Bomb(bottom left). There’s also the Eye (top, second from the left) which is meant to expose areas of the field, but since there isn’t a fog-of-war yet, it doesn’t do much. After selecting a unit you’ll get to aim the throw and then launch the unit using a press-and-hold style. Each unit is connected to the unit that threw it with a string of little connectors.

In the interest of time, I disabled the cool-down after launching a Hub. Normally a Hub would not be able to launch another unit immediately after a launch and would have to wait about 30 seconds (you’ll see a short cool-down when you see the Hubs throw an Eye in the video).

Here’s how the task list is shaping up

Project2 Task List Update 2

I Tried Not To Love Windows Phone And Lost

WinPhoneAndroid

Smart phones are weird. We ask them to do all kinds of smart things but, individually, we prioritize different smart functions over others.  Naturally, we expect that our chosen device will perform these preferred tasks better than other devices. What I’m saying is that we are weird about smart phones.

After owning a Windows Phone Nokia 920 for two years, I decided to switch to the fancy new Android Samsung Galaxy S5. Two months later, the S5 is back in the box and the 920 is back in my pocket. Why? There are things the Galaxy S5 does that are totally rad and that I will miss, but it just wasn’t good enough at enough of the items on my smart phone Must-Do-Well list to make the switch permanent. Here’s what killed it:

1. I want to look at it, just look at it, and have it tell me what time it is, where I should be next, and if someone is trying to get a hold of me in some way.

The Galaxy S5 fails spectacularly in being able to quickly inform me of my most important life stuff. At literal first look, I get… nothing. Just a blank face—or rather, my face reflecting back an expression of failed expectations. When I finally engage the phone with a button press, the lock screen springs to life.  It tells me the time, something useless about the weather, and the occasional notification. Most painfully, is there is no email notification whatsoever (my primary method of communication) nor any indication of upcoming appointments (my primary method for… keeping appointments).

The usual Android response to this usability issue is to choose from a menagerie of custom lock screens in the Wild West that is the Google Play app store. But lo, my company has mandated PIN code security on my lock screen. If you install a custom lock screen and have additional security for device unlock, you’ve just created a two-lock screen device! After unlocking the custom lock screen you are presented with the original lock screen to further unlock the device (facepalm). I can barely take one lock screen, let alone two.

2. If I have viewed a text or email, I’ve seen it and it should stop telling me I haven’t.

The Windows Phone email and messaging live tiles have spoiled me. The live tiles display numerically how many items I haven’t seen, not how many I haven’t opened. By glancing at the message list I can already see who it’s from, the subject (for email) and some of the body. That act is enough for Windows Phone to reset the number of “unviewed” messages and clear that cognitive baggage. Samsung’s email app requires that I proactively acknowledge each email before clearing the “unread” counter. Defaulting yet again to the standard Android response of installing a different email application (all of which are trash), it turns out that the Samsung phone won’t display ANY kind of notification counter over the application icon. Samsung/Android designed the Galaxy S5 so that the Samsung email client is the only email app that displays a notification counter, effectively neutering competing applications. WTF?

3. Don’t be giant. I don’t exactly have small hands, but I don’t exactly have bear paws either.

The Galaxy does okay with my third Must-Do-Well requirement. It is a big-and-tall five-inch screen, but the back is rounded with a grippy material and they kept the so it almost feels like it fits in the hand. Almost. I’m still miffed that sometime after the iPhone entered the scene, non-Apple manufacturers decided that four-inch screens should be relegated to the domain of cost-cutting devices with 480p hobo screens. Let us have a moment of silence for high-quality four-inch screens. #RIP4inchscreen

4. Music, podcasts, and audiobooks need to be an aurally smooth experience.

Music, podcasts, and audiobooks would be great companion to long commute if they didn’t all stammer like King Albert addressing a nation a war. It’s like Samsung and Android are laughing at me because they know that all I want to do is groove to the new T. Swift track and it stammers every few seconds, throwing off my epic in-car karaoke jam. NOT COOL.
Don’t get me wrong, the Galaxy S5 is solid in many ways and I hear that the Google Play app store has lots and lots of apps for people who love apps. I didn’t realize the aforementioned Must-Do-Well items were actual deal breakers until I spent a couple months not having them. If you need me, I’ll be over here waiting for a Windows Phone with a four-inch 720p screen that weighs less than my cat. I understand I may be here for a while.

Project #2: Mars Commander 12…err…17 Hour Update.

Mars Commander Betterer

A little over halfway into Project #2 and I have discovered two mistakes that will certainly blow my schedule.

Mistake #1: Framework, Engine, Game

Near the bottom of the technology stack is a game framework. This provides entities like textures, vectors, something that draws stuff, and the like. The engine stacks on top of that entities like sprites, physics, models, and other delicious goodies that hold up the eventual top layer that is game. Developers and designers can spend whole careers sitting comfortably in any one of those layers and a few (well, more these days with all the indies) live throughout.

MonoGame, the technology of choice for Mars Commander thus far, is a framework. I planned the work similar to Project #1 in that I would be building the game layer while naively ignoring the relatively minor but not insignificant engine I would need to build first.

Woops! My time log shows me about 16 hours in before realizing that putting the engine together sure is taking a significant chunk of my precious 24 hours. There’s not much I can do about this except to paddle out of the middle layer as fast as sanity will allow.

Mistake #2: Developing Touch with a Mouse

My initial interface design not only looked like a four year old drew it, but in current hindsight it made just about as much sense. As a painful reminder:

Commander Mockup

It is probably hard to tell…well, anything from the picture, but the intent was to have a control bar at the bottom of the screen that lights up with whatever controls are available for a selected unit in the playfield. I’ve essentially neutered and spat that magic that is a touchscreen and tried to turn it into a keyboard. A mortal sin if there ever was one. I need to apologize to all the super smart folks that gave us touch screens: SORRY, GUYS.

The NEW interface drops that stupid bar at the bottom of each player’s screen and puts all of the controls in the world on or near the unit selected. This will even allow for (gasp) multiple touches into the play area. Maybe even throwing from multiple units at the same time! Neat!

Regroup!

I feel I have about 80% of the engine components completed (sprites, touch handling, draw layers) which is enough to support a completed prototype so I’ll call those bits good for now. I’ve started implementing the interface for the HUD which should serve as a template for the rest of the units. I will definitely not make 24 hours on this kid, but it is more important to finish the thing at all then to throw it away just because the schedule slips.

She ain’t much to look at, but there’s a lot of good stuff behind all that orange:

Checkpoint screenshot

 

Aaaand in the interest of posterity, the task list as it stands today:

Checkpoint task list

Aaaaaaaaaaaand back to it…

Project #2: Mars Commander

The game mechanic in Humongous Entertainment’s Moonbase Commander is great. It is a fantastic hybrid of strategy and timing-based skill that has sadly not been explored further. Let’s fix that.

Mars Commander

Definition

Each player controls a hub that can launch out new hubs or any number of other units and projectiles. When launching a new unit from a hub the player is given a rising power meter and needs to press “Launch” when they think the power meter is at a good spot. Moonbase Commander was a relatively long turn-based game for 1-8 players on a local network. This project is a fast-paced real-time head-to-head implementation of a the unit throwing mechanic.

To throttle each player’s abilities, each action will take a certain amount of energy with energy recharging at a standard rate. Players can speed up the recharge rate by deploying certain types of units.

Previous Work

I did some searching around to anything else (besides Moonbase Commander) that had this kind of mechanic in an strategy context with no avail. That’s either good news or something like passing a shrunken head on a stake as I walk onto ancient tribal lands.

Designs and Mockups

I went through the major design themes (Moon, Earth, Water, Space, Living Room) and, quite obviously at this point, landed on Mars. Though, should this go beyond the project, I should reconsider “Living Room Commander”. I’ll be trying out the cross-platform MonoGame  which is an implementation of the Microsoft XNA 4 API. A couple friends and I used XNA 4 to implement Pendulous and I thought it would be good to have some experience in the toolset for this one.

I really like the idea of a head-to-head real-time, so I’m going to set this up sit-down arcade style.

Commander Mockup

Each players sits at opposite ends of the tablet. At the bottom of the screen is their controls with their view of the world in the rest of their half of the screen. To the bottom right the launch button and power meter with the rest of the bottom of the screen showing the selected unit’s status and controls.

Tasks

This list, now that I look at it, is a little intimidating for the 24-hour limit. Bah, games are fun to write anyway.

  1. Render simple ground tiles
  2. 2-player camera with split
  3. Touch-based camera movement
  4. Rendering layers (ground, units, projectiles, overlay)
  5. HUD overlay
    1. Launch button
    2. Aim rotation
    3. Unit status and actions
  6. Units
    1. HUB
    2. Solar array (energy collection)
    3. Anti-air
    4. Shield
  7. Projectiles
    1. Bomb
    2. Missile
    3. EMP/Jolt (EMP off cord, Jolt on cord)
    4. Crawler
  8. Unified command queue (prep for network play)
  9. Fog-of-war
  10. Sounds
  11. Music (optional)
  12. Welcome screen

Future Work

Again, the “future work” category is more to remind myself what I should not be doing with my time even though it would super cool and super fun.

  1. More unit types and projectile types
  2. Multiple elevations
  3. Network play with more players (3+)
  4. AI opponents