1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Two Factor Authentication is now available on BeyondUnreal Forums. To configure it, visit your Profile and look for the "Two Step Verification" option on the left side. We can send codes via email (may be slower) or you can set up any TOTP Authenticator app on your phone (Authy, Google Authenticator, etc) to deliver codes. It is highly recommended that you configure this to keep your account safe.

SP Framework feedback thread

Discussion in 'General mod talk' started by Parser, Aug 16, 2005.

  1. meowcat

    meowcat take a chance

    Joined:
    Jun 7, 2001
    Messages:
    798
    Likes Received:
    3
    Can intro and outro scenes be done though without recoding the SPGame?
    If I had played with more cutscenes, I might have a better idea of features to add, but being able to incorporate the intros and outros easily into SP would be cool.

    Is the consolecommand("savegame #") used for saving games yet? That might be handy for more elaborate sp mods.
     
    Last edited: Feb 12, 2006
  2. Kaithofis

    Kaithofis The Seldom Seen Kid

    Joined:
    Apr 20, 2004
    Messages:
    923
    Likes Received:
    0
    Last edited: Feb 12, 2006
  3. samus

    samus that guy

    Joined:
    Feb 25, 2006
    Messages:
    7
    Likes Received:
    0
    um...

    i can't get the a_audiotrigger to work. please help me please!:( :( :(
     
  4. Kingpin_DK

    Kingpin_DK New Member

    Joined:
    Mar 5, 2006
    Messages:
    1
    Likes Received:
    0
    This MOD is sooo cool
    but where can I set how many lives a player should have before the game is over, and is it possible to start the game without any weapons ?
    keep up the great work M8
     
  5. Endarire

    Endarire LemInc

    Joined:
    Mar 20, 2006
    Messages:
    8
    Likes Received:
    0
    First, you have done well, young one; Epic should have included this stuff in the boxed game.

    One thing I would greatly like is an automap; even Doom had one! Also, what about a graphical inventory a la Deus Ex?

    -EE
     
    Last edited: Apr 22, 2006
  6. Parser

    Parser Hello

    Joined:
    May 7, 2002
    Messages:
    1,531
    Likes Received:
    0
    Glad you fixed the problem Endarire!

    Just so you know, I'm working on a new version that will take these suggestions/comments into account and that will include some nifty new features such as:

     
  7. mattyd

    mattyd New Member

    Joined:
    Jul 18, 2008
    Messages:
    23
    Likes Received:
    0
     
  8. Rasie1

    Rasie1 New Member

    Joined:
    Sep 1, 2008
    Messages:
    2
    Likes Received:
    0
    maps

    where i can download maps for sp framework?
     
  9. Kaithofis

    Kaithofis The Seldom Seen Kid

    Joined:
    Apr 20, 2004
    Messages:
    923
    Likes Received:
    0
    There's a single player campaign made by the Antibot clan called SpAntibot (see their moddb profile here)

    I tried googling for a download link but had no luck. Their site appears to be down as well.
    I'm pretty sure I have backed it up somewhere though, so I could have a look and upload it if you want.
     
  10. glow_trance

    glow_trance New Member

    Joined:
    Dec 6, 2008
    Messages:
    17
    Likes Received:
    0
    I'm trying to find out where to begin to create a SP game, but I dont know if I'm just not understanding what I'm reading here or what.

    1) Are all the tools I need to make a SP in Kismet?

    There's the Single Player and the Single Player ROOT. I'm not understanding what's going on:hmm:
     
  11. Kaithofis

    Kaithofis The Seldom Seen Kid

    Joined:
    Apr 20, 2004
    Messages:
    923
    Likes Received:
    0
    It's quite simple: This is a modification for UT2004, not UT3. :p
     
  12. graykin

    graykin New Member

    Joined:
    Feb 27, 2013
    Messages:
    2
    Likes Received:
    0
    Wow, it's been a long time since I've been here.

    I have a serious question: Is there any available download for this mod anywhere?

    There are some maps I made for the SP-Framework that I would like to play with, but never bothered to keep a back-up of the mod itself. I've searched for an hour all over the Internetz but just simply could not find anything.

    I would really appreciate it if someone could provide a link if ANY exists.
     
  13. meowcat

    meowcat take a chance

    Joined:
    Jun 7, 2001
    Messages:
    798
    Likes Received:
    3
  14. graykin

    graykin New Member

    Joined:
    Feb 27, 2013
    Messages:
    2
    Likes Received:
    0
    Hmm...

    This might not be the latest version, because some of the maps I made for it crash with an error. :-/ Some of them DO, run, however.

    Still, I have a warm, fuzzy feeling inside now. Thanks for the upload! :)
     
  15. anartist

    anartist New Member

    Joined:
    Mar 4, 2013
    Messages:
    10
    Likes Received:
    0
    Thank you!!!!

    Oh god
    I thought I would go mad.
    Thank you for this.
    I needed the code to look at.

    It works very well
    Thanks

    I'm having a problem with the vehicles being locked, but I will try to figure it out

    I wanted to use bots as boss enemies and let them have vehicles in specific sections.

    1. Can I spawn a bot? I'll work out the path stuff, Just bots can drive and attack differently.

    2. I was before this using a blank game in Ued with Ash's VDM script from inside the vehicle deathmatch cubemap, but I did not like linking to his package and was trying to incorporate the 2 scripts inside into a separate package as scripts so I could remove the link to his map as a package. The reason I mention this is that Ash's script unlocks the vehicle when a game type is called *xDeathmatch( and you can change that to the SP gametype) but it also calls a second script that gives the deathmatch bots access to the vehicles and the flying nav paths.

    If I spawn a bot can it drive and hunt as per the paths it can access?
    If not, could someone look at these and see if they can fudge them into the framework and email me how?
    I'm sorry. I'm not really a coder. I can load up the source in notepad++ and read through and fudge this and that but I just want this one little thing and I can stop working with the guts and build off a solid base template level where everything works. From that point the core will be left and I can focus on the part I find interesting, making a story driven level.


    Before I had read that this allowed vehicles I imported that file and I was able to drive. For some reason as I place the vehicles without this I get a locked vehicle.

    Help! Thx!
    I KNOW that UDK is better.
    But UDK will absolutely not run on a celery 1.4 with 512 g and 64megs of integrated shared video ram.
    UT2k4 actually does run, and I needed the bot support.

    Does anyone else from the days of quake think that this hundred node shader crap is ridiculous?

    texture + normal map + material definition should be all you need.

    I saw a udk shader with more than 100 nodes for just this simple water effect. The green slime water in quake 1 worked for me...

    Here are the scripts from Ash's vehicle dm mod, which he states we can use so I am:

    //---------------------------------------------------
    // Vehicle DM Package V1.0 by Ash (A.N.)
    // This code fixes Vehicle DM AI and
    // enables ONS and AS VehicleFactories.
    //---------------------------------------------------
    class VDM_AI_Package extends Actor placeable;

    var float last_replicated_skins;

    function PreBeginPlay()
    {
    local ASVehicleFactory ASVF;
    local ONSVehicleFactory ONSVF;

    if(Level.Game != None)
    {
    log("*** Embedded Vehicle DM Package V1.0 by Ash");
    if ((Level.Game.Class == class'CodeBase.SPGame') &&
    (!class'CodeBase.SPGame'.default.bAllowVehicles)) ////Sorry, this was my work copy, it should read xDeathmatch on this line

    Level.Game.bAllowVehicles = true;
    }

    foreach DynamicActors( class'ASVehicleFactory', ASVF )
    {
    if(ASVF == None) continue;
    ASVF.VehicleTeam = 255;
    ASVF.bVehicleTeamLock = false;
    ASVF.bEnter_TeamUnlocks = true;
    }

    foreach DynamicActors( class'ONSVehicleFactory', ONSVF )
    {
    if(ONSVF == None) continue;
    ONSVF.Activate(0);
    }

    SetTimer(0.23, true);
    }

    function Timer()
    {
    local Vehicle V;
    local ONSVehicle ONS_V;

    if(Level.Game != None)
    {
    Level.Game.bAllowVehicles = true;
    for ( V=Level.Game.VehicleList; V!=None; V=V.NextVehicle )
    {
    if(V.Controller != None) continue;
    V.bTeamLocked = false;
    if((V.Team != 255) && V.IsVehicleEmpty())
    V.SetTeamNum(255);
    }
    if(Level.TimeSeconds - last_replicated_skins >= 2)
    {
    last_replicated_skins = Level.TimeSeconds;
    for ( V=Level.Game.VehicleList; V!=None; V=V.NextVehicle )
    {
    if((V.Team != 255) || (V.RepSkin != None)) continue;
    ONS_V = ONSVehicle(V);
    if((ONS_V != None) && (ONS_V.PassengerWeapons.Length > 0) &&
    (ONS_V.RedSkin != None))
    {
    ONS_V.RepSkin = ONS_V.RedSkin;
    }
    }
    }
    }
    }

    defaultproperties
    {
    }




    and the bot AI class extension to activate bot pathing in vehicles:

    //------------------------------------------------------------------------------
    // Vehicle DM Package V1.0 by Ash (A.N.)
    // Existing code for Unreal ® Tournament 2004 Copyright © 2004 Epic Games, Inc.
    //------------------------------------------------------------------------------
    class VDM_My_DMSquad extends DMSquad;

    function bool CheckVehicle(Bot B)
    {
    local Actor BestPath, BestEntry;
    local Vehicle V2, V;
    local float NewDist, BestDist, NewRating, BestRating, BaseRadius;

    if ( (Vehicle(B.Pawn) == None) && (Vehicle(B.RouteGoal) != None) && (NavigationPoint(B.Movetarget) != None) )
    {
    if ( VSize(B.Pawn.Location - B.RouteGoal.Location) < B.Pawn.CollisionRadius + Vehicle(B.RouteGoal).EntryRadius * 1.5 )
    B.MoveTarget = B.RouteGoal;
    }

    if ( (Vehicle(B.Pawn) == None) && (Vehicle(B.MoveTarget) != None) )
    {
    V = Vehicle(B.MoveTarget).FindEntryVehicle(B.Pawn);
    if ( V != None )
    {
    if ( V.GetVehicleBase() != None ) BaseRadius = V.GetVehicleBase().CollisionRadius;
    else BaseRadius = V.CollisionRadius;
    if ( VSize(B.Pawn.Location - V.Location) < B.Pawn.CollisionRadius + BaseRadius + V.EntryRadius )
    {
    V.UsedBy(B.Pawn);
    if ( Vehicle(B.Pawn) != None )
    BotEnteredVehicle(B);
    return false;
    }
    }
    }
    if ( B.LastSearchTime == Level.TimeSeconds ) return false;

    if ( Vehicle(B.Pawn) != None )
    {
    if ( !NeverBail(B.Pawn) )
    {
    if ( Vehicle(B.Pawn).StuckCount > 3 )
    {
    // vehicle is stuck
    Vehicle(B.Pawn).VehicleLostTime = Level.TimeSeconds + 20;
    Vehicle(B.Pawn).KDriverLeave(false);
    return false;
    }
    else if ( (B.Pawn.Health < B.Pawn.HealthMax*0.125) && !B.Pawn.bStationary && (B.Skill + B.Tactics > 4 + 7 * FRand()) )
    {
    //about to blow up, bail
    Vehicle(B.Pawn).VehicleLostTime = Level.TimeSeconds + 10;
    Vehicle(B.Pawn).KDriverLeave(false);
    return false;
    }
    }
    if (!B.Pawn.bStationary) return CheckSpecialVehicleObjectives(B);
    return false;
    }
    if (SpecialVehicleObjective(B.RouteGoal) != None && CheckSpecialVehicleObjectives(B))
    return true;

    BestDist = MaxVehicleDist(B.Pawn);

    if ( (Vehicle(B.RouteGoal) != None) && !Vehicle(B.RouteGoal).Occupied() && Vehicle(B.RouteGoal).IndependentVehicle() )
    V2 = vehicle(B.RouteGoal);

    // look for nearby vehicle
    if ( V2 == None )
    {
    for ( V=Level.Game.VehicleList; V!=None; V=V.NextVehicle )
    {
    NewDist = VSize(B.Pawn.Location - V.Location);
    if (NewDist < BestDist)
    {
    NewRating = VehicleDesireability(V, B);
    if (NewRating > 0)
    {
    NewRating += BestDist / NewDist * 0.01;
    if ( (NewRating > BestRating) && ( V.bTeamLocked || V.bKeyVehicle ||
    V.FastTrace(V.Location, B.Pawn.Location + B.Pawn.CollisionHeight * vect(0,0,1)) ) )
    {
    V2 = V;
    BestRating = NewRating;
    }
    }
    }
    }
    }

    if ( V2 == None ) return false;

    BestEntry = V2.GetMoveTargetFor(B.Pawn);

    if ( B.Pawn.ReachedDestination(BestEntry) )
    {
    V2.UsedBy(B.Pawn);
    return false;
    }

    if ( B.ActorReachable(BestEntry) )
    {
    B.RouteGoal = V2;
    B.MoveTarget = BestEntry;
    V2.SetReservation(B);
    B.GoalString = "Go to vehicle 1 "$BestEntry;
    B.SetAttractionState();
    return true;
    }

    BestPath = B.FindPathToward(BestEntry,B.Pawn.bCanPickupInventory);
    if ( BestPath != None )
    {
    B.RouteGoal = V2;
    V2.SetReservation(B);
    B.MoveTarget = BestPath;
    B.GoalString = "Go to vehicle 2 "$BestPath;
    B.SetAttractionState();
    return true;
    }

    if ( (VSize(BestEntry.Location - B.Pawn.Location) < 1200)
    && B.LineOfSightTo(BestEntry) )
    {
    B.RouteGoal = V2;
    V2.SetReservation(B);
    B.MoveTarget = BestEntry;
    B.GoalString = "Go to vehicle 3 "$BestEntry;
    B.SetAttractionState();
    return true;
    }
    return false;
    }

    //return a value indicating how useful this vehicle is to the bot
    function float VehicleDesireability(Vehicle V, Bot B)
    {
    local Vehicle V2;

    if(V == None) return 0;

    if((V.IsA('ONSWeaponPawn')) && (ONSWeaponPawn(V).VehicleBase != None))
    V2 = ONSWeaponPawn(V).VehicleBase;
    else V2 = V;
    if(V2.Occupied() || V2.HasOccupiedTurret()) return 0;

    if (V.Health < V.HealthMax * 0.125 && B.Enemy != None && B.EnemyVisible())
    return 0;
    V.TeamUseTime = 0;
    V.PlayerStartTime = 0;
    return V.BotDesireability(self, 255, None);
    }

    function bool AssignSquadResponsibility(Bot B)
    {
    if (CheckVehicle(B)) return true;

    return super.AssignSquadResponsibility(B);
    }

    defaultproperties
    {
    }


    Thank you to everyone who worked on the SP Framework, it is really a great tool, I am surprised there are not more sp mods
    but I guess people have gone to UDK
    My reasoning is
    more than half the world is still on ancient hardware
    This works on my rig
    and there are so many games that work using less than what we have here

    I just started system shock 2 again, now that it can have graphical upgrades with the newdark engine,
    look at what at what people made with that horrible editor, a game that we replay because hunting down a new maintenance tool to fix our only working gun was actually fun.

    Nobody has yet made an open source or source accessible inventory game for fps since system shock, other than powerhouse gpu hungry stuff like skyrim. At 500 megs System Shock 2 had an inventory. UDK Scaleform UI's are slow and sucky.
    I am rambling, yes, but think of what people would create if you gave them a really simple inventory with combine-able items.
    We could be gods...er...happy geeks.

    Ahh. Well. Could someone give me a heads up as to how I could make ALL the huds go away for my SP game? Plz?
    Not in my install settings, but in the level settings somehow, can I turn it all of? All of it? Other than messages.

    Sorry. Big wish list at the end. Thank you all for the tools in this SP Framework.
     
    Last edited: Mar 4, 2013
  16. anartist

    anartist New Member

    Joined:
    Mar 4, 2013
    Messages:
    10
    Likes Received:
    0
    I really like some of those things,
    the climbup volumes and stuff:D
     
  17. anartist

    anartist New Member

    Joined:
    Mar 4, 2013
    Messages:
    10
    Likes Received:
    0
    This is what I've been doing.

    Fire up ed with spf
    make a box, terrain, sunlight etc.
    replace player start with spp and make gametype to the sp one
    add a vehicle, it starts locked
    Open class browser
    open pkg >choose Ash's vehicle dm cubemap map file .ut2
    actors should now have the vdm ai script
    place it somewhere

    make sure the ash's cubemap map file is in the same dir as your project map
    the vehicle is unlocked and supposedly, when I figure out how to spawn bots by triggers, the bots will use the navmesh and hate the player and try to drive vehicles on the nav mesh.

    but I am too tired for that.

    and yes,
    I know the last time someone posted in this thread was probably over 2 years ago
    but its more interesting than jigsaw puzzles, crosswords, television, or facecrack.
     
  18. anartist

    anartist New Member

    Joined:
    Mar 4, 2013
    Messages:
    10
    Likes Received:
    0
    I am so much happier.
    weapons, turrets, monsters, added some other monster packs from Invasion site and they load, all vehicles work, have the interactivity code for keycards and basic SPF inventory/triggers/spawn scripts, onsreen msgs.

    I'm good to go.
    almost.
    It took me 3-4 days to get this right but I have multiple bkps of a working terrain SP map.

    Thought at first some monsters were not appearing, but when I flew down and landed I realized it was just because I have such a huge terrain. They were there.
    They swarmed me and killed me.

    love the classic sniper rifle inclusion. don't need binoculars if you have a good scope. Nice scope too.

    I have at least 3o actors in a 40k room with landscape and vehicles
    almost no lag on my crap rig
    decent
    With section segmenting and portals and spawning points I should be able to quadruple or more that per level

    trying to research bot spawning by triggers but getting like 6k/s from inet right now.

    game designers + poverty = nothing else to do but continue...
     
    Last edited: Mar 4, 2013
  19. meowcat

    meowcat take a chance

    Joined:
    Jun 7, 2001
    Messages:
    798
    Likes Received:
    3
    @ anartist: It is possible to use Bot Controlled vehicles as boss characters, but it will probably require additional UScript code (as a side project I've semi-implemented the Hummer Boss from Turok the Dinosaur Hunter (N64), and also been thinking about how to make the Harrier Boss from MGS2 and the SlaveI boss from SW:Shadows of the Empire (N64)).

    I've not played with the SP code too much, but I had tried my hand at making some single player game enemies. Here is the code I've used in one of my boss vehicle characters. I'm posting this specfically to show how I spawned the enemy vehicle driver/AI:

    First here is the code to spawn a driver for the boss vehicle, and have them enter the vehicle. I've left out some bits of code and default properties related to the look and weapons of the hummer boss:
    Code:
    class ev_HummerBoss extends ONSWheeledCraft; //ONSPRV
    
    /* maybe spawn additional controllers later, do this in PostNetBeginPlay() because
    the weapons array is filled during ONSVehicle.PostNetBeginPlay(). To have the weapon
    be 'activ(e)'-ated and ready to use it must exist during the call to KDriverEnter,
    otherwise the AI will not be able to shoot
    */
    simulated function PostNetBeginPlay(){
        local controller MyController;
        local Pawn MyDriver;
    
    	super.PostNetBeginPlay();
        // add driver so that the native ONSWheeledCraft ProcessInput function will actually apply the desired driving code
    	if ( Role == Role_Authority ){
    		MyController = spawn(AutoTurretControllerClass);
            // this pawn class has collision off by default so that we don't have to offset location when spawning anymore
            MyDriver = Spawn(class'enemy_VehicleDriver',,,);
            if ( MyController!=None && MyDriver!=None){
    			MyController.Pawn = MyDriver;
    			MyDriver.Controller = MyController; // link 'em up sort of
                KDriverEnter(MyDriver);
    		}
    	}
    }
    
    function bool TryToDrive(Pawn P)
    {
        return false;
    }
    
    defaultproperties
    {
    	AutoTurretControllerClass=class'EController_Hummer'
    	Team=6
    	bDriverCannotLeaveVehicle=true
        Mesh=Mesh'EnemyHummer_Mesh'
    	VehiclePositionString="in a HMMWV"
    	VehicleNameString="HMMWV"
    
    The Driver is just a dummy pawn basically (I've set the mesh and skin properties so that it matches my YARM mod's theme):
    Code:
    /* This class exists only so that there is a "YARM like" character to control
    enemy vehicles, since a driver is required by a lot on the ONS vehicle native code
    
    Also, turn off this pawn's collision to allow for easier spawning
    */
    class enemy_VehicleDriver extends xPawn;//ymHuman_Pawn;
    
    // NOTE:  This is called in/from xPlayer in Possess, and normally on the clients via
    // PostNetReceive
    simulated function Setup(xUtil.PlayerRecord rec, optional bool bLoadNow){
        //log("Setup for"$self@GetHumanReadableName());
        Species = default.species;//rec.Species;
    	RagdollOverride = default.Species.static.GetRagSkelName("dummystring");//rec.Ragdoll;
    
    	if ( Species.static.Setup(self,rec) )
    		ResetPhysicsBasedAnim();
    }
    
    simulated function StartDeRes(){
       bCollideWorld=false;
    }
    simulated function TickDeRes(float DeltaTime);
    
    // make this real simple so that we don't get a bunch of bodies lying around
    simulated event PlayDying(class<DamageType> DamageType, vector HitLoc){
    	Destroy();
    }
    
    defaultproperties
    {
        Mesh=Mesh'BS_UrbanRecon_Alpha'
        Skins(0)=Texture'BadSoldier_BlackSkin'
        Skins(1)=Texture'torso_SOHGT_olive'
        Skins(2)=Texture'Bala_HeadBaseOP_BlackSkin'
    
        MenuName="Vehicle Driver"
        Species=class'SPECIES_TDman'
        MovementAnims(0)=RunF_y // so that the AssignInitialPose function will not throw an accessed none
        // don't collide so it can be spawned anywhere
        bCollideActors=false
        bCollideWorld=false
        bBlockActors=false
        bProjTarget=false
    
        RequiredEquipment(0)=""
        RequiredEquipment(1)=""
    }
    
    The enemy vehicle controller (shown as EController_Hummer in the vehicle code above) is basically just an extremely cut-down version of the MonsterController/Bot code. It always uses the vehicle charging state when attacking. It only does three things: Attack the player, Idle in one spot, and Roam around the map by selecting random RoadPathNodes and then traveling to them.

    And yes I agree about the great simplicity of simply modding UT2k4 rather than having to generate everything in UDK.
     
  20. anartist

    anartist New Member

    Joined:
    Mar 4, 2013
    Messages:
    10
    Likes Received:
    0
    I am wondering if the SPFramework will install into Warpath.
    I know Warpath is crappy. But it is Ued 2.5+ and has normal maps. The whole setup is identical to UT2k4. I'm running them side by side since no one will play a Warpath level, but for my own design purposes I might make a number of things in warpath. Really crappy game. But normal maps could make it worth it.
     

Share This Page