Page 1 of 2 12 LastLast
Results 1 to 10 of 15

Thread: Maple Physics

  1. #1
    Daeari Dae314's Avatar
    Join Date
    Jan 2009
    Location
    Hawaii
    Posts
    1,181

    Icon11 Maple Physics

    Since the guy got mad at the other thread, I decided to post it here.

    This is directed @ Wigum but other answers are fine

    I wanna know more about this game/maple physics concept regarding how things work. I am not a game programmer (just a computer science major xD) and it looks like you know something I don't about this. I always thought of games as programs and computer graphic imagery mixed together. I've only created games on my calculator and none of them actually required the creation of a world as maple story does. I guess it would be interesting in that you actually make a world out of a program and you can control all aspects of it. This is why I find programming so fun, you actually create things out of just about nothing, it's very powerful.

    But back to the game physics, since you are creating a world and defining the laws within that world, wouldn't it make sense to logically think about how the laws work? Especially in a professionally made game like maple story, shouldn't there be more than just the random generation of laws behind stuff like attack stacking? People program the laws, they control the laws, so wouldn't the laws have to logically make sense?

    Basically I'm asking why do you believe that game physics is so arbitrary?


  2. #2
    butts FailFTW's Avatar
    Join Date
    Oct 2008
    Location
    Arizona
    Posts
    5,716

    Default

    Because I don't want to die after falling 30 stories outside the eos tower.
    Butts.

    213 181 178 166 165 164 162 152 147 135 134 130 125 123 123 120 120 104 100 100

  3. #3

    Default

    Because gaming realism isn't worth it. Why even continue making a game in 3d when it's more futile to make it look beyond human? Gaming has come a long way but I wonder if gritty realism is really worth it? I would like to have wacky fun with old school games.
    I'm Retired.

  4. #4
    Administrator Wigum's Avatar
    Join Date
    Jan 2006
    Location
    New York
    Posts
    3,457

    Default

    Allright to my point.
    Why do some buffs stack and not others.
    Example, echo can stack on pots, beholder hex overwrites apples and attack pots.
    Why do we get invincibility frames and monsters dont.
    Example, boss battles, entire group attacking at once, but we only get hit by one item at a time
    Why isnt fall damage exponential Example, im fairly sure it's a static damage after a certain point. But when i drop 3 screens down i should theoretically be dead.
    Why cant poisons stack Example, as shown in the other thread
    Why can i leech within 5 levels of a monster?


    They are put in because someone decided that's how it should be. Not because it reflects the real world. And to make the game playable in one method or another. Gaming physics are based on some decision one way or another. Someone decided this was the way the game should be. Sure they make sense and work together, but behind them they were created based on someone's decision and don't need to make sense beyond that.

    Why are some items untradable, why are certain quest items only visible when the quest is active (but not all).

    Why are some boss monsters summonable, while others exist on timers. Why can you avoid some matks and not others.

    Why is maple a side scroller with jumping, but most monsters beyond a snail are impossible to jump over. Why do some classes (looking at buccs) have invincibility frames in their skills to the point where they can train and almost never get hit. Why are the strongest attackers low on hp. Why can mages survive so much damage, but do so little in return.

    Everything in the end is in an effort to balance out the game. But the decisions in a standalone scenario don't have to make any sense. Theyre a set of laws that someone decided should exist. And that players play by even if it doesn't make an awful lot of sense.

    Game physics fall into one of three categories that i can see
    *Game Balance
    *Arbitrary Decision
    *Programming Glitch

    Some more
    Why can't bowman pot while hurricaning, but autopot works. Why does Holy Symbol have a delay on casting but not if you cast on a rope. Why does aura stop healing at your zerk limit but you can't set pots too. Why doesn't autopot work if you're on a rope. Why can't i take my pet outta inventory while on a rope. Why do i have to wait to stop "breathing" before i can cs/cc, why when i turn around does my weapon and shield magically turn hands. why can i "breathe" underwater in town but i get damaged outside of town. Why does a return to town scroll not work with nautilus

    --------------------------------------------------------------------------------

    --------------------------------------------------------------------------------
    Why Daos should never ever go away:
    Spoiler!

  5. #5
    Jr. Necki DaosBeoulve's Avatar
    Join Date
    Mar 2006
    Location
    Mobile, AL
    Posts
    618

    Default

    Well, let's look at it FROM a programming perspective first, and then a game development stand-point.

    In order for an enemy to be afflicted by a a DoT, you have to have some way of storing that that enemy is, in fact, affected by the DoT. The exact mechanisms depend on whether they're using a database or simple instantiated classes for each monster, but we'll look at both since they're both pretty similar.

    From a database perspective, you could either use a flag field (with an expires field) in the monster entry when they're spawned to denote which DoT they're under. It's simple, allows for the effect, and it's easy to check since you're probably already fetching the monster anyways. No unnecessary joins or anything to slow down the database, so it's fairly efficient. This way assume the monster can only be affected by 1 status effect.

    Option 2 is to either add a possible indefinite amount of flag fields (how many DoTs do we have in the game now anyways? And we may get more as we go). This adds bloat to the monster entry, as those fields are generally sitting there empty just taking up storage room after a fetch (memory). Better way is to have another table that stores a monster id and all the effects that monster is under (allows for dynamically adding any number of effects). Problem here is you need to perform a join on the database table, and while those are relatively fast, they still add overhead that you may not be able to handle.

    Now, let's look at it from a class perspective. Same general idea...you either have a flag for the monster that denote which status effect he's under...or you have a queue (since we'll assume the first effect should always fire first) that you have to walk down every second of the game for every monster. Looking at the number of DoTs already implemented and the number of monsters already in the game, this could get complex and bloat very fast.

    Does the complexity of the second option make it non-viable? Maybe not, but as game developers, they have to weight the options. Is this the only reason they didn't do this? No, probably not. Originally, there was mist (or 2nd job poison from a f/p, but the effect is the same as mist) and shadow web...the only two DoTs for the original adventurers. Would you take the simple approach or the complex one if you had no idea you may one day add more DoTs?

    From a game dev standpoint, the questions get even more complex. You already have obscenely overpowered DoTs (I poison you, walk away, and come back in 40 seconds and tap you on the shoulder and you die). Do you allow multiple effects? Do you just let one take priority? Plus, everything else wiggy mentioned.

    I've made online browser-based strategy games, and while you can use a lot of math to try to balance things and such, you still have some arbitrary, wide-arching decisions that you make that you then try to balance everything against. It's the way of game development....there are trade-offs and there are things that you just decide to do certain ways. Sometimes, it's hard to see as far into the future as you need to so you make bad decisions up-front and get stuck to those ways (unless you spend lots of time fixing them). Sometimes, you allow for an overly complex system, but then never develop it.

    The skinny? That's just the way maple works. Someone made the decision, and thus far, no one has tried to change it (note that I didn't say correct it).
    :: Araneu : 168 Bishop :: Kiensten : 132 Paladin ::



  6. #6
    Daeari Dae314's Avatar
    Join Date
    Jan 2009
    Location
    Hawaii
    Posts
    1,181

    Icon11

    I understand where you're coming from now. Thx Daos and Wigum. One day I really would want to test out some of what u said and make a game world :3 that'd be really awesome. But I needa get better first -_-.

    question for Daos:

    I'm not sure I completely understood ur database vs class definition for DoT's. My experience is entirely with object oriented languages so I think I kinda understand ur explanation of that part, but just for clarification, did you mean... for every instance of a monster on field have some array called statEffects or something and add a number (representative of a stat effect) to the array whenever it's inflicted then run a for loop through that array every second or so and execute the corresponding stat effect method for whatever numbers are there then remove the number from the array (FIFO style) after so many iterations?

    Did I understand the above correctly? and can you explain database a little more to me :P.


  7. #7
    Jr. Necki DaosBeoulve's Avatar
    Join Date
    Mar 2006
    Location
    Mobile, AL
    Posts
    618

    Default

    I'm not sure I completely understood ur database vs class definition for DoT's. My experience is entirely with object oriented languages so I think I kinda understand ur explanation of that part, but just for clarification, did you mean... for every instance of a monster on field have some array called statEffects or something and add a number (representative of a stat effect) to the array whenever it's inflicted then run a for loop through that array every second or so and execute the corresponding stat effect method for whatever numbers are there then remove the number from the array (FIFO style) after so many iterations?

    Did I understand the above correctly? and can you explain database a little more to me :P.
    Mostly yes, you've got it. Unfortunately, you can't quite do it FIFO style now that I think about it, since the effects could end at different times. I would also use a vector instead of an array because dynamically allocating an array everytime you need to add an element is slower than pushing onto a vector, and allocating a lot of extra elements for an array wastes space (might not be a problem, but if you do it for millions of monsters, it could be). It also would need to be more than just a simple array of primitives...you'd need to store the status affliction (for visuals to the player), the power of the affliction (maybe just how much damage/clock tick), and ending time (and probably some id of the person that inflicted the affliction so they get full xp for killing it). So, you'd have to have some sort of data structure set up to handle all that, and have a vector of those (or a linked list or something).

    The database would work a lot like the class-based stuff...in a database you'd have tables that essentially define a 'class' in c++, and each entry you put in essentially is like an instantiation of that class. Databases are best for working with huge amounts of data that is easily mined/correlated/stored. I'm going to think they just use class-based instantiations of monsters for maple, but I can't be sure, of course.
    :: Araneu : 168 Bishop :: Kiensten : 132 Paladin ::



  8. #8
    Daeari Dae314's Avatar
    Join Date
    Jan 2009
    Location
    Hawaii
    Posts
    1,181

    Icon11

    Quote Originally Posted by DaosBeoulve View Post
    Mostly yes, you've got it. Unfortunately, you can't quite do it FIFO style now that I think about it, since the effects could end at different times. I would also use a vector instead of an array because dynamically allocating an array everytime you need to add an element is slower than pushing onto a vector, and allocating a lot of extra elements for an array wastes space (might not be a problem, but if you do it for millions of monsters, it could be). It also would need to be more than just a simple array of primitives...you'd need to store the status affliction (for visuals to the player), the power of the affliction (maybe just how much damage/clock tick), and ending time (and probably some id of the person that inflicted the affliction so they get full xp for killing it). So, you'd have to have some sort of data structure set up to handle all that, and have a vector of those (or a linked list or something).

    The database would work a lot like the class-based stuff...in a database you'd have tables that essentially define a 'class' in c++, and each entry you put in essentially is like an instantiation of that class. Databases are best for working with huge amounts of data that is easily mined/correlated/stored. I'm going to think they just use class-based instantiations of monsters for maple, but I can't be sure, of course.
    ooh the database part makes a little more sense ^^.

    As for the array thing, ur probably right a list/linked list would be better, but you wouldn't need to store the status affliction and it's animation in the list. You can store some number/word like 1 for "poisoned" and when evaluating the list have that point to a method that defines the poison power and animation. The FIFO thing can be replaced if a ttl value is added to the list associated with a stat effect like u said. I've never worked with vectors b4 -_- what r those?


  9. #9
    Moe Moe Kyun~ ♥ CDFA's Avatar
    Join Date
    Jul 2008
    Posts
    1,997

    Default

    If we took this at a realistic format, I THINK you'd be 1HKO'd when giant pillars of fire come down during a Zakum run.

    Plus, I THINK snails wouldn't really be THAT big.

    Also, while I'm at it, falling from FM 13...MIGHT cause some broken bones. I dunno.
    Hey cools I don't have a spoiler

    Quote Originally Posted by pWnZIngY0U34 View Post
    mayB try bigfoot. its godd exp to lvl up with

    ops i mean good*
    Quote Originally Posted by xtreme702 View Post
    CDFA's just a total dumbass half the forum knows that by now...

  10. #10
    Daeari Dae314's Avatar
    Join Date
    Jan 2009
    Location
    Hawaii
    Posts
    1,181

    Icon11

    Quote Originally Posted by CDFA View Post
    If we took this at a realistic format, I THINK you'd be 1HKO'd when giant pillars of fire come down during a Zakum run.

    Plus, I THINK snails wouldn't really be THAT big.

    Also, while I'm at it, falling from FM 13...MIGHT cause some broken bones. I dunno.
    You probably took the title the wrong way. I named this maple physics because that's what Wigum originally called it on the thread this whole thing actually started on. This is not talking about physics within the game vs real life physics. This is more about the nature of the maple world laws (features the programmers programed into the game to make it fair) and how those will apply to questionable situations like DoT stacking taking into account the ease of programming and fairness of the game.

    It's just plain stupid to relate maple to real life ^^; it wasn't a game that was meant to mirror life.


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •