The Inner Workings ofmy Game and how they'll be put together

Make games! Discuss those games here.

Moderators: Bob the Hamster, marionline, SDHawk

Post Reply
User avatar
Kizul Emeraldfire
Slime
Posts: 14
Joined: Wed Jul 30, 2008 11:06 am

The Inner Workings ofmy Game and how they'll be put together

Post by Kizul Emeraldfire »

<center>The Inner Workings of my Game, and how they will be put together,
Or,
Making a Zelda-/Secret of Mana-esque Game with the OHR.</center><center>(yes, that's 'Game', with a bold capital 'g'.)

Warning: REALLY LONG POST ahead.</center>

First off, I'll most likely be referring to actions either by buttons laid out like on a Super NES controller, or by saying "the <action> button". I'm also going to be scripting them this way with the help of either constants or Global Variables (or both) — because I also want to have the controls customizable. That part will probably be a pain, but I'll attempt it anyway. :)

Anyway, I guess I'll outline the controls and what they'll do first, then get on to the interesting bits. From the top!

Controls:
  1. L button:
    • Target Lock. Functions similarly to the Z-targeting in the 3-D Zelda games. Focuses on nearest target first in a range of 200 pixels by default. (additional options would include Farthest target in 200px range, and Auto-Strafe on/off)
  2. R button:
    • Strafing. Allows the player to move around without changing direction; allows for some (possibly all) projectile attacks to pull a 'curve ball' effect.
  3. Select button:
    • Shows the Map — in the case of this game, it would be the OHR's own minimap, unless you were flying around. Also cycles through options on choiceboxes/the starting menu (New Game/Load Game/Options).
  4. Start button:
    • Displays the in-game ring-style menu. Also confirms on the starting menu.
  5. A button:
    • Use item. Depending on the item, it will be used on either yourself, or an enemy.
  6. B button:
    • Jump. If you hold a direction on the joypad, you'll jump in the direction you pressed, otherwise it's just a straight up-and-down jump.
  7. Y button:
    • Attack with <weapon>. There are four modes of attacking — for example, if you had a sword equipped:
      1. Y button (alone):
        • Slash attack.
      2. Y button (plus <direction>):
        • Stab in <direction>.
      3. Y button (repeatedly):
        • Barrage attack (think Link's 'A' stab-barrage attack in Super Smash Bros.).
      4. Y button (in mid-air):
        • Jump-slash in the direction you're facing.
      All weapons will use at least some of these methods, but only some will use all of them.
    • X button:
      • Magical attack. Pressing it alone will do Defensive/Healing magic; pressing it with a direction will do Offensive magic.
Now that that's been covered, what next?

Za Warudo! ('The World')
For walking around in the game's various environments, this game will be using pixel-based movement instead of tile-based movement; coupled with the above controls and I think this will be (one of) the most unique games ever made for the OHR — or maybe just one of the most complex.

There will be no 'overworld', so to speak — instead, you'll be going about through different (large) areas of a world. In this respect, it will be like The Legend of Zelda, or The Secret of Mana: the generic RPG world map will only be shown while you're flying. (it's the flying part that makes me wish that the OHR had MODE7-ish capabilities, because it would look so much awesomer. :()

This leads us to:

Battles!
Battles will, of course, be fought on the main screen in each area, in the style of the above games — the OHR's battle system will not be used, but as soon as more sprites are usable for PlotSprites, all the monster sprites will be used for the enemies, using NPCs as 'bounding blocks' that detect hits, and also detect what stats its enemy has (and has left).
The NPCs will, of course, be invisible, as will the hero's walkabout sprite — instead, the hero's sprite will consist of several Hero PlotSprites layered over one another, allowing for an overall-larger (and more complicated (due to the layers), but easier to use) sprite than stacking NPCs together would.

A Little More on Enemies…
As noted before, enemies will use a combination of NPCs and PlotSprites for displaying.
For stats, they'll use the stats of the enemy they're representing, with the Ctr stat representing 'Ability Points'. These ability points will be used to determine how many actions (excluding movement) that the enemy has left. Each time the enemy attacks, its Ability Points decrease by one. Once they hit zero, the enemy will attempt to flee — obviously because it wouldn't want to get slaughtered.
Tougher enemies will have more Ability Points than weaker ones, while bosses may have infinite Ability Points.

Enemy spawning is triggered via Step-On NPCs; monsters are absent in any generic area until the hero comes in contact with one of the NPCs, at which point monsters are suddenly spawned in the area (and all the other step-on NPCs are deleted).

Sprite Layering,
Or: Why there will be no 'Party'

The hero's sprite will be layered like so (looking at the bottom of the layer stack upwards):
  1. Hero's walkabout object
  2. Shadow PlotSprite
  3. Hero's main PlotSprite
  4. Boots PlotSprite (more on the equipment later)
  5. Additional Armor PlotSprite
  6. Shield PlotSprite
  7. Weapon PlotSprite
Each of the above PlotSprites would use six frames (or more) of a hero's Battle Sprite, for smooth-ish movement. I also plan to tag each bit of equipment with a different PlotSprite, that way the hero's not just wearing the same thing all the time. :)

Also, due to the fact that I'm too lazy to try to script the A.I., I wouldn't bother trying to use NPCs plus even MORE PlotSprites for additional party members. This game will be single-player, and will have single-member parties throughout the game. If you want to try and add more party members, though, feel free — I'm thinking of sharing this game's engine's source-scripting with everyone who wants it. :D

Equipment:
As pointed out in the sprite layering bit, there are several types of equipment (all of which, when put together, max out the Equipment Slots in the OHR's Equip menu). Weapons, shields, additional armor (chest/backplates, helmets, capes, chainmail, gloves/gauntlets, etc.), and boots will all show their own unique PlotSprites when equipped.

This of course leads me to this other feature of the game that's sort of half-lacking: while there IS running, there is no run button. Instead, your map movement speed is determined by the footgear you have equipped — generic boot-types will, of course, give you a generic 'walking' speed, while other more magical boots (say, the mythical Seven League Boots?) will allow you to move like the wind.
Speedier boots will also allow for more distance when jumping, though not more height. :)

The Ring Menu thing:
This eight-item menu spawns around the hero's walkabout sprite, with items such as Show Inventory, Equip Weapons/Armor, Edit Targeting, and Save. The items (and what they do) are:
  1. Items: this displays the OHR's built-in item dispenser, and allows you to use items, or equip them to the 'A' button for quick use.
  2. Equip Weapons/Armor: this item kicks up the regular Equip menu.
  3. Spells: shows a dual-choice menu allowing you to select either the Offensive spell list, or the Defensive/Healing spell list. Once on a spell list, selecting a spell will prompt for use, or button-equiption. (Yes, 'equiption' is a word — I just made it one. :D)
  4. Edit Targeting: does just what it says on the tin. It allows you to change options for targeting, like what to target, and whether it automatically causes you to strafe when you press the 'Target' button.
  5. Save: launches the Save-to-Slot menu.
  6. Configure: this block allows you to change various options about the general game, such as the window appearances, message speed (*cough*oncemessagespeedisactuallyIMPLEMENTED*cough*), and the controls.
  7. Show Password: this really only has one use: transferring one's game from one system (PC, XBox, etc.) to another. A good algorithm hasn't been thought of to use for it; this block may be replaced in the future with something completely different — depends on whether the game can be ported to consoles or not (I'm hoping 'yes').
  8. Status: shows the stats of the character you're playing.
(more on this particular menu system, as well as an example script in this thread on Castle Paradox. Note: it doesn't quite work right yet…))
This of course leads me to define another nifty feature…

Spell Leveling!
That's right, spells will have levels, like in The Secret of Mana. The hero learns the basic, preliminary versions of a spell, and each time he/she uses that spell, its Spell EXP. will go up one point. Each spell will have its own set of EXP, and once a spell is used enough times, the hero will unlock a more powerful version of it, which can also be leveled up (probably until the spell reaches level 9 or something).

Alternately, I could also use the hero's Ctr stat for Spell EXP — it would simply show just the EXP for the spell equipped.

A Little More on Strafing:
As noted before in the Controls section of this post, strafing can allow the hero to throw 'curve-ball' attacks when also holding a direction, so to speak. In addition to this, the player can also hold Away (whatever direction is exactly opposite the one the hero is facing) on the joypad and press the Attack button to parry.
Pressing the Jump button while holding Away will cause the hero to backflip, while pressing a side-direction will make the hero side-jump. Holding Forward while jumping will, of course, simply jump forward — no fancyness for that.

Aaaaaaand… I can't think of anything else to add right now. If I do, I'll just tack it onto the bottom of this post. :)

Anyway, I hope that this has been an interesting read, and has given you some ideas for things to put in your own game, whether it be OHR-made or not. I'm only using the OHR because that's currently what I know best. :)

tl;dr: WORDSWORDSWORDS. :V Thank you for reading. :D

P.S.: if anyone would like to help me script parts of my game's hamster-powered engine, I could use some help. Or lots of it. >.> As I neared the end of writing this post, I suddenly realized that this is going to be a nightmare to actually complete. :zombie:

Edit: added a bit about enemy spawning.
Last edited by Kizul Emeraldfire on Thu Oct 23, 2008 3:37 am, edited 2 times in total.
User avatar
Twinconclusive
Liquid Metal Slime
Posts: 976
Joined: Mon Oct 15, 2007 6:45 pm
Location: Tabletop

Post by Twinconclusive »

How much of the project have you actually started?

Because this sounds like something a different game maker would be suited for. :(

However, if you really are determined in making it with the OHRRPGCE, then I'll be even more interested in your game's progress.
Last edited by Twinconclusive on Thu Oct 23, 2008 12:10 am, edited 1 time in total.
&#9834;&#9834;&#9834; Du du duuuu &#9834;&#9834;&#9834;
User avatar
Kizul Emeraldfire
Slime
Posts: 14
Joined: Wed Jul 30, 2008 11:06 am

Post by Kizul Emeraldfire »

Started? So far, I have the ring menu scripted, and one hero's main walking animation made. >.> I.E., very little. I was originally thinking of making it with Torque Game Builder, but I don't think it does low-res, and I wanted this game to have the feel of a Super NES game. :/

I also chose the O.H.R. because I'm most familiar with its scripting language — everything else I've looked at has caused me to go :???: when I try to make sense of it. >.< Dunno why.

The PlotScripting language is also one of the best-documented ones I've found — it has a comprehensive dictionary and everything. I don't think there are any other ones (besides Graal's scripting) that I've ever used that were documented as well as PlotScripting is. :)
Last edited by Kizul Emeraldfire on Thu Oct 23, 2008 3:41 am, edited 3 times in total.
User avatar
Newbie Newtype
Reigning Smash Champion
Posts: 1873
Joined: Mon Oct 15, 2007 9:44 pm

Post by Newbie Newtype »

Didn't Zelda Classic recently implement scripting? You could probably add in L-Targeting and Strafing with that.

Unless the scripting is still limited, but I've seen videos of some interesting things done with Zelda Classic.
<TheGiz> oh hai doggy, oh no that's the straw that broke tjhe came baclsb
User avatar
Kizul Emeraldfire
Slime
Posts: 14
Joined: Wed Jul 30, 2008 11:06 am

Post by Kizul Emeraldfire »

Huh. :o I've actually not done anything with Zelda Classic since… a long time ago. 2003 or '02, maybe. o.O Perhaps I'll look into it; I was going to try to make the game look a bit more like Willow (for the NES) or The Secret of Mana, though — I quite liked the proportions used in those games. :)
User avatar
camdog
Gameathon 2009 Winner
Posts: 194
Joined: Sun Oct 21, 2007 12:04 am

Post by camdog »

You should note, regarding the discussion on this at Castle Paradox, the collision detection script TMC posted (which is great, by the way) will only work if the two bounding boxes being checked are the same size, so be aware if you're checking collision between a 20 x 20 npc/hero walkabout and some other kind of sprite.
User avatar
Kizul Emeraldfire
Slime
Posts: 14
Joined: Wed Jul 30, 2008 11:06 am

Post by Kizul Emeraldfire »

Ahhh — okay. o.o Hm… might need to script my own — I'll see later. >.>
Post Reply