Object Setup


Setting Up An Object
Animation Types
Object Details
Actions
Bounding Box
Manage Animations
Monster Objects and Monster Groups

Objects in NESmaker are mainly divided into two groups, Game Objects and Monster Objects. In one way these objects work the same way. That means that all objects will have the same properties, like Health, Monster Flags, Animation Types, Bounding Box and so on. So the objects themselves will be very similar. The way they are different in NESmaker is how they are handled in the code. Game Objects will always be loaded in on every screen, while the different Monster Objects are only loaded in on the screens where their Monster Group is set up. It is also worth noting that under Game Objects there are several labels already defined (Player, Player Projectile, Health Pickup, Charge Pickup etc. ). Most of these don’t have any meaning. So you can view them as example labels. The one label that will always be true is the first one called Player. That is true for all modules.

Setting Up An Object

In this example we will set up the Player object. To start setting up the Player object, find Game Objects in the Context Menu list on the left. Click the little plus sign and then click Player. This tutorial will assume that you have already drawn graphics for the player in the Pixel Editor. To make graphics for the player object you must edit and save the GameObjectTiles.bmp file.

The main interface focuses on the graphics and animation. You should start by setting the size of your player object by changing the values in the drop-down list menus called Height and Width. These values are in 8×8 pixel tiles. You can find these lists in the section called Animation Details.

If you have made a graphic for the players idle state, then this is a good time to set up your first animation frame. Make sure that the top left tile is selected in the big graphics window on the right side. Select what subpalette you want to use. Then go to the small window in the upper right where all the Game Object graphics are. While holding down the Shift key on the keyboard, drag the mouse (while pressing the left mouse button) to make a rectangle that covers the graphic for the players idle animation frame. When the rectangle is covering the entire frame, let go of both the Shift key and the mouse button. You should now see the idle animation frame in the big graphics window on the right.

Before setting up more animations we can now set up the Object Details. We will come back to this animation setup when we have know what animation types we need. Click the button called Object Details.

The title of this window is called “Monster Animation Info”. However, this window keeps track of more than just the objects animations. I will refer to this window as the Object Details window. Let’s start by setting up all the animation types we need. At this stage it is best if you have planned this ahead, but we can do some edits here later if we need to. However, it is important to know that you might get issues here if you make an animation type and later want to delete it. The issue is usually because the animation type is used in a Monster Action (which we will come back to later), but sometimes you may also encounter an error message stating that the animation type can not be deleted. If you haven’t planned what animation types to use, then this is a good time to think about that before we begin. What animation types to use will depend on what module you are using. In a platform game for example, you would usually have an animation called Jump. In the Adventure module or Maze module that animation would be useless, unless you program some way for the player to jump in those modules. We are going to keep it simple for this example, so let’s make some basic animation types that will be useful in most modules.

Animation Types

  • Idle
  • Walk
  • Hurt

We start by renaming the one called Default. Select the word Default from the list and click the Rename button. Write Idle and click OK. Now we need to add a new animation type, so let’s click Add. Write Walk and click OK. Do the same again, but this time name it Hurt. We now have three different animation types. The drop-down menus on the right will allow us to set different animations for different directions of the object. We don’t have any animations set up right now, only Animation Types. We will set up animations when are done with the Object Details window.


Object Details

Click the tab in the Object Details window labeled Details. Here we can set different values and settings for our player. Since we are setting up the player object we have to check the first two checkboxes called PERSISTENT and player. PERSISTENT means that this object will carry over from one screen to the next. player obviously means that this will be a player object. In this window we can also decide what we want to happen when the player collides with a solid tile and what happens when he reaches the edge of the screen (any of the four screen edges). Normal Max Speed is (like the name suggests) the maximum speed the player can move. Acceleration Speed is how fast he should reach the max speed. Setting this to the max value (255) will make the player start moving in max speed instantly. When making platform games we also need to set the Jump Speed. All of these values are something you need to experiment with when making your game, but here are some example values for making a platform game.

Example Values for a Platform Game:

  • Normal Max Speed: 16
  • Acceleration Speed: 128
  • Jump Speed: 70

PS! The picture below does not reflect these values.

Some fields in this window can be ignored since they are not fully implemented in NESmaker 4.5.9. The following fields can be ignored:

  • Experience
  • Strength
  • Defense
  • Hurt Reaction
  • Spawn Type
  • Monster Bits

There are tutorials on the NESmaker forum that will enable some of these features:

Enabling support for the Strength/Defense System in your game

Adding Monster Bits back in

PS! We will not look at those tutorials here.

Monster Flags

Monster flags is the list of check boxes on the left side here in the Details tab. These are unique for each object. They specify what kind of object it is we’re making (player, monster, pickup object etc. ). We have already seen that we need to check both PERSISTENT and player for the player object. But let’s take a quick look at all of them now.

  • PERSISTENT: This makes sure the object carries over from one screen to another
  • player: This should only be checked for the player object
  • player weapon: Check this box if you are making a player weapon of any kind
  • monster: Check this if you are setting up a Monster Object
  • monster weapon: Check this for any monster weapon
  • pickup / powerup: Check this if you want the player to be able to pick up this object
  • target type: Unused
  • NPC: Check this for any object that will act as an NPC

Actions

Objects in NESmaker have 8 different Action Steps. That means the object can be in 8 different states. An example of this could be the player when he is standing still (we are not touching any buttons). This would normally be Action Step 0. That action step is often used as an idle state. An Action Step can also have its own animation (Animation Type). Actions are what we want that object to do in this state. What Actions really are is Assembly code scripts that will run when the object is in this state. We can loop this action or only run it once. We can also set a timer for how long we want this action to go on. For the Player Object we mostly need to worry about what animation we want for the different actions, because the input from the gamepad controller will decide what the player object does, as opposed to a Monster Object who needs a script (Assembly code) to tell it what to do.

Action Steps

As mentioned in the previous paragraph, an object can have 8 different action steps. We will use three of these action steps to set up the animation types we made for the player.

It is important to know that different modules can have different actions programmed for the states. So for example a platform game is set up to handle Action State 2 in a different way than the Adventure module. All of this can be modified by changing the Assembly code in NESmaker, but that requires intimate knowledge about how NESmaker works.

Here are the common action states for platform games:

  • Action Step 0: Idle
  • Action Step 1: Walk
  • Action Step 2: Jump
  • Action Step 3: Climb
  • Action Step 4: No Pre-Defined Action
  • Action Step 5: No Pre-Defined Action
  • Action Step 6: No Pre-Defined Action
  • Action Step 7: Hurt

Here are the common action states for the Adventure module:

  • Action Step 0: Idle
  • Action Step 1: Walk
  • Action Step 2: Attack
  • Action Step 3: No Pre-Defined Action
  • Action Step 4: No Pre-Defined Action
  • Action Step 5: No Pre-Defined Action
  • Action Step 6: No Pre-Defined Action
  • Action Step 7: Hurt

For Action Step 0 we just need to make sure that Idle is chosen as the Animation Type. Since there is only one animation frame we don’t need to worry about animation speed or anything else.

For Action Step 1 we will choose Walk as the animation type. Since this animation type will likely have more than one frame, we will set an animation speed. In this example we will set 3 for the animation speed. It is important to know that a lower number means a faster animation. We can set numbers from 0 to 15. 15 is the slowest. Notice that the drop-down menu is set for Loop. So this animation will loop as long as the object is in this state.

Action Step 7 is special. This is set up as the hurt state for all modules. However, the Shooter module and Arcade Platformer module is set up with one hit death, so the player won’t go into this hurt state when he collides with a monster or monster projectile. There’s a lot of code in NESmaker that handles Action State 7, so even though we can set up whatever we want on this action step, we will might get unexpected behaviors when using Action Step 7 for custom things.

In this example we will be setting up actions for a game in the Adventure module, so we need to set up Action Step 7 properly.

Here we can see that we are not only setting the Animation Type, but we are also setting a timer on how long we want this action to last. This timer is not in seconds, so you have to experiment with the numbers here. Like the animation speed setting, lower numbers are fast and higher numbers are slow. Setting a Timer value to 0 will basically set a random timer number (usually very slow). We also set the EndAction here. This is what we want to happen once the Action Timer has reached its set value. In this case we choose GoToFirst, which means go to the first action step.

Actions

The drop-down menu called Actions will display a list of different actions we can set for the object when it is in the selected Action Step. By default NESmaker 4.5.9 doesn’t have a lot of actions to choose from, but these actions can be modified and more can be added. This is done in Script Settings, which is covered in another section. In this example we will use the action MoveLeft for a Monster Object (remember that these actions are usually not necessary for the player object because it is controlled by the gamepad controller).

