Nav: (Display/Hide) - Home - About the Author / this page

Current Projects: Americana Engine (Game Engine Development)

Wednesday, April 10, 2013

Repairs

Looks like things have taken a turn for the worse when I got back. Although additional sprites were ready for me to use, KY's images for the menu were lost with the power outage, so I'll have to wait until the materials are ready. David's hard drive on his laptop crashed and pictures couldn't be recovered there. That makes three dead drives this semester.

My programming team is currently out at this time while they replace their laptops (via loans) and get stuff back to working condition - until then I'm on my own to carry AD to the finish... at least to a playable demo anyways.

Sunday, April 7, 2013

Returning to Reno: Peppermill

I didn't get to experience all of Reno the first time around at the beginning of this year, so I decided to go another time. I've never been anywhere past Downtown Reno before, and this time around I got to explore much more of Reno, including Virginia City (my friends were at the Piper Opera House back in November but I was unable to make it that day).

I decided to stay at Peppermill since I saw a coupon at Costco once regarding this place and it was well worth the money - I didn't find Circus Circus and Eldorado too satisfying to stay in but this hotel was a notable exception to that rule as a AAA four diamond hotel.

Overview: The suite has some nice amenities. HDTV with capabilities of plugging in computer equipment *, fully dimmable lights, dual showerheads, whirlpool tub, and free wifi*. Like other high class hotels, they tend to lack a fridge and microwave (I'm accustomed to both of them, maybe it's because I've been staying in motels for too long?)

The Costco Package fixes your room cost to $100 a night for two nights, simply make a reservation and use the Costco printout instead of paying. (there are a few blackout dates though when you can't use it though, and space is limited so you'll want to plan in advance). It also gives you a substantial amount of resort credit ($50 on weekends and $100 on weekdays) effectively creating a $50 or $75 per night four diamond suite. Given this is at least 50 percent off the room in most cases, I'd take this offer again.

Thursday, March 28, 2013

Bead Sprite: Zuma Blitz Spirit Turtle

Sprites are quite hard to do especially when they require conversion. The Zuma Blitz Spirit Turtle is no exception to this rule.

The turtle's more than capable of spitting out more fireballs than any other. That means more curve clears on shorter boards. It might be expensive but it's also responsible for almost 30M scores because players were exploiting the combo system by racking up combos while remaining in hot frog mode (which only works since the game only resets the combo if one a normal ball that you fire touches another ball on the curve, which never happens).

Of course to get these it's highly dependent on luck; you have to rely on fruit appearing faster than usual and balls appearing in a favorable position. Attempting these scores alone has zeroed my coin balance many times over, and put high coin costs on other players (I think it took someone many attempts and around 30 million coins to achieve the first 29m score).

I didn't record any replays after the Shamrock board since high scores were determined by abusing this system, and the score difference between this and any other combination was so high that it defeated the entire purpose of figuring out optimal strategies for each week's board.

(A direct color conversion of the Spirit Turtle makes it look janky in some areas and will be redesigned. Expect an updated image in the next few days... or not.)

Tuesday, March 26, 2013

Some days I see the situation on the levee get out of hand. Used to be just ordinary trash, there was a broken down shopping cart and maybe a keyboard at one point. Now it's this - several sofas (can't salvage) and a wooden door. I wonder who picks up these things...

Reminds me of those 'random events' that I see in various RPGs - most of the time a certain area is normal, and only in rare occurrences there's something different.

Sunday, March 24, 2013

Americana Dawn: The Menu Screen

Mock up of of the menu screen where it displays your party. Less elegant with the font until I can find the exact font that KY was using for her menu mockups. (I was only given two character windows to test out the menu screen and such.) Although designed for 640x480, it automatically centers and adjusts itself for higher resolutions.

Up to three characters can be controlled at once on the battle screen, the fourth character slot was just in case the game needed one for some reason (like plot events where you temporarily gain a party member) but they won't be participating in battles.

