Announcement

Collapse
No announcement yet.

OSM-MicroMachines-WreckRoomRally

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    OSM-MicroMachines-WreckRoomRally


    Name: OSM-WreckRoomRally-Beta1
    Version: 3369
    Compatibility: Stock UT2004, plus OSMT (Old Skool Monsta Tools - Included)
    Credits Too many people have helped me out to list right now, could take up a whole thread by itself.
    Download:
    http://files.filefront.com/6775015 [10mb.rar @FileFront]
    http://www.unrealplayground.com/mapper.php?id=60193 [12mb .zip @UP]

    Been working on this for nearly a week now – before we go any further I just want to be clear, it’s not a mod, just a map designed to be played with OSM, SuperApe's mod for UT2k4.



    Hopefully the idea is simple enough – it’s a top-down racer, just like MicroMachines on your old Megadrive or Nes.
    The track is built in 3D, and then played with vehicles that lock you into a top-down view – you spawn inside your vehicle at the start line, and currently it’s a basic 3-lap race format.
    You see the world through the same top-down view as the pic above this paragraph..;

    ..and the track is built in 3D, as in this pic;



    It’s designed entirely around online play, in fact the whole point of it is for some silly japes & giggles with your mates in-between rounds of hardcore fragging.
    To that end, there’s 4 players, with Red, Blue, Green & Gold teams, and 4 Vehicle-PlayerStarts on the racing grid.

    TurboBender mesh donated to the cause by: Sabby - Thanks dude.


    Red Team

    Blue Team

    Green Team

    Yellow Team

    It’s far from complete though; When you & your mates spawn in, there is no formal “Go” signal, it’s just you, on the track with a lap-counter.

    That’s partly what this Beta test is all about, I need to figure out the best way to approach that task.
    So too, I need online testing, to make sure that everything I’ve assumed so far will work, actually do work.

    I'd really appreciate it if some of you guys could log onto a server together & try it out - this is never meant to be played on your own.



    What works:

    *) Top down view, camera position is locked over the vehicle, and since you spawn straight into the vehicle, you never see the “world” in 3D except for the very start, when you’re floating in space before you first spawn.

    *) Anti-stick mechanism – If you end up stuck at a silly angle & you can’t flip yourself, if you take your finger off the accelerator button you’ll “teleport” the right-way up.

    *) 4-Wheel steering – At roughly 50% of top speed and under, your bender slips into 4-wheel steering mode, to give a more MicroMachines type rotational-steering feel, and also to help you turn very tight if you’re prepared to slow down for it.
    Also works in reverse.

    *) Lap Counter – Each team has a trigger that counts laps, the game ends after the first player reaches 3 laps.

    *) Basic housekeeping, apart from the OSMT files (included), everything else you need is packed into myLevel.


    What doesn’t:

    *) There is no formal system yet to keep all the drivers on the grid before the start of the race.
    Online testers will have to play fair, and not zoom off before the other guy spawns.

    *) There is no, and probably never will be bot support.
    I'm a hack-mapper, not a leet modder.
    Besides, MicroMachines was always a multiplayer game - Like Bomberman - It needs people and people needs it! :eek!:

    *) If you suicide and respawn, then chances are you’ll respawn on a different Team.
    You have 6000hp, and if you fall off the tables you get teleported back close to where you fell off, so in theory it's meant to be impossible to die, although you still can, if you try really hard..

    *) Sometimes, rarely, you start off zoomed-in, and you need to use the scrollwheel (or whatever key you have bound) to zoom out.
    This doesn’t affect the camera angle, but the degree to which it’s zoomed in on the vehicle. To be fixxored.


    What’s unknown;

    *) Technically the VehiclePlayerStarts require 1024UUs clear in all directions or they spawn you without a vehicle (as you might imagine, this would be disastrous).

    *) I don’t actually know for sure if multiple people all spawning at the same time will encroach within this 1024 collision-radius.

    *) I have practically no online info yet, in theory it should all work perfectly, but that's still just theory..

    Still, no surprises makes life awfully boring, ay?
    Please, let me know what you think - both playing alone and with mates - it's pretty important to me tbh that folks play it together.

    I've got lots of idea for new tracks, & plan to make it simple for other mappers to copy/paste the "essential" actors from this map into their own.
    Hope you have fun all.

    #2
    wow. That's really cool. I can't belive it's all embedded in the map too! (or is it? lol)

    Those hellbenders are pimped!

    Comment


      #3
      woo !! looks great bigjim
      will try that this evening

      Comment


        #4
        rofl !nice

        Comment


          #5
          Great! and for the all together start=i saw in some racing map that a timer was set and when the time was up some boards went down so u could pass...otherwise ur just stuck...how about that? like every 5 minutes or something..(time the fastest racer and check that time...add a minute and done) Thanks for making this man..i love micro machines..

          Comment


            #6
            How fun! Thanks Jim. We'll try to play with more people later.

            I hope you don't kill me when I say it's really cute ^^

            Comment


              #7
              Originally posted by Flak View Post
              I hope you don't kill me when I say it's really cute ^^
              Naw, not at all - glad you like it.

              After all, can't spend your *whole* life blowing people's heads off with heavy weaponry, can you?

              Can you?

              Comment


                #8
                Awesome, BigJim!

                Sorry I haven't been able to help much at all. (baby care busy)
                This really sounds great. I just now read over your "wish list". I may be overstepping my calendar authority, but I think that "bot support" can be doable with little or no coding.

                OSMT gives you some rudimentary ScriptedCharacter Vehicle support, using AIScripts. I think that one AIScript telling ScriptedCharacter to run around the trak might just do it. Using another AIScript similar to what I did in the test CoOp map (OSM-CoOpDeGras), we should be able to only spawn those extra racers if there aren't enough human players. (I'll have to give that one a little thought)

                The "Starting Gate" stuff would require a little code (perhaps just a simple Mutator envoked with a LevelGameRules actor), but that doesn't really sound hard at all. The logic might be something as simple as, if all Vehicles are being driven, teleport them to the starting gate and say "Go!".

                And I've got to say, seeing OSM Adventure taken this far away from standard map ideas is really neat. I love that people are beginning to really take a hold of OSMT. Good onya, M8.

                Comment


                  #9
                  Originally posted by SuperApe View Post
                  Sorry I haven't been able to help much at all. (baby care busy)
                  Hey matie no worries - if some day ( god forbid ), a little-Jim is visited upon the world I'm sure it'll the other way round.

                  OSMT gives you some rudimentary ScriptedCharacter Vehicle support, using AIScripts. I think that one AIScript telling ScriptedCharacter to run around the trak might just do it.

                  Using another AIScript similar to what I did in the test CoOp map (OSM-CoOpDeGras), we should be able to only spawn those extra racers if there aren't enough human players. (I'll have to give that one a little thought)
                  Ah-ha, good point.
                  If you look in the current beta, (and I think versions Tester5 to Tester9) they have a scripted trigger by the side of the track, that looks like it's doing nothing.

                  This was part of a script system that ran at map-load, and waited 20 secs before counting up the number of players via IfNumPlayers.
                  It then toggled "on" that many Vplayerstarts, for those players to spawn into.

                  I did it that way because if you respawn, you're likely to end up on a different team, so I didn't want to leave any un-used VPlayerStarts open, by only toggling on enough to serve the playerload.

                  It didn't work, as I feared it wouldn't - IfNumPlayers tots-up the number of players, and you don't count as a player if you've not spawned in yet, so I turned on all the VPlayerstarts by default.

                  You can though, see the Critical message displayed, when after 20 secs the script counts how many players there are & displays it.

                  That's the best system I'd come up with till now, Must Try Harder, jim.


                  The "Starting Gate" stuff would require a little code (perhaps just a simple Mutator envoked with a LevelGameRules actor), but that doesn't really sound hard at all. The logic might be something as simple as, if all Vehicles are being driven, teleport them to the starting gate and say "Go!".
                  I like that idea alot!
                  How about something like;

                  Code:
                  
                  //MicroMachines-RaceControlMutator
                  //Handles the start and end of races
                  
                  public bRaceBegun as Boolan   //<- True when Green light goes
                  public bRaceEnded as Boolen   //<- True when winner crosses line
                  
                  Private Function-Or-Other Tick() /
                  {
                  
                  /<- This sub keep cars unresponsive to input until RaceStart
                  If (RaceBegun = False) Then
                     For Each(Vehicle) In Map
                        If (Vehicle.Throttle != 0 Then)
                             Vehicle.Throttle == 0;
                        End If
                     Loop
                  End If
                  
                  Super.Tick()
                  }
                  
                  //<- hopefully it's ok to put this here in Tick(), because before the race starts there won't be much server-load or anything else going on
                  A horrible mangalation of vb, uscript and gibberish there, but hopefully you see what I mean.
                  I used Throttle with the anti-stick mechanism, it used a check against .Throttle to see if forwards was being pressed, otherwise it went ahead & teleported you back to an upright position.

                  (.Throttle; 1 = Forwards, 0 = Not pressing anything, and I would assume -1 = Backwards but I never tested it)

                  Basically I was thinking that I'd rather have it so you can see all the liddle cars on the grid, and when a green light goes, or a flag drops or whatever system the mapper wants goes off, all the cars become responsive to your controls, just like it was in the 8-bit game.

                  And I suppose you could use a function somewhere else that listened out for an Event, "RaceStart" say, from any actor capable of sending out Events.
                  That way, other mappers could use the same mutator, and would have the freedom to use any script or trigger system they want as long as they use it to send a "RaceStart" event - and as I've learned from OSM, that's a lot of freedom indeed.

                  Of course that's fine thinking, but doing it will be trickier I don't doubt .
                  I suppose I could look into one of those VehicleMutators, that swap out vehicles at map-load.
                  They must have some useful code for manipulating vehicles' properties remotely, plus I need to learn how to recognise active players waiting to spawn, are they called Controllers?
                  Bah, this is getting scarily close to programming.

                  And I've got to say, seeing OSM Adventure taken this far away from standard map ideas is really neat. I love that people are beginning to really take a hold of OSMT. Good onya, M8.
                  [/QUOTE]

                  Thanks dude.

                  Comment


                    #10
                    Can you make a seperate download for those benders I mean they look cool and all but I wanna put just the benders on my server.Oh and the maps is awesome

                    Comment


                      #11
                      The Bender meshes aren't mine, they were donated for this project by Sabby from UP (first post updated), if you want to use them you'd have to get in touch & ask him matie.

                      Ps: If you look closely though, you can see you would have problems using them in place of stock benders though, because the rear spoiler would collide with the rear gun.

                      Comment


                        #12
                        When I get some time, I'll go through your reply () and then go through your beta map. I believe I can see where to solve those problems you encountered. (and I'll give you a PM on a cleaned up version of that code you posted)

                        Comment


                          #13
                          Ah-ha, I've been working on that code myself.

                          I like the idea of this control-mutator, because it lets me control a whole bunch of systems in one actor, and to my mind (used to VB & it's modules) it seems "cleaner", than using a load of custom actors all placed in random parts of the map, all with their own custom code that takes ages to read & compare..

                          Anywhoo, here's what I've got so far, I'll run through it below;

                          Code:
                          //=============================================================================
                          // mutMicroMachinesRaceHandler.
                          // Designed to be placed in a GameLevelRules actor and distributed with map.
                          //
                          //=============================================================================
                          class mutMicroMachinesRaceHandler extends Mutator placeable;
                          
                          var bool bRaceBegun; //<- True when Green light goes off
                          var bool bRaceEnded; //<- True when winner crosses finish line
                          
                          var bool bPerformStartCheck; True // <- For overheads-management
                          
                          //<- This sub keep cars unresponsive to input until RaceBegun
                          simulated function Tick(float DeltaTime)
                          {
                          local Controller cPlayer; //<-Define a player container to test against
                          
                          If (bRaceBegun == False && bPerformStartCheck == True) //<- Cuts overhead, Bools test first, before bothering with Loop
                          {
                            For (cPlayer = Level.ControllerList; cPlayer != None; cPlayer = cPlayer.NextController) //<-Loop thru the players
                            {
                              If (cPlayer.Pawn != None) //<- Error check
                               {
                                  cPlayer.Pawn.GroundSpeed = 0; //<-Don't let car move
                               }
                            }
                          }
                          Else If (bRaceBegun == True && bPerformStartCheck == True)
                          {
                          For (cPlayer = Level.ControllerList; cPlayer != None; cPlayer = cPlayer.NextController) //<-Loop thru the players
                            {
                              If (cPlayer.Pawn != None) //<- Error check
                               {
                                  cPlayer.Pawn.GroundSpeed = cPlayer.Pawn.Default.GroundSpeed; //<-Let car move
                                  bPerformStartCheck = False; //<-Don't waste time doing this test any more
                               }
                            }
                          }
                          Else
                          //<-End Sub
                          
                          Super.Tick(DeltaTime);
                          }
                          Does this make sense? I tried to convert it into a series of Switch (Case Select) statements, but I buggered up the syntax for that..
                          Ok, this is just the first sub, but I'm sure you can see where it's going, quicker than it would take me to type it.

                          System relies on bRaceBegun, once that's true, then it loops through the PlayerControllers, finding their .Pawn, and setting it's .GroundSpeed to .Default.GroundSpeed.

                          After that it flicks bPerformStartCheck to False, so that the next & subsequent time this sub runs, it bottoms out on the last Else statement.
                          Does this make sense? I hoped that it can safely go in Tick(), because not much else is really going on, action-wise *before* the race.

                          The plan is for another sub within Tick(), to listen out for a hard-coded Event "RaceStart" I think, and for that sub to then set bRaceBegun to true.
                          Something like;

                          Code:
                          //<- This sub listens for Event "RaceStart" and then sets bRaceBegun == True
                          If (bPerformStartCheck == True) //<- So we can turn off this check too
                          {
                             Listen for event("RaceStart")
                                  bRaceBegun == True;
                             End Listening //<- Lols :p
                          }
                          The "Listen for Event" is the tricky bit here, I looked in the WaitForEvent scripted action code, but I had a hard time figuring out which are the important bits.

                          But ****** all that, just look at this - I'm writing a f/kking mutator! How mad is that!?

                          Comment


                            #14
                            Sweet, huh?
                            On my next break, I'll take a look at your current code block. Btw, Mutators aren't (shouldn't be) placeable.

                            Comment


                              #15
                              Ai support?

                              Comment

                              Working...
                              X