In this example we are setting up an action for a Monster Object. Since this monster will not use an idle state, we use Action Step 0 (which will be the first action that starts for any object). The animation type is Walk and we have set Action to MoveLeft. This is a script that will move the object left when it is in this action state. The Timer is set for 1. When using actions like this we should set the timer with anything other than 0. It is a best practice to avoid issues with triggering the action. Since this action is set for Loop at EndAction, it doesn’t matter what number we use here. To avoid confusion I also need to mention that there is an EndAction called Repeat. Use this if you want the action to repeat at the end of the timer. If you use Repeat, then the value in Timer will be used. So for example a value in Timer set to 8 will trigger the action again when the action timer for this object reaches 8. Since this Monster Object also has an animation, we set the Animation Speed as well.

Bounding Box

The Bounding Box is the collision area for the object. That means it will only check collisions within the area you select here. The bounding box area can be set by holding down the left mouse button where you want it to start and dragging it to where you want it to stop. You should end up with a rectangle covering most of the object (or the area where you want the object to observe collisions). It is usually a good idea to not set the bounding box to cover the entire sprite object. If you fill the entire graphic area here with the bounding box you will most likely have issues with getting stuck in background tiles. Especially for platform games, it’s usually a good idea to make sure the bottom of the bounding box is 1 pixel from the bottom of the entire sprite area (see picture above). If you have followed all the steps from the top, you can close the Object Details window now.


Manage Animations

On the main section for the Object you find a button called Manage Animations. This button will open a window where you can create all the animations you need. This is almost like a “sub-section” of the Animation Type. Here we must set up all the actual animations we need. That means we need to create an animation for every direction an object can move in (if you want different animations for each direction). In the example above we see animations for the player object in the Adventure module. Since that module allows the player to move up, down, left and right, we should create animations for all those directions. That goes for every animation, like Idle, Walk, Attack and maybe Hurt. For platform games you usually just need to create walk animations for left and right, but don’t forget to make animations for jump. When you have created all the animations you need you can close this window.

Now we need to set up the actual animations. If you planned ahead (for example while drawing) that makes it much easier now, because now we need to decide how many frames each animation needs. You choose the different animations from the drop-down menu below the Manage Animations button. To see what an animation will look like in the game, you can use the Preview window to play the animation.

Here we are setting up the animation for WalkRight. It has 2 frames of animation. To set up each frame, just repeat the step we did in the section called Setting Up an Object. When you are done setting up all animations we need to do one more thing.

Setting Animation Directions

Now we need to connect every animation to the different directions on the object. Open the Object Details window again and set every animation to its appropriate direction (for every Animation Type). When you’re done you can close the Object Details window.


Monster Objects and Monster Groups

A new monster must be created by selecting the folder icon called Monsters. You create the monster (according to the steps above). Then it is very important that you click the Save button, or else all the work you have done will go away. So don’t click anywhere else in the Context Menu to the left in NESmaker before you save your monster. It is also important to know that when you save the monster it appears as an icon below the Monsters folder icon (with the name you gave your new monster). Make sure you select that icon when you want to edit the monster object. This can be confusing since all the setup you did for the monster is still active in the area on the right. If you continue to edit here and click Save, you will create another object.

We have seen how we can set up an object. All of the steps above about setting up an object apply to both Game Objects and Monster Objects. The main difference between a player object and a monster object is that the player is controlled with the gamepad controller and the monsters will move according to what actions are selected for their Action Steps. There is of course a lot of code in the background that handles player objects and monster objects differently. Another obvious difference is what boxes we check for the Monster Flags in the Object Details window. Remember that we should only set PERSISTENT for the player object. For a monster object we only need to check the monster checkbox.

There is one thing that is very important when making monster objects. They must be assigned to a Monster Group. Making a Monster Group is easy. Go to Monster Graphic Banks, Graphics Bank 0, and select Monster Groups. Give the Monster Group a name and select up to four monster objects to be included in this group. The drop-down menu called TileSet can be used to select what graphic tileset the monster graphics were made in. If you for example drew the monster graphics in Monster_0_00.bmp, then you should choose Tiles-0 here. If you drew the monster graphics in Monster_0_01.bmp, then you need to choose Tiles-1. This monster group can be assigned to a screen, and then you can place monsters from that group on the selected screen. You can’t place any monsters on the screen without assigning them to a monster group first.

Assign the Monster Group to a screen by going to the screen you want and click Screen Info. Select the Day Monsters tab and choose your new Monster Group from the Day Monster Group drop-down list. Close the Screen Info window, and you should now be able to place monsters where you want them on the screen.