Page 1 of 2

Gametype: Last Man Standing

Posted: Fri Oct 22, 2010 2:30 pm
by The Jo
The Gametype Last Man Standing (http://www.orxonox.net/browser/code/bra ... anstanding) is ready to test and use.
(It shouldn't be merged though, since there's still one known bug and collisionshapes aren't totaly implemented in the level.)

Re: Gametype: Last Man Standing

Posted: Sat Oct 23, 2010 8:32 am
by greenman
Hi

At first thanks for your work. It is great to see people creating content for orxonox ;)

wanted to test it today, but when trying to start the level the error

Code: Select all

LuaState: Cannot include file 'lastmanstandinghud.oxo' (not found).
appeared in the console and the mainmenu background image stayed on the screen.
did you forget to add it to svn ?

Re: Gametype: Last Man Standing

Posted: Sat Oct 23, 2010 1:12 pm
by x3n
cool gametype. :)

the remaining bug should be fixed soon, we exchanged some emails ;)
and yes, that file is missing.

Re: Gametype: Last Man Standing

Posted: Mon Oct 25, 2010 8:31 pm
by The Jo
greenman wrote:

Code: Select all

LuaState: Cannot include file 'lastmanstandinghud.oxo' (not found).
appeared in the console and the mainmenu background image stayed on the screen.
did you forget to add it to svn ?
No. :wallbash: Not again.

Fortunately (and thanks to some hints of Fabian ) the gametype is finished and will be ready to be merged soon :D. (I still have to do some cleanup. And maybe other bugs arise when one is down.)

Re: Gametype: Last Man Standing

Posted: Mon Oct 25, 2010 8:41 pm
by Mozork
Nice, I like it. :D

One thing that bugged me, though: I can fly through the asteroids. ;) Adding some collisionshapes could prevent that.
And sometimes I die for no apparent reason. Probably that's intentional, to discourage hiding, but some message as to why I died would be nice.
Some respawn delay would probably be nice, too.

Re: Gametype: Last Man Standing

Posted: Wed Oct 27, 2010 10:50 am
by The Jo
Mozork wrote: One thing that bugged me, though: I can fly through the asteroids. ;) Adding some collisionshapes could prevent that.
I've been working on that, but I still have a little trouble to place some collisionshapes correctly.
Is there a way to make collisionshapes visible? (The only way I know to detectem is to crash into them. that's not the smartest way...)
Mozork wrote: And sometimes I die for no apparent reason. Probably that's intentional, to discourage hiding, but some message as to why I died would be nice.
Some respawn delay would probably be nice, too.
That effect is intended. I've added a warning message, that appears before the punishment actually takes place.

I'm still working on the respawn delay part.

Re: Gametype: Last Man Standing

Posted: Wed Oct 27, 2010 3:19 pm
by greenman
The Jo wrote: Is there a way to make collisionshapes visible? (The only way I know to detectem is to crash into them. that's not the smartest way...)
if you are using sphere collision shapes you can attach a sphere mesh to the collision shape with the same size ^^

maybe we could implement such a feature into collision shapes (to make them visible). the only problem would be to get the right mapping between scaling factor and real size.

Re: Gametype: Last Man Standing

Posted: Wed Oct 27, 2010 3:23 pm
by x3n
scaling is not really a problem as long as the corresponding mesh has the right dimension.

@jo: as greenman said, you can attach a model with sphere.mesh or cube.mesh and scale them like the collision shape (use the attribute scale3D="x, y, z").

Re: Gametype: Last Man Standing

Posted: Wed Oct 27, 2010 3:25 pm
by x3n
example from the fps level:

Code: Select all

  <StaticEntity position="0,-50,0" direction="0,-1,0" collisionType=static mass=100000 >
      <attached>
        <Model position="0,0,0" mesh="cube.mesh" scale3D="100,100,10" />
      </attached>
      <collisionShapes>
        <BoxCollisionShape position="0,0,0" halfExtents="100,100,10" />
      </collisionShapes>
  </StaticEntity>
note the correspondencies between scale3D and halfExtents :)

Re: Gametype: Last Man Standing

Posted: Sun Oct 31, 2010 8:06 pm
by The Jo
I've implemented all features that had been requested.
At the moment I simply can't see how to improve my implementation of last man standing significantly, so I need your suggestions:
How can the gametype or the level be enhanced?

Re: Gametype: Last Man Standing

Posted: Mon Nov 01, 2010 8:28 am
by beni
I guess different levels of difficulty, but that probably is outside of the scope of this gametype and should be implemented much more globally...

Re: Gametype: Last Man Standing

Posted: Mon Nov 01, 2010 11:06 am
by greenman
maybe also additional levels for your gametype ?

Re: Gametype: Last Man Standing

Posted: Mon Nov 01, 2010 4:27 pm
by x3n
The Jo wrote:I've implemented all features that had been requested.
At the moment I simply can't see how to improve my implementation of last man standing significantly, so I need your suggestions:
How can the gametype or the level be enhanced?
looks good so far :)

