Fifty Flags Remake

The Fifty Flags game that I originally developed in late 2013 has been completely redeveloped from scratch.  The original version really wasn’t much of a game, and it was developed just a few months after I started learning Unity.  Almost four years later, I’ve learned so much more and developed a much entertaining gaming experience.

In this remake, the flags are displayed on the right side of the screen one at a time.  You must click on the state represented by that flag.  The states are hightlighted as you move your pointer over them.  After correctly identifying all fifty flags, the amount of time to pick each state correctly is displayed.

There is an easy mode and normal mode.  Easy mode displays the name of each state at the top of the screen.  Normal mode does not display the name of the state, and state names are removed from the flags.  Completing the game on normal mode will allow the player to submit their name to the leaderboard screen.

Fifty Flags Screenshot

The music for the game and title screen is an electronic remix of America the Beautiful, which was composed using GarageBand for the Mac.  Sound effects were created with Bfxr.

A custom Unity shader was created for the flags, so that the faces display on both sides.  Transparency was required for the Ohio flag, since it is not a rectangle.  The current flag is also scrolled in the background using texture offsets.

Right clicking will allow the map to be zoomed, which is helpful for selecting the New England states in the northeast.  The state map was created in Blender.  The states were created by following a picture guide of the United states map.  Vertices were extruded and edges were cut to create all of the states.  Then each state was made a separate object.  All states were anchored to the (0,0,0) world position, which keeps the map intact.

Fifty Flags Gameplay Video

Fifty Flags Links

Fifty Flags

Play online

2017 Fifty Flags Remake

Match the flags of the United States of America with the state that each represents.

Easy mode will display the name of the state at the top of the screen. Normal mode will hide state names on flags.

After successfully identifying all fifty flags, the amount of time for each state will be displayed along with the total time and number of mistakes made.

Playing on any mode allows name and time to be submitted to the leaderboard. Score submission is currently not available for the WebGL build.

2013 Flag Simulation

This is a simple demo that I wrote for the Ludum Dare 28 warmup. While creating this demo, I learned about using the InteractiveCloth object in Unity. If you think you have a hoss system, try turning on wind. The wind effect seemed to work really well with a few flags, but it caused considerable slowdown on my system once many more flags were added. I did add the capability to turn the wind effects on and off, and wind is off by default. I would like to add code to only apply the wind effects to the flags that are near (and in front of) the camera.

 

flags_004 flags_005

flags_002 flags_003

 

Released

Feedback

The game got a lot of good feeback on the AppHub playtest forum.  I’ve resolved most of the issues that other developers found.

Device Selection Issue

There was one report that the game wouldn’t play on any controller index, even though I tested that case multiple times.  After doing some more testing with all four controllers, I found that if one of the controllers was not signed into an account, then it would stay on the storage device selection screen if a storage device is not already selected.  Therefore, on the load screen the “Select Device” button didn’t appear to do anything, because there was no profile to select the storage device.  The screen was misleading, because what the user really needs to do is sign-in (however it did say “must be signed in to use storage device”), but it didn’t automatically take the player to the XBox profile login screen.  After doing some research, I found that the PlayerIndex is not a mandatory parameter for the DeviceSelection control.  Therefore, I just removed that parameter, so now all players (signed-in or not signed-in) can select a storage device.  The only downside is that now all players on the system share the same save data, but I doubt there will be any complaints about that.

Component Selection

Another developer reported that it was difficult to tell which component is currently selected.  This is simple to see in later levels with many selectable components, but I can understand that it is difficult on the early levels with only two selectable components.  I went ahead and added a simple animated arrow which points to the currently selected component, which should remove any doubt on which component is selected.  I also created a frame sprite to display around the selected item, but it didn’t look good so I just stuck with the arrow.

Tutorial Tips

Since this is an unconventional game, some players didn’t fully understand the game mechanics.  I’ve always thought that part of the fun was learning the game, but I don’t want anyone to get frustrated at the start of the game.  Therefore, I’ve added tips that display to the left of the game board for the starting levels.  I wanted to have these tips scroll across the bottom like a television news feed, but I didn’t have enough vertical screen real estate in the title safe area.

I ended up putting the tips off to the left side, since there was a lot of unused space there.  At first, I only had the tips display if the amount of time for the S-rank had elapsed, so that expert players wouldn’t see the tips.  However, this resulted in the tip flashing at the last second if the level is completed slightly after the time required for the S-rank.  Therefore, I decided just to have the tip fade in and let all players see them.  Trying to figure out how to get text to fade-in was a lengthly process.  At first I thought all I had to do was pass a color object with the fourth parameter set to the alpha, but this does not work when specifying the first three RGB parameters as well. (good grief!)  Fortunately, I found an article which explained that you have to multiply the color by the alpha value for it to work right, such as Color.White * 0.5f.  It’s mind boggling why just new Color(255, 255, 255, 128) won’t work.

Activating LEDs with  Lower Flow Value

Another suggestion was to remove the ability to activate LEDs with flow lower than the LED value.  I think that would make the game too difficult for a casual audience.  The game appropriately penalizes the player in the “luminosity” rank if the LEDs are not using the maximum values.  However, I did modify the colors of the activated LEDs if those are not using the maximum value.  Now those are colored light blue.  I will probably also add a different sound effect as well.