Aerosol, can you actually play the test map? Can you boot up UDK itself? Because I had the same problem except my graphics card is an Nvidia 590, it's more than capable and yet I couldn't compile the script. It doesn't matter to me anymore, but it would be interesting if anyone had a solution.
Oh, if that's the case, it can still be saved. Set the graphic details to minimum in [UDK Directory]/UDKGame/Config/UDKSystemSetting.ini I've mentioned it on the previous post Resolution plays BIG ROLE, or so it is in my experience BTW, I finally created a new character. I used this guy since I've already done him a long time ago (Tails' hand is still not perfectly rigged and I haven't done Sonic Heroes' Sonic ripped model yet) BUG 1 : Side-stepping effect is forever BUG 2 : Twice spiral-track epic fails. After 9:00 and before ending And I did not modify the movement functions at all. Almost straight copy from PawnSonic, disabling super transformation by nuking the function, and adding foreach then hurt pawn upon stomp landing
Okay, I detected several problems : 1. Speeding/Using boost on spline-locked section can break the track. I've tested Sonic on that spiral route. First time without boost gets him on route, except he can't hit the dash rings. But the second time using boost, he fell off the spiral and continuously use the camera from the spiral section, causing break on the game (I can't rotate my camera). 2. Sonic's energy regenerates with rings. My OC, on the other hand... doesn't. He uses almost the same codes, using the same superclass. I think I should extend him from Sonic, and do the same to the others... 3. The twisted track requires experienced camera navigation, which is quite a headache since I can't really navigate the pawn well without good camera navigation. Whenever going there without speed shoes or magnetic shoes, slowly the camera turns sideways. 4. Seems that boosts are required to go through loops, especially with slow pawn/character not as fast as Sonic 5. SpinDash can be set to unavailable, but it doesn't stop the character from rolling when running (run fast, then press crouch). This can get the player to get stuck in place with low ceiling (like that section in the test map) Sorry if I sound rude. Can you try fixing these? My suggestion for future releases would be : 1. Update the player pawn, so custom character creation would be more compatible. I haven't checked the master class, but if it doesn't have energy, I think you should add it, since most Sonic characters seem to use energy, though they might not have Mach Dash like Sonic does. I won't be sure since I'm not able to play many Sonic games, with my limited platform. 2. Try to make the spline actors more accurate in readjusting, or give an option to determine how tight the route should be (so off-route is still available for some sections)
Tough way to get here, huh? Well, I'm not Xak, but I think this will answer your question Anyway, trying to create an extension of the source codes, to support custom characters. I'm trying to simplify the codes, so people will know what code they should edit to make a custom special ability SGDKX_PlayerPawn Spoiler Code (Text): /* * SGDKX_PlayerPawn : Extended from PawnSonic to allow several properties done in custom characters. * Currently, the pickups and such are hardcoded for Sonic only... * */ class SGDKX_PlayerPawn extends PawnSonic ClassGroup(SGDK,Invisible,PawnTemplates,Extended); var(Extended,Template,Misc) bool bScaleformHUD; //Using Scaleform HUD? /** * Called when the pawn lands on level geometry while falling. * @param HitNormal the surface normal of the actor/level geometry landed on * @param FloorActor the actor landed on */ event Landed(vector HitNormal,Actor FloorActor) { super(SGDKPlayerPawn).landed(HitNormal, FloorActor); //Reverts the landed function to the SGDKPlayerPawn standard } /** * Draws 2D graphics on the HUD. * @param TheHud the HUD */ function HudGraphicsDraw(SGDKHud TheHud) { if(!bScaleformHUD) super(SGDKPlayerPawn).HudGraphicsDraw(TheHud); } function SpecialMove(bool bSpecial) { super(SGDKPlayerPawn).SpecialMove(bSpecial); } /** * Sets or unsets rolling on ground mode and adjusts on ground speed. * @param bRoll sets/unsets rolling on ground mode */ function Roll(bool bRoll) { if(bCanSpinDash) // Only roll if able to spindash, to prevent getting stuck in low-ceiling places Super.Roll(bRoll); } Also give the rolling ability a little condition, so if no spindash, then no roll as well. And if anyone's wondering, here's my OC's script Spoiler Code (Text): /* * PawnLev : Levinski's scripts * * */ class PawnLev extends SGDKX_PlayerPawn; /**The Pressure Land area radius.*/ var(Extended,Template,Skills) float PressureLandRadius; /** * Called immediately before gameplay begins. */ simulated event PreBeginPlay() { local PawnLev P; super.PreBeginPlay(); if (!IsTemplate() && PawnTemplate != none) { P = PawnLev(PawnTemplate); PressureLandRadius = P.PressureLandRadius; //Simplified. Other things are done in } } /** * Called when the pawn lands on level geometry while falling. * @param HitNormal the surface normal of the actor/level geometry landed on * @param FloorActor the actor landed on */ event Landed(vector HitNormal,Actor FloorActor) { local SGDKEnemyPawn E; if (SpecialMoveId == 1 || SpecialMoveId == 2 || SpecialMoveId == 4) { if (SpecialMoveId == 4) { foreach CollidingActors(class'SGDKEnemyPawn',E,PressureLandRadius,Location,true) { HurtPawn(E); } } UndoSpecialMove(); } super.Landed(HitNormal,FloorActor); if (bHoldingSpecialMove && !WillLeaveGround() && !bDodging && !bDucking && !bPushing && !bRolling && !bSkidding && GroundSpecialMove()) LastSpecialMoveTime = WorldInfo.TimeSeconds; } /** * Called whenever time passes. * @param DeltaTime contains the amount of time in seconds that has passed since the last Tick */ event Tick(float DeltaTime) { local bool bMoved; local float Dist,ChosenDist; local RingActor Ring,ChosenRing; super.Tick(DeltaTime); if (Health > 0) { if (bDodging) { bMoved = false; if (Health > 0 && !bRolling && IsTouchingGround() && AboveWalkingSpeed()) { if (CurrentDir == DCLICK_Left) bMoved = MoveSmooth((vect(0,-1,0) >> DesiredMeshRotation) * (QuickStepSpeed * DeltaTime)); else if (CurrentDir == DCLICK_Right) bMoved = MoveSmooth((vect(0,1,0) >> DesiredMeshRotation) * (QuickStepSpeed * DeltaTime)); } if (!bMoved) ClearTimer(NameOf(UnDodge)); bDodging = bMoved; } else { if (SpecialMoveId != 5) { MachDashDischargeRate = default.MachDashDischargeRate; if (MachDashEnergy < MachDashMaxRecharge) { MachDashRechargeRate += DeltaTime * 0.25; MachDashEnergy = FMin(MachDashEnergy + MachDashRechargeRate * DeltaTime,MachDashMaxRecharge); } else MachDashRechargeRate = default.MachDashRechargeRate; } switch (SpecialMoveId) { case 2: if (HomingTarget != none && DestroyableEntity(HomingTarget).IsHomingTarget() && WorldInfo.TimeSeconds - LastHomingDashTime < 1.0 && VSizeSq(HomingTarget.Location - Location) > 10000.0 && FastTrace(Location,HomingTarget.Location)) { SetVelocity(Normal(DestroyableEntity(HomingTarget).GetHomingLocation(self) - Location) * HomingDashSpeed); SetPhysics(PHYS_Falling); } else UndoSpecialMove(); break; case 3: ChosenDist = Square(LightDashRadius) + 10000.0; foreach VisibleCollidingActors(class'RingActor',Ring,LightDashRadius,Location,true) { if (Ring.bLightDash && FastTrace(Location,Ring.Location)) { Dist = VSizeSq(Ring.Location - Location); if (Dist < ChosenDist) { ChosenRing = Ring; ChosenDist = Dist; } } } if (ChosenRing != none) { SetVelocity(Normal(ChosenRing.Location - Location) * LightDashSpeed); SetPhysics(PHYS_Falling); } else UndoSpecialMove(); break; case 5: MachDashDischargeRate = FMax(5.0,MachDashDischargeRate - DeltaTime * 2.0); MachDashRechargeRate = default.MachDashRechargeRate; if (!bSuperForm) MachDashEnergy = FMax(0.0,MachDashEnergy - MachDashDischargeRate * DeltaTime); if (bRolling || MachDashEnergy == 0.0 || !IsTouchingGround() || VSizeSq(GetVelocity()) < Square(ApexGroundSpeed * 0.2)) UndoSpecialMove(); else { SetGroundSpeed(ApexGroundSpeed); HighSpeedBoost(1.0,false); GroundSpeed = RealGroundSpeed; if (Physics == PHYS_Walking && Floor.Z < 1.0 && !IsZero(Velocity)) GroundSpeed *= Normal(Velocity) dot Normal(GetVelocity()); if (bMachDashMagnetizes) MagnetizeNearbyActors(MachDashMagneticRadius); } } } } } /** * Player pawn wants to perform an aerial special move: Jump Dash, Homing Dash or Stomp. * @param ButtonId identification of the (un)pressed button; 0 is Jump, 1 is UnJump, 2 is Duck, 3 is UnDuck, * 4 is SpecialMove, 5 is UnSpecialMove * @return true if pawn performed the aerial special move */ function bool AirSpecialMove(byte ButtonId = 0) { local Actor TargetActor; local vector Dir; switch (ButtonId) { case 4: if (!bSuperForm && Health > 50 && HasJumped() && HasAllEmeralds()) { SuperTransformation(); return true; } case 0: if (MultiJumpRemaining > 0 && !IsZero(Velocity)) { if (bCanHomingDash && (bReadyToDoubleJump || !bHomingDashNeedsJump)) TargetActor = FindHomingTarget(); if (TargetActor != none) { bReadyToDoubleJump = true; GravityScale *= DashGravityScale; HomingTarget = TargetActor; LastHomingDashTime = WorldInfo.TimeSeconds; SpecialMoveId = 2; SetVelocity(Normal(DestroyableEntity(HomingTarget).GetHomingLocation(self) - Location) * HomingDashSpeed); SGDKPlayerController(Controller).IgnoreDirInput(true); SoundGroupClass.static.PlayDoubleJumpSound(self); if (NormalHomingDashParticles != none) { SpecialMoveEmitter = Spawn(class'SGDKEmitter',self,,Location,GetRotation()); SpecialMoveEmitter.SetTemplate(NormalHomingDashParticles,false); AttachToRoot(SpecialMoveEmitter); } return true; } else if (bCanJumpDash && (bReadyToDoubleJump || !bJumpDashNeedsJump)) { bReadyToDoubleJump = true; GravityScale *= DashGravityScale; SpecialMoveId = 1; Dir = SGDKPlayerController(Controller).GetPressedDirection(true, ConstrainedMovement == CM_Classic2dot5d); if (Dir.X == 0.0 && Dir.Y == 0.0) { if (ConstrainedMovement == CM_None) Dir = vector(DesiredViewRotation); else Dir = vector(DesiredMeshRotation); } Dir.Z = 0.0; SetVelocity(Normal(Dir) * JumpDashSpeed); SGDKPlayerController(Controller).IgnoreDirInput(true); SetTimer(JumpDashDurationTime,false,NameOf(UndoSpecialMove)); SoundGroupClass.static.PlayDoubleJumpSound(self); if (NormalJumpDashParticles != none) { SpecialMoveEmitter = Spawn(class'SGDKEmitter',self,,Location,GetRotation()); SpecialMoveEmitter.SetTemplate(NormalJumpDashParticles,false); AttachToRoot(SpecialMoveEmitter); } return true; } } break; case 3: if (bCanStomp && (bReadyToDoubleJump || !bStompNeedsJump) && MultiJumpRemaining > 0 && !IsZero(Velocity)) { SpecialMoveId = 4; bReadyToDoubleJump = false; Dir = GetVelocity() * 0.05; if (!bReverseGravity) Dir.Z = -StompSpeed; else Dir.Z = StompSpeed; SetVelocity(Dir); AirControl = 0.0; SoundGroupClass.static.PlayDoubleJumpSound(self); if (NormalStompAParticles != none) { SpecialMoveEmitter = Spawn(class'SGDKEmitter',self,,Location,GetRotation()); SpecialMoveEmitter.SetTemplate(NormalStompAParticles,false); AttachToRoot(SpecialMoveEmitter); } return true; } } return false; } /** * Player pawn performs an on ground special move: Mach Dash, Speed Dash or Light Dash. * @return true if pawn performed the on ground special move */ function bool GroundSpecialMove() { if (!bDodging && !bDucking && !bPushing && !bRolling && !bSkidding && SpecialMoveId == 0) { if (bCanMachDash && (!bCanSpeedDash || VSizeSq(GetVelocity()) > Square(ApexGroundSpeed * 0.2)) && ((!AboveWalkingSpeed() && MachDashEnergy >= MachDashDischargeRate) || (AboveWalkingSpeed() && MachDashEnergy >= MachDashDischargeRate * 0.1))) { SpecialMoveId = 5; if (!bSuperForm) MachDashEnergy = FMax(0.0,MachDashEnergy - MachDashDischargeRate * 0.5); if (ConstrainedMovement == CM_None) ForceRotation(GetRotation(),true); HighSpeedBoost(1.0,false); PlaySound(SpeedBoostSound,false,true); if (NormalMachDashParticles != none) { SpecialMoveEmitter = Spawn(class'SGDKEmitter',self,,Location,GetRotation()); SpecialMoveEmitter.SetTemplate(NormalMachDashParticles,false); AttachToRoot(SpecialMoveEmitter,,,true); } SetTimer(0.3,false,NameOf(PlayMachDashSound)); return true; } else if (bCanSpeedDash && !AboveWalkingSpeed() && (bAntiGravityMode || Physics == PHYS_Walking || FloorDotAngle > WalkableFloorZ)) { HighSpeedBoost(0.65,ConstrainedMovement != CM_None); return true; } } return false; } /** * Draws 2D graphics on the HUD. * @param TheHud the HUD */ function HudGraphicsDraw(SGDKHud TheHud) { local vector2d Position; local int Energy,Number; local Actor A; local vector V; if (bCanMachDash) { //Draw Mach Dash stuff. Position.X = MachDashHudPosition.X * TheHud.ResolutionScaleX; Position.Y = MachDashHudPosition.Y * TheHud.ResolutionScale; TheHud.ResolutionScale *= TheHud.HudScale; TheHud.Canvas.DrawColor = TheHud.WhiteColor; //Draw the black background. TheHud.Canvas.SetPos(Position.X,Position.Y); TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,TheHud.BackgroundSCoords.UL * TheHud.ResolutionScale, TheHud.BackgroundSCoords.VL * TheHud.ResolutionScale,TheHud.BackgroundSCoords.U, TheHud.BackgroundSCoords.V,TheHud.BackgroundSCoords.UL,TheHud.BackgroundSCoords.VL); //Draw the icon. TheHud.Canvas.SetPos(Position.X + (TheHud.BackgroundSCoords.UL - 88.0) * TheHud.ResolutionScale, Position.Y - 20.0 * TheHud.ResolutionScale); if (!bSuperForm) TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,TheHud.NormalIconCoords.UL * TheHud.ResolutionScale, TheHud.NormalIconCoords.VL * TheHud.ResolutionScale,TheHud.NormalIconCoords.U, TheHud.NormalIconCoords.V,TheHud.NormalIconCoords.UL,TheHud.NormalIconCoords.VL); else TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,TheHud.SuperIconCoords.UL * TheHud.ResolutionScale, TheHud.SuperIconCoords.VL * TheHud.ResolutionScale,TheHud.SuperIconCoords.U, TheHud.SuperIconCoords.V,TheHud.SuperIconCoords.UL,TheHud.SuperIconCoords.VL); Energy = MachDashEnergy; //Draw the energy icon. TheHud.Canvas.SetPos(Position.X + 12.0 * TheHud.ResolutionScale,Position.Y - 16.0 * TheHud.ResolutionScale); TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,MachDashHudCoords.UL * TheHud.ResolutionScale, MachDashHudCoords.VL * TheHud.ResolutionScale,MachDashHudCoords.U, MachDashHudCoords.V,MachDashHudCoords.UL,MachDashHudCoords.VL); //Draw the energy digits. Position.X += (TheHud.BackgroundSCoords.UL - 88.0) * TheHud.ResolutionScale; Position.Y -= 4.0 * TheHud.ResolutionScale; TheHud.Canvas.SetPos(Position.X,Position.Y); Number = (Energy > 9) ? (Energy - ((Energy / 10) * 10)) : Energy; TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,TheHud.NumbersCoords.UL * TheHud.ResolutionScale, TheHud.NumbersCoords.VL * TheHud.ResolutionScale,TheHud.NumbersCoords.U + Number * 36.0, TheHud.NumbersCoords.V,TheHud.NumbersCoords.UL,TheHud.NumbersCoords.VL); if (Energy > 9) { Position.X -= TheHud.NumbersCoords.UL * TheHud.ResolutionScale; TheHud.Canvas.SetPos(Position.X,Position.Y); Number = (Energy > 99) ? ((Energy - ((Energy / 100) * 100)) / 10) : (Energy / 10); TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,TheHud.NumbersCoords.UL * TheHud.ResolutionScale, TheHud.NumbersCoords.VL * TheHud.ResolutionScale,TheHud.NumbersCoords.U + Number * 36.0, TheHud.NumbersCoords.V,TheHud.NumbersCoords.UL,TheHud.NumbersCoords.VL); if (Energy > 99) { Position.X -= TheHud.NumbersCoords.UL * TheHud.ResolutionScale; TheHud.Canvas.SetPos(Position.X,Position.Y); Number = 1; TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,TheHud.NumbersCoords.UL * TheHud.ResolutionScale, TheHud.NumbersCoords.VL * TheHud.ResolutionScale,TheHud.NumbersCoords.U + Number * 36.0, TheHud.NumbersCoords.V,TheHud.NumbersCoords.UL,TheHud.NumbersCoords.VL); } } TheHud.ResolutionScale /= TheHud.HudScale; TheHud.LivesPosition = TheHud.default.LivesPosition; } else TheHud.LivesPosition = MachDashHudPosition; if (bCanHomingDash && !bDisableSpecialMoves && Physics == PHYS_Falling && MultiJumpRemaining > 0 && (bReadyToDoubleJump || !bHomingDashNeedsJump) && !IsZero(Velocity)) { A = FindHomingTarget(); if (A != none) { V = TheHud.Canvas.Project(DestroyableEntity(A).GetHomingLocation(self)); TheHud.Canvas.DrawColor = TheHud.WhiteColor; //Draw the marker. TheHud.Canvas.SetPos(V.X - HomingDashHudCoords.UL * TheHud.ResolutionScale * 0.5, V.Y - HomingDashHudCoords.VL * TheHud.ResolutionScale * 0.5); TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,HomingDashHudCoords.UL * TheHud.ResolutionScale, HomingDashHudCoords.VL * TheHud.ResolutionScale,HomingDashHudCoords.U, HomingDashHudCoords.V,HomingDashHudCoords.UL,HomingDashHudCoords.VL); } } super.HudGraphicsDraw(TheHud); } function bool NoActionPerformed(byte ButtonId = 0) { //Avoid two consecutive special moves that are too close in time. if (!bDisableSpecialMoves && WorldInfo.TimeSeconds - LastSpecialMoveTime > MinTimeSpecialMoves) { //Try to perform aerial special move now. if (Physics == PHYS_Falling && AirSpecialMove(ButtonId)) { DoubleJumped(); return false; } else //Try to perform on ground special move now. if (ButtonId == 4 && IsTouchingGround() && GroundSpecialMove()) { LastSpecialMoveTime = WorldInfo.TimeSeconds; return false; } } if (!bHoldingSpecialMove && SpecialMoveId == 5) { //Cancel Mach Dash. UndoSpecialMove(); return false; } return true; } /** * Called when the player presses or releases the SpecialMove key/button. * @param bSpecial true if player wants to perform a special move, false if player has released the button/key */ function SpecialMove(bool bSpecial) { if (!bDisableSpecialMoves) { bHoldingSpecialMove = bSpecial; super.SpecialMove(bSpecial); } else bHoldingSpecialMove = false; } /** * Cancels special moves. */ function UndoSpecialMove() { local SGDKEmitter StompEmitter; switch (SpecialMoveId) { case 1: ClearTimer(NameOf(UndoSpecialMove)); GravityScale /= DashGravityScale; if (Physics == PHYS_Falling) bReadyToDoubleJump = false; if (bJumpDashHalvesSpeed) SetVelocity(GetVelocity() * 0.5); SGDKPlayerController(Controller).IgnoreDirInput(false); break; case 2: GravityScale /= DashGravityScale; HomingTarget = none; LastHomingDashTime = WorldInfo.TimeSeconds; SGDKPlayerController(Controller).IgnoreDirInput(false); break; case 3: SGDKPlayerController(Controller).IgnoreDirInput(false); break; case 4: if (NormalStompBParticles != none) { StompEmitter = Spawn(class'SGDKEmitter',self,,Location,GetRotation()); StompEmitter.SetTemplate(NormalStompBParticles,true); } break; case 5: if (IsTimerActive(NameOf(PlayMachDashSound))) ClearTimer(NameOf(PlayMachDashSound)); else MachDashSound.FadeOut(1.0,0.0); } if (SpecialMoveEmitter != none) { DetachFromRoot(SpecialMoveEmitter); SpecialMoveEmitter.DelayedDestroy(); SpecialMoveEmitter = none; } SpecialMoveId = 0; } defaultproperties { Begin Object Name=WPawnSkeletalMeshComponent AnimSets(0)=AnimSet'CH_Grass.SGDK.K_SGDK_Grass' AnimTreeTemplate=AnimTree'CH_Grass.SGDK.AT_SGDK_Grass' PhysicsAsset=PhysicsAsset'CH_Grass.SKM_Grass_v2_0_Physics' SkeletalMesh=SkeletalMesh'CH_Grass.SGDK.SKM_Grass_v2_1_Root' Scale=1 End Object Mesh=WPawnSkeletalMeshComponent VisibleMesh=WPawnSkeletalMeshComponent Begin Object Name=MachDashAudioComponent SoundCue=SoundCue'SonicGDKPackage.Sounds.MachDashSoundCue' bAllowSpatialization=false End Object MachDashSound=MachDashAudioComponent /* //Data associated to standard physics. PhysicsData[0].RunningAcceleration = 500.0; // 40% of RunningReferenceSpeed; takes 2.5 seconds to reach 1300. PhysicsData[0].RunningBrakingStrength = 3250.0; //250% of RunningReferenceSpeed. PhysicsData[0].RunningGroundFriction = 500.0; // 40% of RunningReferenceSpeed. PhysicsData[0].RunningReferenceSpeed = 1300.0; PhysicsData[0].RunningSlopeBonus = 325.0; // 65% of RunningGroundFriction. PhysicsData[0].RunningTopSpeed = 2000.0; PhysicsData[0].RollingBrakingStrength = 1800.0; //100% of RollingReferenceSpeed. PhysicsData[0].RollingGroundFriction = 300.0; // 16% of RollingReferenceSpeed. PhysicsData[0].RollingSlopeDownBonus = 900.0; //300% of RollingGroundFriction. PhysicsData[0].RollingSlopeUpBonus = 225.0; // 25% of RollingSlopeDownBonus. PhysicsData[0].RollingTopSpeed = 2500.0; PhysicsData[0].FallingAirAcceleration = 500.0; PhysicsData[0].FallingGravityAccel = 520.0; PhysicsData[0].FallingReferenceSpeed = 650.0; PhysicsData[0].JumpingNormalStrength = 650.0; PhysicsData[0].JumpingTopStrength = 1100.0; //170% of JumpingNormalStrength. //Data associated to underwater physics. PhysicsData[1].RunningAcceleration = PhysicsData[0].RunningAcceleration * 0.75; PhysicsData[1].RunningBrakingStrength = PhysicsData[0].RunningBrakingStrength * 0.75; PhysicsData[1].RunningGroundFriction = PhysicsData[0].RunningGroundFriction * 0.75; PhysicsData[1].RunningReferenceSpeed = PhysicsData[0].RunningReferenceSpeed * 0.75; PhysicsData[1].RunningSlopeBonus = PhysicsData[0].RunningSlopeBonus * 0.75; PhysicsData[1].RunningTopSpeed = PhysicsData[0].RunningTopSpeed * 0.75; PhysicsData[1].RollingBrakingStrength = PhysicsData[0].RollingBrakingStrength * 0.75; PhysicsData[1].RollingGroundFriction = PhysicsData[0].RollingGroundFriction; PhysicsData[1].RollingSlopeDownBonus = PhysicsData[0].RollingSlopeDownBonus * 0.75; PhysicsData[1].RollingSlopeUpBonus = PhysicsData[0].RollingSlopeUpBonus * 0.75; PhysicsData[1].RollingTopSpeed = PhysicsData[0].RollingTopSpeed * 0.75; PhysicsData[1].FallingAirAcceleration = PhysicsData[0].FallingAirAcceleration * 0.75; PhysicsData[1].FallingGravityAccel = PhysicsData[0].FallingGravityAccel * 0.5; PhysicsData[1].FallingReferenceSpeed = PhysicsData[0].FallingReferenceSpeed * 0.75; PhysicsData[1].JumpingNormalStrength = PhysicsData[0].JumpingNormalStrength * 0.85; PhysicsData[1].JumpingTopStrength = PhysicsData[0].JumpingTopStrength * 0.85; //Data associated to super form. PhysicsData[2].RunningAcceleration = 1000.0; //200% of standard RunningAcceleration. PhysicsData[2].RunningBrakingStrength = 6500.0; //200% of standard RunningBrakingStrength. PhysicsData[2].RunningGroundFriction = 750.0; //150% of standard RunningGroundFriction. PhysicsData[2].RunningReferenceSpeed = 1700.0; //130% of standard RunningReferenceSpeed. PhysicsData[2].RunningSlopeBonus = 325.0; //100% of standard RunningSlopeBonus. PhysicsData[2].RunningTopSpeed = 2300.0; //115% of standard RunningTopSpeed. PhysicsData[2].RollingBrakingStrength = 1800.0; //100% of standard RollingReferenceSpeed. PhysicsData[2].RollingGroundFriction = 300.0; //100% of standard RollingGroundFriction. PhysicsData[2].RollingSlopeDownBonus = 900.0; //100% of standard RollingSlopeDownBonus. PhysicsData[2].RollingSlopeUpBonus = 225.0; //100% of standard RollingSlopeUpBonus. PhysicsData[2].RollingTopSpeed = 2500.0; //100% of standard RollingTopSpeed. PhysicsData[2].FallingAirAcceleration = 1000.0; //200% of standard FallingAirAcceleration. PhysicsData[2].FallingGravityAccel = 520.0; //100% of standard FallingGravityAccel. PhysicsData[2].FallingReferenceSpeed = 650.0; //100% of standard FallingReferenceSpeed. PhysicsData[2].JumpingNormalStrength = 800.0; //123% of standard JumpingNormalStrength. PhysicsData[2].JumpingTopStrength = 1100.0; //100% of standard JumpingTopStrength. //Data associated to underwater super form. PhysicsData[3].RunningAcceleration = PhysicsData[2].RunningAcceleration * 0.75; PhysicsData[3].RunningBrakingStrength = PhysicsData[2].RunningBrakingStrength * 0.75; PhysicsData[3].RunningGroundFriction = PhysicsData[2].RunningGroundFriction * 0.75; PhysicsData[3].RunningReferenceSpeed = PhysicsData[2].RunningReferenceSpeed * 0.75; PhysicsData[3].RunningSlopeBonus = PhysicsData[2].RunningSlopeBonus * 0.75; PhysicsData[3].RunningTopSpeed = PhysicsData[2].RunningTopSpeed * 0.75; PhysicsData[3].RollingBrakingStrength = PhysicsData[2].RollingBrakingStrength * 0.75; PhysicsData[3].RollingGroundFriction = PhysicsData[2].RollingGroundFriction * 0.75; PhysicsData[3].RollingSlopeDownBonus = PhysicsData[2].RollingSlopeDownBonus * 0.75; PhysicsData[3].RollingSlopeUpBonus = PhysicsData[2].RollingSlopeUpBonus * 0.75; PhysicsData[3].RollingTopSpeed = PhysicsData[2].RollingTopSpeed * 0.75; PhysicsData[3].FallingAirAcceleration = PhysicsData[2].FallingAirAcceleration * 0.75; PhysicsData[3].FallingGravityAccel = PhysicsData[2].FallingGravityAccel * 0.5; PhysicsData[3].FallingReferenceSpeed = PhysicsData[2].FallingReferenceSpeed * 0.75; PhysicsData[3].JumpingNormalStrength = PhysicsData[2].JumpingNormalStrength * 0.85; PhysicsData[3].JumpingTopStrength = PhysicsData[2].JumpingTopStrength * 0.85; */ PhysicsData[0]=(RunningAcceleration=500.0,RunningBrakingStrength=3250.0,RunningGroundFriction=500.0,RunningReferenceSpeed=1300.0,RunningSlopeBonus=325.0,RunningTopSpeed=1750.0,RollingBrakingStrength=1800.0,RollingGroundFriction=300.0,RollingSlopeDownBonus=900.0,RollingSlopeUpBonus=225.0,RollingTopSpeed=2500.0,FallingAirAcceleration=500.0,FallingGravityAccel=520.0,FallingReferenceSpeed=650.0,JumpingNormalStrength=650.0,JumpingTopStrength=1100.0) PhysicsData[1]=(RunningAcceleration=375.0,RunningBrakingStrength=2437.5,RunningGroundFriction=375.0,RunningReferenceSpeed=975.0,RunningSlopeBonus=243.75,RunningTopSpeed=1250.0,RollingBrakingStrength=1350.0,RollingGroundFriction=225.0,RollingSlopeDownBonus=675.0,RollingSlopeUpBonus=168.75,RollingTopSpeed=1875.0,FallingAirAcceleration=375.0,FallingGravityAccel=260.0,FallingReferenceSpeed=487.5,JumpingNormalStrength=552.5,JumpingTopStrength=935.0) PhysicsData[2]=(RunningAcceleration=1000.0,RunningBrakingStrength=6500.0,RunningGroundFriction=750.0,RunningReferenceSpeed=1700.0,RunningSlopeBonus=325.0,RunningTopSpeed=2300.0,RollingBrakingStrength=1800.0,RollingGroundFriction=300.0,RollingSlopeDownBonus=900.0,RollingSlopeUpBonus=225.0,RollingTopSpeed=2500.0,FallingAirAcceleration=1000.0,FallingGravityAccel=520.0,FallingReferenceSpeed=650.0,JumpingNormalStrength=800.0,JumpingTopStrength=1100.0) PhysicsData[3]=(RunningAcceleration=750.0,RunningBrakingStrength=4875.0,RunningGroundFriction=562.5,RunningReferenceSpeed=1275.0,RunningSlopeBonus=243.75,RunningTopSpeed=1725.0,RollingBrakingStrength=1350.0,RollingGroundFriction=225.0,RollingSlopeDownBonus=675.0,RollingSlopeUpBonus=168.75,RollingTopSpeed=1875.0,FallingAirAcceleration=750.0,FallingGravityAccel=260.0,FallingReferenceSpeed=487.5,JumpingNormalStrength=680.0,JumpingTopStrength=935.0) FamilyInfoClass=class'FamilyInfoSonic' MeshDuckingOffset=12.5 SuperAnimSet=none SuperSkeletalMesh=none bCanHomingDash=true bCanJumpDash=true bCanLightDash=true bCanMachDash=true bCanQuickStep=true bCanSpeedDash=true bCanStomp=true bCanSpinDash=false bHoldingSpecialMove=false bHomingDashNeedsJump=true bJumpDashHalvesSpeed=true bJumpDashNeedsJump=true DashGravityScale=0.01 HomingDashHudCoords=(U=624,V=267,UL=100,VL=50) HomingDashRadius=450.0 HomingDashSpeed=1200.0 JumpDashDurationTime=0.25 JumpDashSpeed=2000.0 PressureLandRadius=200.0 LightDashRadius=200.0 LightDashSpeed=2000.0 bMachDashMagnetizes=false MachDashEnergy=100.0 MachDashDamageType=class'SGDKDmgType_MachDash' MachDashDischargeRate=10.0 MachDashHudCoords=(U=544,V=300,UL=70,VL=70) MachDashHudPosition=(X=16,Y=714) MachDashMagneticRadius=100.0 MachDashMaxRecharge=20.0 MachDashRechargeRate=0.0 QuickStepDurationTime=0.065 QuickStepSpeed=2000.0 SpeedBoostSound=SoundCue'SonicGDKPackage.Sounds.SpeedDashSoundCue' bStompNeedsJump=true StompDamageType=class'SGDKDmgType_Stomp' StompSpeed=2000.0 NormalJumpDashParticles=ParticleSystem'CH_Grass.SGDK.PS_Grass_HomingStomp' NormalHomingDashParticles=ParticleSystem'CH_Grass.SGDK.PS_Grass_HomingStomp' NormalLightDashParticles=ParticleSystem'CH_Grass.SGDK.PS_Grass_HomingStomp' NormalMachDashParticles=ParticleSystem'SonicGDKPackage.Particles.MachDashParticleSystemA' NormalQuickStepLParticles=none NormalQuickStepRParticles=none NormalStompAParticles=ParticleSystem'CH_Grass.SGDK.PS_Grass_HomingStomp' NormalStompBParticles=ParticleSystem'CH_Grass.SGDK.PS_AirStrike' SuperJumpDashParticles=ParticleSystem'SonicGDKPackage.Particles.HomingDashParticleSystemB' SuperHomingDashParticles=ParticleSystem'SonicGDKPackage.Particles.HomingDashParticleSystemB' SuperLightDashParticles=ParticleSystem'SonicGDKPackage.Particles.HomingDashParticleSystemB' SuperMachDashParticles=ParticleSystem'SonicGDKPackage.Particles.MachDashParticleSystemB' SuperQuickStepLParticles=none SuperQuickStepRParticles=none SuperStompAParticles=ParticleSystem'CH_Grass.SGDK.PS_Grass_HomingStomp' SuperStompBParticles=ParticleSystem'CH_Grass.SGDK.PS_AirStrike' TransformationSoundCue=SoundCue'SonicGDKPackage.Sounds.TransformationSoundCue' bDefaultPawnClass=True } Also, found something interesting. All this time, I thought the title name consisted of text. Well, the truth is, it is... + '-ure'. So basically we need to create title in photoshop, and override the gameinfo. Well, that means gotta do the scaleform HUD soon. :p Oh yeah, btw, just noticed this Did you do Full Recompile? And is your .ini file configurated to read the script package? (sorry for occasional edits. I only got 7 more posts left before I go from trial to pending again...)
I'm using Windows 7 x64. Why do you hit the "Launch" button? The readme doesn't say that! Close the Unreal Frontend tool and then run the game (Launch Game.bat file) or the editor (Start>Unreal Development Kit>UDK Editor). Oh please, tell me exactly what you do if you want help, the installation instructions are simple. It's very weird, does it happen when not recording? 1. Increase SGDKSplineActor>ConstraintMagnitude 2. The rings check if a PawnSonic collects it, if so it gives the energy. 3. And that's why Sega avoids these things, it should need a scripted camera anyways. 4. You can tweak other available values for those slower characters; Template>Physics>AdhesionPct for instance. 5. I see... I'll think about that matter. Sounds good, I might add energy parameter to the parent class. Yeah dude, about time. UDK November 2012 btw. It's good to see someone else working on scripts, hope the task isn't too difficult. Title name? What do you mean? . Better? :
Yup. Sonic suffered the very same fate, as mentioned in the first problem. Luckier first, but fell off when dashing up. I think the test level needs a bit tweak Thanks, Xak. This title name I see what you did there. :p Also, a HUD prototype Trying to replicate the template provided in the Canvas. I'm going to test it out soon when I have time... I still haven't tried menus, so I'm still not able to help yet ^^'
I'm out of time to check right now, but if I remember correctly the instructions just say to "hit launch". I'll double check later.
Coincidentally, since the last public version, the true map name is shown with the help of a font, so that's a leftover now.
Oh, so now how do I show the map title name? BTW... This is a small simple UI, the main-menu section. I might tweak it a bit, probably removing the hi-tech theme. But do you think you want to code this? If you do, download HERE Oh, one more thing. I accidentally left the enableInitCallback unchecked. Check them
Just change the value of this property: View>World Properties>World Info>Title About the menu... about 3 days ago someone else showed me a great design that he was working on... maybe you could join efforts? Or wait a little while, Handepsilon, and I'll know for sure what to do. The menu seemed functional, although I currently don't have a program to open the .fla file. Anyways, I'm glad that you want to lend me a hand with this matter.
Thanks, but it's not working. Also, the title in the world properties differs from the one showing in the game. Alright I'll be glad to help more. I'm not really good at ActionScript. Last time I tried following the straight way from Mavrik tutorial, epic coding fail. LOL
Well, the title thing should work, unless you're using an old version of SonicGDK. It works for me, double checked. Ooops! I forgot about your video tutorials, I just updated the first post.
O.... right. Version : 1.10.048. Sorry... ^^' Thanks for adding the video I've finished the third video, an hour length. There's that point where I was stuck with the checkpoint, and the troubles in the camera and spline actors, and several falling to the bottomless pit ^^'
Another epically long tutorial, covering items and the spline actors. I forgot the 2D though... ^^' I'll add a '3b' video to cover small things that I haven't covered.
Testing a UI. Had to edit some things up in the source code to get this running... I'm still stumped on the pause menu. I've posted the problem here http://forums.epicgames.com/threads/934242-AnimatedButton-flips-when-focused-AS3 See you until my approvement, guys...
I'm sorry I'm not able to contribute to this project, but without going through 67 other pages, will there be an option to change the music (or even add your own)?