maybe the camper alert message could vanish immediately when you hit someone instead of staying visible for another few seconds?

also the respawn-delay message could count down, that would be coold :D

also I got a crash, can't tell you exactly what happened, but thats the crash log:

Code: Select all

orxonox.exe caused an Access Violation at location 0x77a11cea in module ntdll.dll reading from location 0x00000001

Call stack:
 0: 0x77a11cea RtlFreeHandle +0x2488
 1: 0x779da5a4 RtlTimeToTimeFields +0xbe3f
 2: 0x76c03f01 HeapFree +0x14
 3: 0x77189c03 free +0x39
 4: 0x01a0d121 orxonox::packet::FunctionCalls::addCallMember(unsigned int, unsigned int, orxonox::MultiType const*, orxonox::MultiType const*, orxonox::MultiType const*, orxonox::MultiType const*, orxonox::MultiType const*) +0x16b
 5: 0x01a03a56 orxonox::FunctionCallManager::addCallMember(unsigned int, unsigned int, unsigned int, orxonox::MultiType const&) +0xea
 6: 0x6849c374 orxonox::GametypeInfo::sendFadingMessage(std::string const&, unsigned int) +0xa0
 7: 0x6847b72b orxonox::LastManStanding::tick(float) +0x2ef
 8: 0x6846cf23 orxonox::GSRoot::update(orxonox::Clock const&) +0xdd
 9: 0x65409ca7 orxonox::Game::updateGameStates() +0xcb
10: 0x654095b0 orxonox::Game::run() +0x16e
11: 0x684454dd orxonox::main(std::string const&) +0x631
There seems to be something wrong with sendFadingMessage... not sure if this is related to your gametype or if it's a general problem, but i've never seen this before. I couldn't reproduce it either...

Re: Gametype: Last Man Standing

Posted: Mon Nov 01, 2010 4:33 pm
by x3n
looking at the crash log, I see sendFadingMessage() calls callMemberNetworkFunction() instead of this->dispatchFadingMessage(message)... that should only happen in network games! so probably the clientID is wrong - which is it->first->getClientID(). No clue why that doesn't work though...

Re: Gametype: Last Man Standing

Posted: Mon Nov 01, 2010 4:55 pm
by x3n
another 4 ideas came to my mind:

1) instead of instantly killing a camper, just do him some damage, i think that would be more fair. ;) you could also make this an optional feature, that can be turned on or off in the config file. (i.e. bPunishCampers=true/false or similar)

2) I like the level a lot, but there's a hole in the ring and 2 pillars are "double" (two pillars at the same position) - you can see them flicker (next to the hole - probably a wrong index in the lua script or something)

3) I'd suggest to display the remaining lives permanently on the HUD, not just once as a fading message.

4) How to deal with players that join in the middle of a game? They shouldn't start with the maximum amount of lives, that would be unfair. Instead I suggest to give them min(lives) of all players in the game (i.e. lets say there are 2 players, one has 3 lives left, the other 1 life left, so give the new player only 1 life)


about the crash: I couldn't reproduce it so far... Feel free to try it yourself, best with a debugger, so you could examine the clientID and maybe even the cause for why it's wrong. Maybe it's not your fault, it could be a problem in another part of the code :)