don't click here

SonicGDK 1.30.000

Discussion in 'Fangaming Discussion' started by Xaklse, Feb 10, 2010.

  1. Aerosol

    Aerosol

    Not here. Moderator
    11,198
    601
    93
    Not where I want to be.
    Sonic (?): Coming summer of 2055...?
    Well I guess that's that then. No SonicGDK for me till I get something with a bit more oomph!
     
  2. Ell678

    Ell678

    Am I Annoying You? Member
    2,382
    25
    28
    Barrow, England
    Sonic Incursion
    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.
     
  3. Aerosol

    Aerosol

    Not here. Moderator
    11,198
    601
    93
    Not where I want to be.
    Sonic (?): Coming summer of 2055...?
    I can boot up UDK fine and run the test map there. Kinda slow, but it runs.
     
  4. Handepsilon

    Handepsilon

    UE3 Overuser
    20
    0
    0
    Indonesia
    Tutorial for UDK (and also SonicGDK, independently)
    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
     
  5. Handepsilon

    Handepsilon

    UE3 Overuser
    20
    0
    0
    Indonesia
    Tutorial for UDK (and also SonicGDK, independently)
    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)
     
  6. Dekrayzis

    Dekrayzis

    Member
    2
    0
    0
    The HellMouth
    Ashura: Dark Reign
    Xak, From which build of UDK is the GDK compatible with?


    And it's about time I can post on here. =/
     
  7. Handepsilon

    Handepsilon

    UE3 Overuser
    20
    0
    0
    Indonesia
    Tutorial for UDK (and also SonicGDK, independently)
    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
    Code (Text):
    1.  
    2. /*
    3.  *  SGDKX_PlayerPawn : Extended from PawnSonic to allow several properties done in custom characters.
    4.  *                     Currently, the pickups and such are hardcoded for Sonic only...
    5.  *
    6.  */
    7.  
    8. class SGDKX_PlayerPawn extends PawnSonic
    9.     ClassGroup(SGDK,Invisible,PawnTemplates,Extended);
    10.    
    11. var(Extended,Template,Misc) bool bScaleformHUD; //Using Scaleform HUD?
    12.  
    13. /**
    14.  * Called when the pawn lands on level geometry while falling.
    15.  * @param HitNormal   the surface normal of the actor/level geometry landed on
    16.  * @param FloorActor  the actor landed on
    17.  */
    18.  
    19. event Landed(vector HitNormal,Actor FloorActor)
    20. {
    21.   super(SGDKPlayerPawn).landed(HitNormal, FloorActor); //Reverts the landed function to the SGDKPlayerPawn standard
    22. }
    23.  
    24. /**
    25.  * Draws 2D graphics on the HUD.
    26.  * @param TheHud  the HUD
    27.  */
    28. function HudGraphicsDraw(SGDKHud TheHud)
    29. {
    30.  if(!bScaleformHUD)
    31.  super(SGDKPlayerPawn).HudGraphicsDraw(TheHud);
    32. }
    33.  
    34. function SpecialMove(bool bSpecial)
    35. {
    36.  super(SGDKPlayerPawn).SpecialMove(bSpecial);
    37. }
    38.  
    39. /**
    40.  * Sets or unsets rolling on ground mode and adjusts on ground speed.
    41.  * @param bRoll  sets/unsets rolling on ground mode
    42.  */
    43. function Roll(bool bRoll)
    44. {
    45.    if(bCanSpinDash) // Only roll if able to spindash, to prevent getting stuck in low-ceiling places
    46.    Super.Roll(bRoll);
    47. }
    48.  

    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

    Code (Text):
    1.  
    2. /*
    3.  *  PawnLev : Levinski's scripts
    4.  *
    5.  *
    6.  */
    7.  
    8. class PawnLev extends SGDKX_PlayerPawn;
    9.  
    10.  
    11. /**The Pressure Land area radius.*/ var(Extended,Template,Skills) float PressureLandRadius;
    12.  
    13.  
    14. /**
    15.  * Called immediately before gameplay begins.
    16.  */
    17. simulated event PreBeginPlay()
    18. {
    19.     local PawnLev P;
    20.  
    21.     super.PreBeginPlay();
    22.  
    23.     if (!IsTemplate() && PawnTemplate != none)
    24.     {
    25.         P = PawnLev(PawnTemplate);
    26.  
    27.         PressureLandRadius = P.PressureLandRadius;  //Simplified. Other things are done in
    28.     }
    29. }
    30.  
    31. /**
    32.  * Called when the pawn lands on level geometry while falling.
    33.  * @param HitNormal   the surface normal of the actor/level geometry landed on
    34.  * @param FloorActor  the actor landed on
    35.  */
    36. event Landed(vector HitNormal,Actor FloorActor)
    37. {
    38.   local SGDKEnemyPawn E;
    39.  
    40.     if (SpecialMoveId == 1 || SpecialMoveId == 2 || SpecialMoveId == 4)
    41.     {
    42.         if (SpecialMoveId == 4)
    43.         {
    44.            foreach CollidingActors(class'SGDKEnemyPawn',E,PressureLandRadius,Location,true)
    45.            {
    46.              HurtPawn(E);
    47.            }
    48.         }
    49.         UndoSpecialMove();
    50.     }
    51.  
    52.  
    53.     super.Landed(HitNormal,FloorActor);
    54.  
    55.     if (bHoldingSpecialMove && !WillLeaveGround() && !bDodging && !bDucking &&
    56.         !bPushing && !bRolling && !bSkidding && GroundSpecialMove())
    57.         LastSpecialMoveTime = WorldInfo.TimeSeconds;
    58. }
    59.  
    60. /**
    61.  * Called whenever time passes.
    62.  * @param DeltaTime  contains the amount of time in seconds that has passed since the last Tick
    63.  */
    64. event Tick(float DeltaTime)
    65. {
    66.     local bool bMoved;
    67.     local float Dist,ChosenDist;
    68.     local RingActor Ring,ChosenRing;
    69.  
    70.     super.Tick(DeltaTime);
    71.  
    72.     if (Health > 0)
    73.     {
    74.         if (bDodging)
    75.         {
    76.             bMoved = false;
    77.  
    78.             if (Health > 0 && !bRolling && IsTouchingGround() && AboveWalkingSpeed())
    79.             {
    80.                 if (CurrentDir == DCLICK_Left)
    81.                     bMoved = MoveSmooth((vect(0,-1,0) >> DesiredMeshRotation) * (QuickStepSpeed * DeltaTime));
    82.                 else
    83.                     if (CurrentDir == DCLICK_Right)
    84.                         bMoved = MoveSmooth((vect(0,1,0) >> DesiredMeshRotation) * (QuickStepSpeed * DeltaTime));
    85.             }
    86.  
    87.             if (!bMoved)
    88.                 ClearTimer(NameOf(UnDodge));
    89.  
    90.             bDodging = bMoved;
    91.         }
    92.         else
    93.         {
    94.             if (SpecialMoveId != 5)
    95.             {
    96.                 MachDashDischargeRate = default.MachDashDischargeRate;
    97.  
    98.                 if (MachDashEnergy < MachDashMaxRecharge)
    99.                 {
    100.                     MachDashRechargeRate += DeltaTime * 0.25;
    101.  
    102.                     MachDashEnergy = FMin(MachDashEnergy + MachDashRechargeRate * DeltaTime,MachDashMaxRecharge);
    103.                 }
    104.                 else
    105.                     MachDashRechargeRate = default.MachDashRechargeRate;
    106.             }
    107.  
    108.             switch (SpecialMoveId)
    109.             {
    110.                 case 2:
    111.                     if (HomingTarget != none && DestroyableEntity(HomingTarget).IsHomingTarget() &&
    112.                         WorldInfo.TimeSeconds - LastHomingDashTime < 1.0 &&
    113.                         VSizeSq(HomingTarget.Location - Location) > 10000.0 &&
    114.                         FastTrace(Location,HomingTarget.Location))
    115.                     {
    116.                         SetVelocity(Normal(DestroyableEntity(HomingTarget).GetHomingLocation(self) - Location) * HomingDashSpeed);
    117.  
    118.                         SetPhysics(PHYS_Falling);
    119.                     }
    120.                     else
    121.                         UndoSpecialMove();
    122.  
    123.                     break;
    124.  
    125.                 case 3:
    126.                     ChosenDist = Square(LightDashRadius) + 10000.0;
    127.  
    128.                     foreach VisibleCollidingActors(class'RingActor',Ring,LightDashRadius,Location,true)
    129.                     {
    130.                         if (Ring.bLightDash && FastTrace(Location,Ring.Location))
    131.                         {
    132.                             Dist = VSizeSq(Ring.Location - Location);
    133.  
    134.                             if (Dist < ChosenDist)
    135.                             {
    136.                                 ChosenRing = Ring;
    137.                                 ChosenDist = Dist;
    138.                             }
    139.                         }
    140.                     }
    141.  
    142.                     if (ChosenRing != none)
    143.                     {
    144.                         SetVelocity(Normal(ChosenRing.Location - Location) * LightDashSpeed);
    145.  
    146.                         SetPhysics(PHYS_Falling);
    147.                     }
    148.                     else
    149.                         UndoSpecialMove();
    150.  
    151.                     break;
    152.  
    153.                 case 5:
    154.                     MachDashDischargeRate = FMax(5.0,MachDashDischargeRate - DeltaTime * 2.0);
    155.                     MachDashRechargeRate = default.MachDashRechargeRate;
    156.  
    157.                     if (!bSuperForm)
    158.                         MachDashEnergy = FMax(0.0,MachDashEnergy - MachDashDischargeRate * DeltaTime);
    159.  
    160.                     if (bRolling || MachDashEnergy == 0.0 || !IsTouchingGround() ||
    161.                         VSizeSq(GetVelocity()) < Square(ApexGroundSpeed * 0.2))
    162.                         UndoSpecialMove();
    163.                     else
    164.                     {
    165.                         SetGroundSpeed(ApexGroundSpeed);
    166.                         HighSpeedBoost(1.0,false);
    167.  
    168.                         GroundSpeed = RealGroundSpeed;
    169.                         if (Physics == PHYS_Walking && Floor.Z < 1.0 && !IsZero(Velocity))
    170.                             GroundSpeed *= Normal(Velocity) dot Normal(GetVelocity());
    171.  
    172.                         if (bMachDashMagnetizes)
    173.                             MagnetizeNearbyActors(MachDashMagneticRadius);
    174.                     }
    175.             }
    176.         }
    177.     }
    178. }
    179.  
    180. /**
    181.  * Player pawn wants to perform an aerial special move: Jump Dash, Homing Dash or Stomp.
    182.  * @param ButtonId  identification of the (un)pressed button; 0 is Jump, 1 is UnJump, 2 is Duck, 3 is UnDuck,
    183.  *                                                            4 is SpecialMove, 5 is UnSpecialMove
    184.  * @return          true if pawn performed the aerial special move
    185.  */
    186. function bool AirSpecialMove(byte ButtonId = 0)
    187. {
    188.     local Actor TargetActor;
    189.     local vector Dir;
    190.  
    191.     switch (ButtonId)
    192.     {
    193.         case 4:
    194.             if (!bSuperForm && Health > 50 && HasJumped() && HasAllEmeralds())
    195.             {
    196.                 SuperTransformation();
    197.  
    198.                 return true;
    199.             }
    200.  
    201.         case 0:
    202.             if (MultiJumpRemaining > 0 && !IsZero(Velocity))
    203.             {
    204.                 if (bCanHomingDash && (bReadyToDoubleJump || !bHomingDashNeedsJump))
    205.                     TargetActor = FindHomingTarget();
    206.  
    207.                 if (TargetActor != none)
    208.                 {
    209.                     bReadyToDoubleJump = true;
    210.                     GravityScale *= DashGravityScale;
    211.                     HomingTarget = TargetActor;
    212.                     LastHomingDashTime = WorldInfo.TimeSeconds;
    213.                     SpecialMoveId = 2;
    214.  
    215.                     SetVelocity(Normal(DestroyableEntity(HomingTarget).GetHomingLocation(self) - Location) * HomingDashSpeed);
    216.  
    217.                     SGDKPlayerController(Controller).IgnoreDirInput(true);
    218.  
    219.                     SoundGroupClass.static.PlayDoubleJumpSound(self);
    220.  
    221.                     if (NormalHomingDashParticles != none)
    222.                     {
    223.                         SpecialMoveEmitter = Spawn(class'SGDKEmitter',self,,Location,GetRotation());
    224.                         SpecialMoveEmitter.SetTemplate(NormalHomingDashParticles,false);
    225.  
    226.                         AttachToRoot(SpecialMoveEmitter);
    227.                     }
    228.  
    229.                     return true;
    230.                 }
    231.                 else
    232.                     if (bCanJumpDash && (bReadyToDoubleJump || !bJumpDashNeedsJump))
    233.                     {
    234.                         bReadyToDoubleJump = true;
    235.                         GravityScale *= DashGravityScale;
    236.                         SpecialMoveId = 1;
    237.  
    238.                         Dir = SGDKPlayerController(Controller).GetPressedDirection(true,
    239.                                   ConstrainedMovement == CM_Classic2dot5d);
    240.  
    241.                         if (Dir.X == 0.0 && Dir.Y == 0.0)
    242.                         {
    243.                             if (ConstrainedMovement == CM_None)
    244.                                 Dir = vector(DesiredViewRotation);
    245.                             else
    246.                                 Dir = vector(DesiredMeshRotation);
    247.                         }
    248.  
    249.                         Dir.Z = 0.0;
    250.                         SetVelocity(Normal(Dir) * JumpDashSpeed);
    251.  
    252.                         SGDKPlayerController(Controller).IgnoreDirInput(true);
    253.  
    254.                         SetTimer(JumpDashDurationTime,false,NameOf(UndoSpecialMove));
    255.  
    256.                         SoundGroupClass.static.PlayDoubleJumpSound(self);
    257.  
    258.                         if (NormalJumpDashParticles != none)
    259.                         {
    260.                             SpecialMoveEmitter = Spawn(class'SGDKEmitter',self,,Location,GetRotation());
    261.                             SpecialMoveEmitter.SetTemplate(NormalJumpDashParticles,false);
    262.  
    263.                             AttachToRoot(SpecialMoveEmitter);
    264.                         }
    265.  
    266.                         return true;
    267.                     }
    268.             }
    269.  
    270.             break;
    271.  
    272.         case 3:
    273.             if (bCanStomp && (bReadyToDoubleJump || !bStompNeedsJump) && MultiJumpRemaining > 0 && !IsZero(Velocity))
    274.             {
    275.                 SpecialMoveId = 4;
    276.  
    277.                 bReadyToDoubleJump = false;
    278.                 Dir = GetVelocity() * 0.05;
    279.  
    280.                 if (!bReverseGravity)
    281.                     Dir.Z = -StompSpeed;
    282.                 else
    283.                     Dir.Z = StompSpeed;
    284.  
    285.                 SetVelocity(Dir);
    286.  
    287.                 AirControl = 0.0;
    288.  
    289.                 SoundGroupClass.static.PlayDoubleJumpSound(self);
    290.  
    291.                 if (NormalStompAParticles != none)
    292.                 {
    293.                     SpecialMoveEmitter = Spawn(class'SGDKEmitter',self,,Location,GetRotation());
    294.                     SpecialMoveEmitter.SetTemplate(NormalStompAParticles,false);
    295.  
    296.                     AttachToRoot(SpecialMoveEmitter);
    297.                 }
    298.  
    299.                 return true;
    300.             }
    301.     }
    302.  
    303.     return false;
    304. }
    305.  
    306.  
    307. /**
    308.  * Player pawn performs an on ground special move: Mach Dash, Speed Dash or Light Dash.
    309.  * @return  true if pawn performed the on ground special move
    310.  */
    311. function bool GroundSpecialMove()
    312. {
    313.  
    314.     if (!bDodging && !bDucking && !bPushing && !bRolling && !bSkidding && SpecialMoveId == 0)
    315.     {
    316.  
    317.             if (bCanMachDash && (!bCanSpeedDash || VSizeSq(GetVelocity()) > Square(ApexGroundSpeed * 0.2)) &&
    318.                 ((!AboveWalkingSpeed() && MachDashEnergy >= MachDashDischargeRate) ||
    319.                 (AboveWalkingSpeed() && MachDashEnergy >= MachDashDischargeRate * 0.1)))
    320.             {
    321.                 SpecialMoveId = 5;
    322.  
    323.                 if (!bSuperForm)
    324.                     MachDashEnergy = FMax(0.0,MachDashEnergy - MachDashDischargeRate * 0.5);
    325.  
    326.                 if (ConstrainedMovement == CM_None)
    327.                     ForceRotation(GetRotation(),true);
    328.  
    329.                 HighSpeedBoost(1.0,false);
    330.  
    331.                 PlaySound(SpeedBoostSound,false,true);
    332.  
    333.                 if (NormalMachDashParticles != none)
    334.                 {
    335.                     SpecialMoveEmitter = Spawn(class'SGDKEmitter',self,,Location,GetRotation());
    336.                     SpecialMoveEmitter.SetTemplate(NormalMachDashParticles,false);
    337.  
    338.                     AttachToRoot(SpecialMoveEmitter,,,true);
    339.                 }
    340.  
    341.                 SetTimer(0.3,false,NameOf(PlayMachDashSound));
    342.  
    343.                 return true;
    344.             }
    345.             else
    346.                 if (bCanSpeedDash && !AboveWalkingSpeed() &&
    347.                     (bAntiGravityMode || Physics == PHYS_Walking || FloorDotAngle > WalkableFloorZ))
    348.                 {
    349.                     HighSpeedBoost(0.65,ConstrainedMovement != CM_None);
    350.  
    351.                     return true;
    352.                 }
    353.     }
    354.  
    355.     return false;
    356. }
    357.  
    358. /**
    359.  * Draws 2D graphics on the HUD.
    360.  * @param TheHud  the HUD
    361.  */
    362. function HudGraphicsDraw(SGDKHud TheHud)
    363. {
    364.     local vector2d Position;
    365.     local int Energy,Number;
    366.     local Actor A;
    367.     local vector V;
    368.  
    369.     if (bCanMachDash)
    370.     {
    371.         //Draw Mach Dash stuff.
    372.         Position.X = MachDashHudPosition.X * TheHud.ResolutionScaleX;
    373.         Position.Y = MachDashHudPosition.Y * TheHud.ResolutionScale;
    374.  
    375.         TheHud.ResolutionScale *= TheHud.HudScale;
    376.  
    377.         TheHud.Canvas.DrawColor = TheHud.WhiteColor;
    378.  
    379.         //Draw the black background.
    380.         TheHud.Canvas.SetPos(Position.X,Position.Y);
    381.         TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,TheHud.BackgroundSCoords.UL * TheHud.ResolutionScale,
    382.                                TheHud.BackgroundSCoords.VL * TheHud.ResolutionScale,TheHud.BackgroundSCoords.U,
    383.                                TheHud.BackgroundSCoords.V,TheHud.BackgroundSCoords.UL,TheHud.BackgroundSCoords.VL);
    384.  
    385.         //Draw the icon.
    386.         TheHud.Canvas.SetPos(Position.X + (TheHud.BackgroundSCoords.UL - 88.0) * TheHud.ResolutionScale,
    387.                              Position.Y - 20.0 * TheHud.ResolutionScale);
    388.  
    389.         if (!bSuperForm)
    390.             TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,TheHud.NormalIconCoords.UL * TheHud.ResolutionScale,
    391.                                    TheHud.NormalIconCoords.VL * TheHud.ResolutionScale,TheHud.NormalIconCoords.U,
    392.                                    TheHud.NormalIconCoords.V,TheHud.NormalIconCoords.UL,TheHud.NormalIconCoords.VL);
    393.         else
    394.             TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,TheHud.SuperIconCoords.UL * TheHud.ResolutionScale,
    395.                                    TheHud.SuperIconCoords.VL * TheHud.ResolutionScale,TheHud.SuperIconCoords.U,
    396.                                    TheHud.SuperIconCoords.V,TheHud.SuperIconCoords.UL,TheHud.SuperIconCoords.VL);
    397.  
    398.         Energy = MachDashEnergy;
    399.  
    400.         //Draw the energy icon.
    401.         TheHud.Canvas.SetPos(Position.X + 12.0 * TheHud.ResolutionScale,Position.Y - 16.0 * TheHud.ResolutionScale);
    402.         TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,MachDashHudCoords.UL * TheHud.ResolutionScale,
    403.                                MachDashHudCoords.VL * TheHud.ResolutionScale,MachDashHudCoords.U,
    404.                                MachDashHudCoords.V,MachDashHudCoords.UL,MachDashHudCoords.VL);
    405.  
    406.         //Draw the energy digits.
    407.         Position.X += (TheHud.BackgroundSCoords.UL - 88.0) * TheHud.ResolutionScale;
    408.         Position.Y -= 4.0 * TheHud.ResolutionScale;
    409.         TheHud.Canvas.SetPos(Position.X,Position.Y);
    410.  
    411.         Number = (Energy > 9) ? (Energy - ((Energy / 10) * 10)) : Energy;
    412.  
    413.         TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,TheHud.NumbersCoords.UL * TheHud.ResolutionScale,
    414.                                TheHud.NumbersCoords.VL * TheHud.ResolutionScale,TheHud.NumbersCoords.U + Number * 36.0,
    415.                                TheHud.NumbersCoords.V,TheHud.NumbersCoords.UL,TheHud.NumbersCoords.VL);
    416.  
    417.         if (Energy > 9)
    418.         {
    419.             Position.X -= TheHud.NumbersCoords.UL * TheHud.ResolutionScale;
    420.             TheHud.Canvas.SetPos(Position.X,Position.Y);
    421.  
    422.             Number = (Energy > 99) ? ((Energy - ((Energy / 100) * 100)) / 10) : (Energy / 10);
    423.  
    424.             TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,TheHud.NumbersCoords.UL * TheHud.ResolutionScale,
    425.                                    TheHud.NumbersCoords.VL * TheHud.ResolutionScale,TheHud.NumbersCoords.U + Number * 36.0,
    426.                                    TheHud.NumbersCoords.V,TheHud.NumbersCoords.UL,TheHud.NumbersCoords.VL);
    427.  
    428.             if (Energy > 99)
    429.             {
    430.                 Position.X -= TheHud.NumbersCoords.UL * TheHud.ResolutionScale;
    431.                 TheHud.Canvas.SetPos(Position.X,Position.Y);
    432.  
    433.                 Number = 1;
    434.  
    435.                 TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,TheHud.NumbersCoords.UL * TheHud.ResolutionScale,
    436.                                        TheHud.NumbersCoords.VL * TheHud.ResolutionScale,TheHud.NumbersCoords.U + Number * 36.0,
    437.                                        TheHud.NumbersCoords.V,TheHud.NumbersCoords.UL,TheHud.NumbersCoords.VL);
    438.             }
    439.         }
    440.  
    441.         TheHud.ResolutionScale /= TheHud.HudScale;
    442.  
    443.         TheHud.LivesPosition = TheHud.default.LivesPosition;
    444.     }
    445.     else
    446.         TheHud.LivesPosition = MachDashHudPosition;
    447.  
    448.     if (bCanHomingDash && !bDisableSpecialMoves && Physics == PHYS_Falling && MultiJumpRemaining > 0 &&
    449.         (bReadyToDoubleJump || !bHomingDashNeedsJump) && !IsZero(Velocity))
    450.     {
    451.         A = FindHomingTarget();
    452.  
    453.         if (A != none)
    454.         {
    455.             V = TheHud.Canvas.Project(DestroyableEntity(A).GetHomingLocation(self));
    456.  
    457.             TheHud.Canvas.DrawColor = TheHud.WhiteColor;
    458.  
    459.             //Draw the marker.
    460.             TheHud.Canvas.SetPos(V.X - HomingDashHudCoords.UL * TheHud.ResolutionScale * 0.5,
    461.                                  V.Y - HomingDashHudCoords.VL * TheHud.ResolutionScale * 0.5);
    462.             TheHud.Canvas.DrawTile(TheHud.BaseHudTexture,HomingDashHudCoords.UL * TheHud.ResolutionScale,
    463.                                    HomingDashHudCoords.VL * TheHud.ResolutionScale,HomingDashHudCoords.U,
    464.                                    HomingDashHudCoords.V,HomingDashHudCoords.UL,HomingDashHudCoords.VL);
    465.         }
    466.     }
    467.  
    468.     super.HudGraphicsDraw(TheHud);
    469. }
    470.  
    471.  
    472. function bool NoActionPerformed(byte ButtonId = 0)
    473. {
    474.     //Avoid two consecutive special moves that are too close in time.
    475.     if (!bDisableSpecialMoves && WorldInfo.TimeSeconds - LastSpecialMoveTime > MinTimeSpecialMoves)
    476.     {
    477.         //Try to perform aerial special move now.
    478.         if (Physics == PHYS_Falling && AirSpecialMove(ButtonId))
    479.         {
    480.             DoubleJumped();
    481.  
    482.             return false;
    483.         }
    484.         else
    485.             //Try to perform on ground special move now.
    486.             if (ButtonId == 4 && IsTouchingGround() && GroundSpecialMove())
    487.             {
    488.                 LastSpecialMoveTime = WorldInfo.TimeSeconds;
    489.  
    490.                 return false;
    491.             }
    492.     }
    493.  
    494.     if (!bHoldingSpecialMove && SpecialMoveId == 5)
    495.     {
    496.         //Cancel Mach Dash.
    497.         UndoSpecialMove();
    498.  
    499.         return false;
    500.     }
    501.  
    502.     return true;
    503. }
    504.  
    505. /**
    506.  * Called when the player presses or releases the SpecialMove key/button.
    507.  * @param bSpecial  true if player wants to perform a special move, false if player has released the button/key
    508.  */
    509. function SpecialMove(bool bSpecial)
    510. {
    511.     if (!bDisableSpecialMoves)
    512.     {
    513.         bHoldingSpecialMove = bSpecial;
    514.  
    515.         super.SpecialMove(bSpecial);
    516.     }
    517.     else
    518.         bHoldingSpecialMove = false;
    519. }
    520.  
    521.  
    522. /**
    523.  * Cancels special moves.
    524.  */
    525. function UndoSpecialMove()
    526. {
    527.     local SGDKEmitter StompEmitter;
    528.  
    529.     switch (SpecialMoveId)
    530.     {
    531.         case 1:
    532.             ClearTimer(NameOf(UndoSpecialMove));
    533.  
    534.             GravityScale /= DashGravityScale;
    535.  
    536.             if (Physics == PHYS_Falling)
    537.                 bReadyToDoubleJump = false;
    538.  
    539.             if (bJumpDashHalvesSpeed)
    540.                 SetVelocity(GetVelocity() * 0.5);
    541.  
    542.             SGDKPlayerController(Controller).IgnoreDirInput(false);
    543.  
    544.             break;
    545.  
    546.         case 2:
    547.             GravityScale /= DashGravityScale;
    548.             HomingTarget = none;
    549.             LastHomingDashTime = WorldInfo.TimeSeconds;
    550.  
    551.             SGDKPlayerController(Controller).IgnoreDirInput(false);
    552.  
    553.             break;
    554.  
    555.         case 3:
    556.             SGDKPlayerController(Controller).IgnoreDirInput(false);
    557.  
    558.             break;
    559.  
    560.         case 4:
    561.             if (NormalStompBParticles != none)
    562.             {
    563.                 StompEmitter = Spawn(class'SGDKEmitter',self,,Location,GetRotation());
    564.                 StompEmitter.SetTemplate(NormalStompBParticles,true);
    565.             }
    566.  
    567.             break;
    568.  
    569.         case 5:
    570.             if (IsTimerActive(NameOf(PlayMachDashSound)))
    571.                 ClearTimer(NameOf(PlayMachDashSound));
    572.             else
    573.                 MachDashSound.FadeOut(1.0,0.0);
    574.     }
    575.  
    576.     if (SpecialMoveEmitter != none)
    577.     {
    578.         DetachFromRoot(SpecialMoveEmitter);
    579.         SpecialMoveEmitter.DelayedDestroy();
    580.         SpecialMoveEmitter = none;
    581.     }
    582.  
    583.     SpecialMoveId = 0;
    584. }
    585.  
    586. defaultproperties
    587. {
    588.     Begin Object Name=WPawnSkeletalMeshComponent
    589.         AnimSets(0)=AnimSet'CH_Grass.SGDK.K_SGDK_Grass'
    590.         AnimTreeTemplate=AnimTree'CH_Grass.SGDK.AT_SGDK_Grass'
    591.         PhysicsAsset=PhysicsAsset'CH_Grass.SKM_Grass_v2_0_Physics'
    592.         SkeletalMesh=SkeletalMesh'CH_Grass.SGDK.SKM_Grass_v2_1_Root'
    593.         Scale=1
    594.     End Object
    595.     Mesh=WPawnSkeletalMeshComponent
    596.     VisibleMesh=WPawnSkeletalMeshComponent
    597.  
    598.  
    599.     Begin Object Name=MachDashAudioComponent
    600.         SoundCue=SoundCue'SonicGDKPackage.Sounds.MachDashSoundCue'
    601.         bAllowSpatialization=false
    602.     End Object
    603.     MachDashSound=MachDashAudioComponent
    604.  
    605.  
    606. /*
    607.     //Data associated to standard physics.
    608.     PhysicsData[0].RunningAcceleration = 500.0;     // 40% of RunningReferenceSpeed; takes 2.5 seconds to reach 1300.
    609.     PhysicsData[0].RunningBrakingStrength = 3250.0; //250% of RunningReferenceSpeed.
    610.     PhysicsData[0].RunningGroundFriction = 500.0;   // 40% of RunningReferenceSpeed.
    611.     PhysicsData[0].RunningReferenceSpeed = 1300.0;
    612.     PhysicsData[0].RunningSlopeBonus = 325.0;       // 65% of RunningGroundFriction.
    613.     PhysicsData[0].RunningTopSpeed = 2000.0;
    614.     PhysicsData[0].RollingBrakingStrength = 1800.0; //100% of RollingReferenceSpeed.
    615.     PhysicsData[0].RollingGroundFriction = 300.0;   // 16% of RollingReferenceSpeed.
    616.     PhysicsData[0].RollingSlopeDownBonus = 900.0;   //300% of RollingGroundFriction.
    617.     PhysicsData[0].RollingSlopeUpBonus = 225.0;     // 25% of RollingSlopeDownBonus.
    618.     PhysicsData[0].RollingTopSpeed = 2500.0;
    619.     PhysicsData[0].FallingAirAcceleration = 500.0;
    620.     PhysicsData[0].FallingGravityAccel = 520.0;
    621.     PhysicsData[0].FallingReferenceSpeed = 650.0;
    622.     PhysicsData[0].JumpingNormalStrength = 650.0;
    623.     PhysicsData[0].JumpingTopStrength = 1100.0;     //170% of JumpingNormalStrength.
    624.  
    625.     //Data associated to underwater physics.
    626.     PhysicsData[1].RunningAcceleration = PhysicsData[0].RunningAcceleration * 0.75;
    627.     PhysicsData[1].RunningBrakingStrength = PhysicsData[0].RunningBrakingStrength * 0.75;
    628.     PhysicsData[1].RunningGroundFriction = PhysicsData[0].RunningGroundFriction * 0.75;
    629.     PhysicsData[1].RunningReferenceSpeed = PhysicsData[0].RunningReferenceSpeed * 0.75;
    630.     PhysicsData[1].RunningSlopeBonus = PhysicsData[0].RunningSlopeBonus * 0.75;
    631.     PhysicsData[1].RunningTopSpeed = PhysicsData[0].RunningTopSpeed * 0.75;
    632.     PhysicsData[1].RollingBrakingStrength = PhysicsData[0].RollingBrakingStrength * 0.75;
    633.     PhysicsData[1].RollingGroundFriction = PhysicsData[0].RollingGroundFriction;
    634.     PhysicsData[1].RollingSlopeDownBonus = PhysicsData[0].RollingSlopeDownBonus * 0.75;
    635.     PhysicsData[1].RollingSlopeUpBonus = PhysicsData[0].RollingSlopeUpBonus * 0.75;
    636.     PhysicsData[1].RollingTopSpeed = PhysicsData[0].RollingTopSpeed * 0.75;
    637.     PhysicsData[1].FallingAirAcceleration = PhysicsData[0].FallingAirAcceleration * 0.75;
    638.     PhysicsData[1].FallingGravityAccel = PhysicsData[0].FallingGravityAccel * 0.5;
    639.     PhysicsData[1].FallingReferenceSpeed = PhysicsData[0].FallingReferenceSpeed * 0.75;
    640.     PhysicsData[1].JumpingNormalStrength = PhysicsData[0].JumpingNormalStrength * 0.85;
    641.     PhysicsData[1].JumpingTopStrength = PhysicsData[0].JumpingTopStrength * 0.85;
    642.  
    643.     //Data associated to super form.
    644.     PhysicsData[2].RunningAcceleration = 1000.0;    //200% of standard RunningAcceleration.
    645.     PhysicsData[2].RunningBrakingStrength = 6500.0; //200% of standard RunningBrakingStrength.
    646.     PhysicsData[2].RunningGroundFriction = 750.0;   //150% of standard RunningGroundFriction.
    647.     PhysicsData[2].RunningReferenceSpeed = 1700.0;  //130% of standard RunningReferenceSpeed.
    648.     PhysicsData[2].RunningSlopeBonus = 325.0;       //100% of standard RunningSlopeBonus.
    649.     PhysicsData[2].RunningTopSpeed = 2300.0;        //115% of standard RunningTopSpeed.
    650.     PhysicsData[2].RollingBrakingStrength = 1800.0; //100% of standard RollingReferenceSpeed.
    651.     PhysicsData[2].RollingGroundFriction = 300.0;   //100% of standard RollingGroundFriction.
    652.     PhysicsData[2].RollingSlopeDownBonus = 900.0;   //100% of standard RollingSlopeDownBonus.
    653.     PhysicsData[2].RollingSlopeUpBonus = 225.0;     //100% of standard RollingSlopeUpBonus.
    654.     PhysicsData[2].RollingTopSpeed = 2500.0;        //100% of standard RollingTopSpeed.
    655.     PhysicsData[2].FallingAirAcceleration = 1000.0; //200% of standard FallingAirAcceleration.
    656.     PhysicsData[2].FallingGravityAccel = 520.0;     //100% of standard FallingGravityAccel.
    657.     PhysicsData[2].FallingReferenceSpeed = 650.0;   //100% of standard FallingReferenceSpeed.
    658.     PhysicsData[2].JumpingNormalStrength = 800.0;   //123% of standard JumpingNormalStrength.
    659.     PhysicsData[2].JumpingTopStrength = 1100.0;     //100% of standard JumpingTopStrength.
    660.  
    661.     //Data associated to underwater super form.
    662.     PhysicsData[3].RunningAcceleration = PhysicsData[2].RunningAcceleration * 0.75;
    663.     PhysicsData[3].RunningBrakingStrength = PhysicsData[2].RunningBrakingStrength * 0.75;
    664.     PhysicsData[3].RunningGroundFriction = PhysicsData[2].RunningGroundFriction * 0.75;
    665.     PhysicsData[3].RunningReferenceSpeed = PhysicsData[2].RunningReferenceSpeed * 0.75;
    666.     PhysicsData[3].RunningSlopeBonus = PhysicsData[2].RunningSlopeBonus * 0.75;
    667.     PhysicsData[3].RunningTopSpeed = PhysicsData[2].RunningTopSpeed * 0.75;
    668.     PhysicsData[3].RollingBrakingStrength = PhysicsData[2].RollingBrakingStrength * 0.75;
    669.     PhysicsData[3].RollingGroundFriction = PhysicsData[2].RollingGroundFriction * 0.75;
    670.     PhysicsData[3].RollingSlopeDownBonus = PhysicsData[2].RollingSlopeDownBonus * 0.75;
    671.     PhysicsData[3].RollingSlopeUpBonus = PhysicsData[2].RollingSlopeUpBonus * 0.75;
    672.     PhysicsData[3].RollingTopSpeed = PhysicsData[2].RollingTopSpeed * 0.75;
    673.     PhysicsData[3].FallingAirAcceleration = PhysicsData[2].FallingAirAcceleration * 0.75;
    674.     PhysicsData[3].FallingGravityAccel = PhysicsData[2].FallingGravityAccel * 0.5;
    675.     PhysicsData[3].FallingReferenceSpeed = PhysicsData[2].FallingReferenceSpeed * 0.75;
    676.     PhysicsData[3].JumpingNormalStrength = PhysicsData[2].JumpingNormalStrength * 0.85;
    677.     PhysicsData[3].JumpingTopStrength = PhysicsData[2].JumpingTopStrength * 0.85;
    678. */
    679.     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)
    680.     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)
    681.     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)
    682.     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)
    683.  
    684.     FamilyInfoClass=class'FamilyInfoSonic'
    685.     MeshDuckingOffset=12.5
    686.     SuperAnimSet=none
    687.     SuperSkeletalMesh=none
    688.  
    689.     bCanHomingDash=true
    690.     bCanJumpDash=true
    691.     bCanLightDash=true
    692.     bCanMachDash=true
    693.     bCanQuickStep=true
    694.     bCanSpeedDash=true
    695.     bCanStomp=true
    696.     bCanSpinDash=false
    697.  
    698.     bHoldingSpecialMove=false
    699.  
    700.     bHomingDashNeedsJump=true
    701.     bJumpDashHalvesSpeed=true
    702.     bJumpDashNeedsJump=true
    703.     DashGravityScale=0.01
    704.     HomingDashHudCoords=(U=624,V=267,UL=100,VL=50)
    705.     HomingDashRadius=450.0
    706.     HomingDashSpeed=1200.0
    707.     JumpDashDurationTime=0.25
    708.     JumpDashSpeed=2000.0
    709.  
    710.     PressureLandRadius=200.0
    711.  
    712.     LightDashRadius=200.0
    713.     LightDashSpeed=2000.0
    714.  
    715.     bMachDashMagnetizes=false
    716.     MachDashEnergy=100.0
    717.     MachDashDamageType=class'SGDKDmgType_MachDash'
    718.     MachDashDischargeRate=10.0
    719.     MachDashHudCoords=(U=544,V=300,UL=70,VL=70)
    720.     MachDashHudPosition=(X=16,Y=714)
    721.     MachDashMagneticRadius=100.0
    722.     MachDashMaxRecharge=20.0
    723.     MachDashRechargeRate=0.0
    724.  
    725.     QuickStepDurationTime=0.065
    726.     QuickStepSpeed=2000.0
    727.     SpeedBoostSound=SoundCue'SonicGDKPackage.Sounds.SpeedDashSoundCue'
    728.  
    729.     bStompNeedsJump=true
    730.     StompDamageType=class'SGDKDmgType_Stomp'
    731.     StompSpeed=2000.0
    732.  
    733.     NormalJumpDashParticles=ParticleSystem'CH_Grass.SGDK.PS_Grass_HomingStomp'
    734.     NormalHomingDashParticles=ParticleSystem'CH_Grass.SGDK.PS_Grass_HomingStomp'
    735.     NormalLightDashParticles=ParticleSystem'CH_Grass.SGDK.PS_Grass_HomingStomp'
    736.     NormalMachDashParticles=ParticleSystem'SonicGDKPackage.Particles.MachDashParticleSystemA'
    737.     NormalQuickStepLParticles=none
    738.     NormalQuickStepRParticles=none
    739.     NormalStompAParticles=ParticleSystem'CH_Grass.SGDK.PS_Grass_HomingStomp'
    740.     NormalStompBParticles=ParticleSystem'CH_Grass.SGDK.PS_AirStrike'
    741.     SuperJumpDashParticles=ParticleSystem'SonicGDKPackage.Particles.HomingDashParticleSystemB'
    742.     SuperHomingDashParticles=ParticleSystem'SonicGDKPackage.Particles.HomingDashParticleSystemB'
    743.     SuperLightDashParticles=ParticleSystem'SonicGDKPackage.Particles.HomingDashParticleSystemB'
    744.     SuperMachDashParticles=ParticleSystem'SonicGDKPackage.Particles.MachDashParticleSystemB'
    745.     SuperQuickStepLParticles=none
    746.     SuperQuickStepRParticles=none
    747.     SuperStompAParticles=ParticleSystem'CH_Grass.SGDK.PS_Grass_HomingStomp'
    748.     SuperStompBParticles=ParticleSystem'CH_Grass.SGDK.PS_AirStrike'
    749.  
    750.     TransformationSoundCue=SoundCue'SonicGDKPackage.Sounds.TransformationSoundCue'
    751.    
    752.     bDefaultPawnClass=True
    753. }
    754.  

    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...)
     
  8. 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? :
     
  9. Handepsilon

    Handepsilon

    UE3 Overuser
    20
    0
    0
    Indonesia
    Tutorial for UDK (and also SonicGDK, independently)
    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
    [​IMG]
    I see what you did there. :p

    Also, a HUD prototype
    [​IMG]

    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 ^^'
     
  10. Aerosol

    Aerosol

    Not here. Moderator
    11,198
    601
    93
    Not where I want to be.
    Sonic (?): Coming summer of 2055...?
    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.
     
  11. Coincidentally, since the last public version, the true map name is shown with the help of a font, so that's a leftover now.
     
  12. Handepsilon

    Handepsilon

    UE3 Overuser
    20
    0
    0
    Indonesia
    Tutorial for UDK (and also SonicGDK, independently)
    Oh, so now how do I show the map title name?

    BTW...

    [​IMG]

    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
     
  13. 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.
     
  14. Handepsilon

    Handepsilon

    UE3 Overuser
    20
    0
    0
    Indonesia
    Tutorial for UDK (and also SonicGDK, independently)
    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
     
  15. 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.
     
  16. Handepsilon

    Handepsilon

    UE3 Overuser
    20
    0
    0
    Indonesia
    Tutorial for UDK (and also SonicGDK, independently)
    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 ^^'
     
  17. Handepsilon

    Handepsilon

    UE3 Overuser
    20
    0
    0
    Indonesia
    Tutorial for UDK (and also SonicGDK, independently)


    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.
     
  18. Handepsilon

    Handepsilon

    UE3 Overuser
    20
    0
    0
    Indonesia
    Tutorial for UDK (and also SonicGDK, independently)
    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... :)
     
  19. Endgame

    Endgame

    Formerly The Growler Member
    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)?
     
  20. Azu

    Azu

    I must be stupid. Member
    It's been possible for a while.