Current Flowchart:

  • ITEM displays all the items that you have on hand. May contain separate tabs for consumables, equippables, and key items, and you can select a character to use it on from there. Might be renamed to 'Supplies' later.
  • JOURNAL lists all of the journal entries you have unlocked so far. This includes help for the game in general.
  • OPTIONS allows you to change a variety of settings and end game. Note: There is no ability to save from menu, you'll need a separate item (like a camp) to do that, and you'll be presented with an option to save upon using it. It's just to prevent save scumming.
  • Selecting a CHARACTER allows you to see that person's stats and mastery levels, equip items (you'll be shown if what you equip is better or worse, and won't show it if equipping different weapons), and manage their skillpoints.

Thursday, March 21, 2013

Bead Sprite: T.O.P (Crab Hat)

This is what results when attempting to beadsprite an image from a (friend of a friend's) tumblr and not doing the research beforehand. Yes, TOP as in the entertainer, not an actual top (which would be trivial to sprite). Originally I saw it as complete OC but later found out this was more in the fanart category - I decided to commit anyways since it was half done by the time I found out. I did not know who BigBang / T.O.P were prior to spriting this, and this will have a limited release on FB because it could cause an unintended bias.*

A second section, which would otherwise make this sprite project called 'TopBom (Tv Version)' was not implemented at this time due to limited resources (both in beads and grids). The skin here was colored with a Tan color because I didn't have a supply of Sand colored beads available - color replacement will be done as soon as I get a few bags.

Link to original image for the interested. I didn't receive the best of approvals when using a mention on FB to show it to the original artist, so future bead sprites will not explicitly bring it to the original artist's attention if they are known personally.

Tuesday, March 19, 2013

Programming Keyboard Movement

After days of figuring out the logic behind mapping key presses to moving backgrounds and sprites, I have a somewhat functional copy of the game engine - so called Banana Slug*. Characters can run using the shift key, although how many characters have running animations is strictly based on budget.

This code is so complex - maybe 150 lines to control basic map and character drawing functions. And we still have a variety of sprite overlays to draw as well as anything menu and dialogue related, as well as reading scripts from an external file. Lots of math involved in manually calculating the draw positions and figuring out an equation for this. Good thing I took those applied math courses.

Keyboard Movement Code

This modifies the dxinput.cpp and dxinput.h file found in the book Beginning Game Programming, 2nd Edition by doing the following:

  • Assigns key_lock[256] as a bool array.
  • Modify Poll_Keyboard() to be the following:
    
    void Poll_Keyboard()
    {
     if (dikeyboard != NULL)
     {
      HRESULT result; 
      result = dikeyboard->GetDeviceState(sizeof(keys), (LPVOID)&keys);
      if(FAILED(result))
      {
       if ((result == DIERR_INPUTLOST) || (result == DIERR_NOTACQUIRED))
       dikeyboard->Acquire();
      }
      else 
      {
       for (int i = 0; i < 256; i++)
       {
        if(!(keys[i] & 0x80) && (key_lock[i]))
         key_lock[i] = false;
       }
      }
     }
    
    }
    
  • Added a Key_Down_Once function:
    bool Key_Down_Once(int key)
    {
     if ((keys[key] & 0x80) && (key_lock[key] == false))
     {key_lock[key] = true; 
     return true;}
     else return false;
    }
    
  • Adding the function prototypes in the header file

When the keyboard is polled, it will check to see if the keyboard is acquired (via GetDeviceState) and if it isn't it will attempt to reacquire it. The keyboard is automatically unacquired when the program loses focus and without this addition, the program will no longer receive input from the keyboard. (Code regarding reacquiring input devices aren't covered in the 2nd edition in the Game Programming book, and although a similar function appears in the code on the CD in the 3rd edition, it isn't explained anywhere in the book.)

If the keyboard is already acquired it will check the state of the keyboard and will disengage the key_lock if it was set and the key was released.

Key_Down_Once will set the respective key to its locked state and register the button press, it will not register that key press again until the key is released. This was needed since the original Key_Down function will keep registering a button press as long as the key is held down (as in triggering it as fast as the program allows) - it doesn't register key presses in the same way or at the same speed as holding down a key on the keyboard (where there is a delay before key presses are repeated). Useful when you have keys toggle certain things.