Does anyone know?]]>5. What was the compositional process like? Were you told by the developers what to make, and shown the level the song would be used for? Or was it a more general process?
As mentioned earlier some level designers would be very specific with their ideas. Inoxx was one (Cedric Fiorentino) and Myscha (T. Eliot Cannon) were two of the most vocal of the designers, and Inoxx’s requests led to one of the most interesting pieces, Ghost.it I think it was called, though I’m not at all sure what level it was for or what the final filename is. Myscha worked very closely with Michiel on the crashed spaceship and it’s multiple levels, and I believe he was very happy with it.
Does anyone know?]]>5. What was the compositional process like? Were you told by the developers what to make, and shown the level the song would be used for? Or was it a more general process?
As mentioned earlier some level designers would be very specific with their ideas. Inoxx was one (Cedric Fiorentino) and Myscha (T. Eliot Cannon) were two of the most vocal of the designers, and Inoxx’s requests led to one of the most interesting pieces, Ghost.it I think it was called, though I’m not at all sure what level it was for or what the final filename is. Myscha worked very closely with Michiel on the crashed spaceship and it’s multiple levels, and I believe he was very happy with it.
Does anyone know?5. What was the compositional process like? Were you told by the developers what to make, and shown the level the song would be used for? Or was it a more general process?
As mentioned earlier some level designers would be very specific with their ideas. Inoxx was one (Cedric Fiorentino) and Myscha (T. Eliot Cannon) were two of the most vocal of the designers, and Inoxx's requests led to one of the most interesting pieces, Ghost.it I think it was called, though I'm not at all sure what level it was for or what the final filename is. Myscha worked very closely with Michiel on the crashed spaceship and it's multiple levels, and I believe he was very happy with it.
Does anyone know?5. What was the compositional process like? Were you told by the developers what to make, and shown the level the song would be used for? Or was it a more general process?
As mentioned earlier some level designers would be very specific with their ideas. Inoxx was one (Cedric Fiorentino) and Myscha (T. Eliot Cannon) were two of the most vocal of the designers, and Inoxx's requests led to one of the most interesting pieces, Ghost.it I think it was called, though I'm not at all sure what level it was for or what the final filename is. Myscha worked very closely with Michiel on the crashed spaceship and it's multiple levels, and I believe he was very happy with it.
Attachments
Attachments
Attachments
Attachments
Attachments
Attachments
Unfortunately there isn't enough interface or parameters for sound effects to futher separate that. I wanted to implement something like SoundChannels (like in UE3) for that, but it'll have to wait until next 227 version.Some sounds are looping now when using PlaySound. I know that the sounds are imported with a flag that tells them to loop and they always have had it, but they didn't used to loop when just using PlaySound. I assume this is an intended fix, but if that's the case, is there any way to change the code to play it only once instead of having to modify and re-import all of the affected sounds?
Warning like that happens if actor destroys itself during Post/PreBeginPlay events on clientside.MonsterSpawn seems to throw a few warnings in the console every so often:From the code it looks like it spawns that xxMSEffects class on every current player's Location on a timer. Would this be because it's spawning e.g. in the ground or something and can't be loaded when the ActorChannel becomes relevant?Code: Select all
Warning: Could not spawn ActorChannel object Class MonsterSpawnX.xxMSEffects!
Probably missing a space bar in int file, you can manually correct that (UnrealShare.int, DeathVerb=" was ").Did something change with death message parsing somewhere? I'm still using an older, modified version of xCoop, so that on its own is probably half my problem. But the custom messages it has all seem to be missing a space after the victim name, and the killer seems to have an extra space before it (e.g. "Matrixwas killed by a Manta"). It didn't used to be like that
SpawnOwner defaults to None, SpawnInstigator defaults to spawner actors Instigator value.]]>When you call Spawn, if you don't supply a SpawnOwner or SpawnInstigator field, are they defaulted to the calling actor or are they just None?
Unfortunately there isn't enough interface or parameters for sound effects to futher separate that. I wanted to implement something like SoundChannels (like in UE3) for that, but it'll have to wait until next 227 version.Some sounds are looping now when using PlaySound. I know that the sounds are imported with a flag that tells them to loop and they always have had it, but they didn't used to loop when just using PlaySound. I assume this is an intended fix, but if that's the case, is there any way to change the code to play it only once instead of having to modify and re-import all of the affected sounds?
Warning like that happens if actor destroys itself during Post/PreBeginPlay events on clientside.MonsterSpawn seems to throw a few warnings in the console every so often:From the code it looks like it spawns that xxMSEffects class on every current player's Location on a timer. Would this be because it's spawning e.g. in the ground or something and can't be loaded when the ActorChannel becomes relevant?Code: Select all
Warning: Could not spawn ActorChannel object Class MonsterSpawnX.xxMSEffects!
Probably missing a space bar in int file, you can manually correct that (UnrealShare.int, DeathVerb=" was ").Did something change with death message parsing somewhere? I'm still using an older, modified version of xCoop, so that on its own is probably half my problem. But the custom messages it has all seem to be missing a space after the victim name, and the killer seems to have an extra space before it (e.g. "Matrixwas killed by a Manta"). It didn't used to be like that
SpawnOwner defaults to None, SpawnInstigator defaults to spawner actors Instigator value.]]>When you call Spawn, if you don't supply a SpawnOwner or SpawnInstigator field, are they defaulted to the calling actor or are they just None?
So I did recompile a few mods in UED where I saw this happening (recompiled individual classes and also hit Recompile All to be safe) and saved them, and still saw the issues.Strange oddities like that typically happen if you create a class in UnrealEd and don't compile code, which leaves the new class in an odd state of hybrid old and new class.
Code: Select all
class TestPawn extends Krall;
function PreBeginPlay() {
super.PreBeginPlay();
Log("PRE: MENUNAME="$MenuName$", CLASS="$string(Class.Name));
}
function BeginPlay() {
super.BeginPlay();
Log("BEG: MENUNAME="$MenuName$", CLASS="$string(Class.Name));
}
function PostBeginPlay() {
super.PostBeginPlay();
Log("POST: MENUNAME="$MenuName$", CLASS="$string(Class.Name));
}
Code: Select all
ScriptLog: PRE: MENUNAME=Krall, CLASS=testpawn
ScriptLog: BEG: MENUNAME=Krall, CLASS=testpawn
ScriptLog: POST: MENUNAME=Krall, CLASS=testpawn
Code: Select all
ScriptLog: PRE: MENUNAME=testpawn, CLASS=testpawn
ScriptLog: BEG: MENUNAME=testpawn, CLASS=testpawn
ScriptLog: POST: MENUNAME=testpawn, CLASS=testpawn
Got it, I'll just change the sounds or take some time to reimport everything properly then when I track it all down.Unfortunately there isn't enough interface or parameters for sound effects to futher separate that. I wanted to implement something like SoundChannels (like in UE3) for that, but it'll have to wait until next 227 version.
Alright, I'll go look around and play with that code a bit more later thenWarning like that happens if actor destroys itself during Post/PreBeginPlay events on clientside.
For xCoop it's mostly defined in the .ini for it. The verbs in UnrealShare.int have the expected spaces though, and I don't believe xCoop redefines the verbs. It definitely used to display it fine in 227i, but it's not a big issue; I can easily just regex a space into all of the xCoop mesasges.Probably missing a space bar in int file, you can manually correct that (UnrealShare.int, DeathVerb=" was ").
Got it, thank you!]]>SpawnOwner defaults to None, SpawnInstigator defaults to spawner actors Instigator value.
So I did recompile a few mods in UED where I saw this happening (recompiled individual classes and also hit Recompile All to be safe) and saved them, and still saw the issues.Strange oddities like that typically happen if you create a class in UnrealEd and don't compile code, which leaves the new class in an odd state of hybrid old and new class.
Code: Select all
class TestPawn extends Krall;
function PreBeginPlay() {
super.PreBeginPlay();
Log("PRE: MENUNAME="$MenuName$", CLASS="$string(Class.Name));
}
function BeginPlay() {
super.BeginPlay();
Log("BEG: MENUNAME="$MenuName$", CLASS="$string(Class.Name));
}
function PostBeginPlay() {
super.PostBeginPlay();
Log("POST: MENUNAME="$MenuName$", CLASS="$string(Class.Name));
}
Code: Select all
ScriptLog: PRE: MENUNAME=Krall, CLASS=testpawn
ScriptLog: BEG: MENUNAME=Krall, CLASS=testpawn
ScriptLog: POST: MENUNAME=Krall, CLASS=testpawn
Code: Select all
ScriptLog: PRE: MENUNAME=testpawn, CLASS=testpawn
ScriptLog: BEG: MENUNAME=testpawn, CLASS=testpawn
ScriptLog: POST: MENUNAME=testpawn, CLASS=testpawn
Got it, I'll just change the sounds or take some time to reimport everything properly then when I track it all down.Unfortunately there isn't enough interface or parameters for sound effects to futher separate that. I wanted to implement something like SoundChannels (like in UE3) for that, but it'll have to wait until next 227 version.
Alright, I'll go look around and play with that code a bit more later thenWarning like that happens if actor destroys itself during Post/PreBeginPlay events on clientside.
For xCoop it's mostly defined in the .ini for it. The verbs in UnrealShare.int have the expected spaces though, and I don't believe xCoop redefines the verbs. It definitely used to display it fine in 227i, but it's not a big issue; I can easily just regex a space into all of the xCoop mesasges.Probably missing a space bar in int file, you can manually correct that (UnrealShare.int, DeathVerb=" was ").
Got it, thank you!]]>SpawnOwner defaults to None, SpawnInstigator defaults to spawner actors Instigator value.
Code: Select all
set levelinfo brightness 1.5
flush
...before you run into "greenies" (i.e. lightmap clamping).Code: Select all
set levelinfo brightness 1.5
flush
...before you run into "greenies" (i.e. lightmap clamping).Confirmed, not enabled.Also, make sure OneXBlending is NOT enabled.
Is this what would be required if I wanted to force this brightness on a custom map that I make? Also how do I keep from having to re-enter this command on each load?Also, if you can write UScript, you can fake the software brightness by drawing a full-screen-sized modulated white square.
Confirmed, not enabled.Also, make sure OneXBlending is NOT enabled.
Is this what would be required if I wanted to force this brightness on a custom map that I make? Also how do I keep from having to re-enter this command on each load?Also, if you can write UScript, you can fake the software brightness by drawing a full-screen-sized modulated white square.
Besides by writing a mutator, I don't know. Perhaps bind it to some key?]]>Also how do I keep from having to re-enter this command on each load?
Besides by writing a mutator, I don't know. Perhaps bind it to some key?]]>Also how do I keep from having to re-enter this command on each load?
Code: Select all
//=============================================================================
// MMUGottaGoFastz.
//=============================================================================
class MMUGottaGoFastz expands DeathMatchGame;
function float PlayerJumpZScaling()
{
if ( bHardCoreMode )
return 1.5;
else
return 1.5;
}
function int ReduceDamage(int Damage, name DamageType, pawn injured, pawn instigatedBy)
{
// Ignore fall damage
if (DamageType == 'Fell')
return 0;
// Check if the injured pawn is in a neutral zone, if so, return 0 damage
if (injured.Region.Zone.bNeutralZone)
return 0;
// If the damage is caused by no one (e.g., environmental damage), return the original damage
if (instigatedBy == None)
return Damage;
// If in hardcore mode, don't modify damage
if (bHardCoreMode)
return Damage;
// Skill level modification
if ((instigatedBy.Skill < 1.5) && instigatedBy.IsA('Bots') && injured.IsA('PlayerPawn'))
Damage = Damage * (0.7 + 0.15 * instigatedBy.skill);
// Apply damage scaling based on instigator
return (Damage * instigatedBy.DamageScaling);
}
Code: Select all
//=============================================================================
// MMUBunnyBoots.
//=============================================================================
class MMUBunnyBoots expands Pickup;
var Vector PreviousLocation; // Declare PreviousLocation at the class level
var Vector AcceleratedVelocity; // Store the accelerated velocity
var bool JustLanded; // Track whether the player has just landed from a jump
state Activated
{
function endstate()
{
if (Owner != None)
{
Pawn(Owner).Airspeed = Pawn(Owner).Default.Airspeed;
Pawn(Owner).Groundspeed = Pawn(Owner).Default.Groundspeed;
Pawn(Owner).Acceleration = Pawn(Owner).Default.Acceleration;
Pawn(Owner).AirControl = Pawn(Owner).Default.AirControl;
}
bActive = false;
}
function AccelerateInAir()
{
// Check if the player is in the air
if (Pawn(Owner).Physics == PHYS_Falling)
{
// Accelerate the player
AcceleratedVelocity = Pawn(Owner).Velocity + Pawn(Owner).Velocity * 0.00000001; // Increase velocity by 10% each tick
}
}
function Tick(float DeltaTime)
{
Super.Tick(DeltaTime);
// Check if the player is moving downhill or in the air
if (Pawn(Owner).Location.Z < PreviousLocation.Z || Pawn(Owner).Physics == PHYS_Falling)
{
// Apply accelerated velocity
if (AcceleratedVelocity != vect(0,0,0))
{
Pawn(Owner).Velocity = AcceleratedVelocity;
}
else
{
// Accelerate the player
Pawn(Owner).Velocity += Pawn(Owner).Velocity * 0.001; // Increase velocity by 10% when moving downhill or in the air
}
}
else if (Pawn(Owner).Location.Z > PreviousLocation.Z)
{
// Decrease velocity when moving uphill
Pawn(Owner).Velocity *= 0.75; // Reduce velocity by half when moving uphill
}
// Check if the player has just landed from a jump
if (Pawn(Owner).Physics == PHYS_Walking && PreviousLocation.Z > Pawn(Owner).Location.Z)
{
JustLanded = true; // Set the flag when the player transitions from falling to walking
}
// Apply bounce effect if the player has just landed from a jump
if (JustLanded)
{
// Apply bounce effect
Pawn(Owner).Velocity *= 1.25; // Increase velocity by 50% upon landing
JustLanded = false; // Reset the flag
}
// Update previous location
PreviousLocation = Pawn(Owner).Location;
}
Begin:
Pawn(Owner).Airspeed = Pawn(Owner).Default.Airspeed * 2.0;
Pawn(Owner).Groundspeed = Pawn(Owner).Default.Groundspeed * 2.0;
Pawn(Owner).Acceleration = Pawn(Owner).Default.Acceleration * 18.0;
Pawn(Owner).AirControl = Pawn(Owner).Default.AirControl * 16.0;
PreviousLocation = Pawn(Owner).Location; // Initialize PreviousLocation
JustLanded = false; // Initialize JustLanded flag
}
state DeActivated
{
Begin:
}
Code: Select all
//=============================================================================
// MMUGottaGoFastz.
//=============================================================================
class MMUGottaGoFastz expands DeathMatchGame;
function float PlayerJumpZScaling()
{
if ( bHardCoreMode )
return 1.5;
else
return 1.5;
}
function int ReduceDamage(int Damage, name DamageType, pawn injured, pawn instigatedBy)
{
// Ignore fall damage
if (DamageType == 'Fell')
return 0;
// Check if the injured pawn is in a neutral zone, if so, return 0 damage
if (injured.Region.Zone.bNeutralZone)
return 0;
// If the damage is caused by no one (e.g., environmental damage), return the original damage
if (instigatedBy == None)
return Damage;
// If in hardcore mode, don't modify damage
if (bHardCoreMode)
return Damage;
// Skill level modification
if ((instigatedBy.Skill < 1.5) && instigatedBy.IsA('Bots') && injured.IsA('PlayerPawn'))
Damage = Damage * (0.7 + 0.15 * instigatedBy.skill);
// Apply damage scaling based on instigator
return (Damage * instigatedBy.DamageScaling);
}
Code: Select all
//=============================================================================
// MMUBunnyBoots.
//=============================================================================
class MMUBunnyBoots expands Pickup;
var Vector PreviousLocation; // Declare PreviousLocation at the class level
var Vector AcceleratedVelocity; // Store the accelerated velocity
var bool JustLanded; // Track whether the player has just landed from a jump
state Activated
{
function endstate()
{
if (Owner != None)
{
Pawn(Owner).Airspeed = Pawn(Owner).Default.Airspeed;
Pawn(Owner).Groundspeed = Pawn(Owner).Default.Groundspeed;
Pawn(Owner).Acceleration = Pawn(Owner).Default.Acceleration;
Pawn(Owner).AirControl = Pawn(Owner).Default.AirControl;
}
bActive = false;
}
function AccelerateInAir()
{
// Check if the player is in the air
if (Pawn(Owner).Physics == PHYS_Falling)
{
// Accelerate the player
AcceleratedVelocity = Pawn(Owner).Velocity + Pawn(Owner).Velocity * 0.00000001; // Increase velocity by 10% each tick
}
}
function Tick(float DeltaTime)
{
Super.Tick(DeltaTime);
// Check if the player is moving downhill or in the air
if (Pawn(Owner).Location.Z < PreviousLocation.Z || Pawn(Owner).Physics == PHYS_Falling)
{
// Apply accelerated velocity
if (AcceleratedVelocity != vect(0,0,0))
{
Pawn(Owner).Velocity = AcceleratedVelocity;
}
else
{
// Accelerate the player
Pawn(Owner).Velocity += Pawn(Owner).Velocity * 0.001; // Increase velocity by 10% when moving downhill or in the air
}
}
else if (Pawn(Owner).Location.Z > PreviousLocation.Z)
{
// Decrease velocity when moving uphill
Pawn(Owner).Velocity *= 0.75; // Reduce velocity by half when moving uphill
}
// Check if the player has just landed from a jump
if (Pawn(Owner).Physics == PHYS_Walking && PreviousLocation.Z > Pawn(Owner).Location.Z)
{
JustLanded = true; // Set the flag when the player transitions from falling to walking
}
// Apply bounce effect if the player has just landed from a jump
if (JustLanded)
{
// Apply bounce effect
Pawn(Owner).Velocity *= 1.25; // Increase velocity by 50% upon landing
JustLanded = false; // Reset the flag
}
// Update previous location
PreviousLocation = Pawn(Owner).Location;
}
Begin:
Pawn(Owner).Airspeed = Pawn(Owner).Default.Airspeed * 2.0;
Pawn(Owner).Groundspeed = Pawn(Owner).Default.Groundspeed * 2.0;
Pawn(Owner).Acceleration = Pawn(Owner).Default.Acceleration * 18.0;
Pawn(Owner).AirControl = Pawn(Owner).Default.AirControl * 16.0;
PreviousLocation = Pawn(Owner).Location; // Initialize PreviousLocation
JustLanded = false; // Initialize JustLanded flag
}
state DeActivated
{
Begin:
}
Can't tell if this is sarcasm. Anthology was another Unreal Gold situation in which Unreal was provided but was incompatible with other versions of the same game because of (if i recall) a different corporate logo on the flyby, so Anthology players couldn't connect with UGold or retail Unreal players, the same way UGold players could only connect with other UGold players or 225 servers.
Can't tell if this is sarcasm. Anthology was another Unreal Gold situation in which Unreal was provided but was incompatible with other versions of the same game because of (if i recall) a different corporate logo on the flyby, so Anthology players couldn't connect with UGold or retail Unreal players, the same way UGold players could only connect with other UGold players or 225 servers.
You've got your priorities in the wrong order. I don't care if they talk about it on their website, but "disappearing" the whole Unreal franchise from the face of the earth is a real shame.
You've got your priorities in the wrong order. I don't care if they talk about it on their website, but "disappearing" the whole Unreal franchise from the face of the earth is a real shame.
I see you point, but legacy is just a marketing buzzword for luxury companies nowadays, I wouldn't count on video game companies to care about it.
Do you though? Many games are being sold right now when their original makers have disbanded or moved on, with games being bought twenty times by several different companies who at most make sure the game works on current systems (if that). With Unreal games being so resilient to hardware and software change, I don't see what would have to be done. They could even provide a link to fan sites likes OldUnreal or ut99.org for support, they wouldn't be the first to outsource support to a fan community.
I'm thankfull for years of good support and free content during the good old days, when they would release not only patches but map packages and new game mods along with them. That made the 3 years lifecycle of UT2004 feel like a decade of fun to me, this is why I had high standard with Epic. But I wouldn't expect new bonus packs or patchs in 2024, just the game being accessible.
That's what bothers me. They could have it all handled by someone else, but I guess they just don't care.
I see you point, but legacy is just a marketing buzzword for luxury companies nowadays, I wouldn't count on video game companies to care about it.
Do you though? Many games are being sold right now when their original makers have disbanded or moved on, with games being bought twenty times by several different companies who at most make sure the game works on current systems (if that). With Unreal games being so resilient to hardware and software change, I don't see what would have to be done. They could even provide a link to fan sites likes OldUnreal or ut99.org for support, they wouldn't be the first to outsource support to a fan community.
I'm thankfull for years of good support and free content during the good old days, when they would release not only patches but map packages and new game mods along with them. That made the 3 years lifecycle of UT2004 feel like a decade of fun to me, this is why I had high standard with Epic. But I wouldn't expect new bonus packs or patchs in 2024, just the game being accessible.
That's what bothers me. They could have it all handled by someone else, but I guess they just don't care.