[INFO] Development Journal

Post Reply
User avatar
[did]Madis
Adept
Posts: 297
Joined: Tue Jun 03, 2008 2:48 pm
Personal rank: カニはとても美味しい

Re: [INFO] Development Journal

Post by [did]Madis »

papercoffee wrote:
[did]Madis wrote:Shadow, you make me moist.
:shock: ....this picture... in my mind ...go away ...nooooooooo
What makes you think that I'm not an incredibly gorgeous, busty woman?
Support Nuclear Races by visiting our ModDB profile
Image
Image
User avatar
papercoffee
Godlike
Posts: 10451
Joined: Wed Jul 15, 2009 11:36 am
Personal rank: coffee addicted !!!
Location: Cologne, the city with the big cathedral.
Contact:

Re: [INFO] Development Journal

Post by papercoffee »

[did]Madis wrote:
papercoffee wrote:
[did]Madis wrote:Shadow, you make me moist.
:shock: ....this picture... in my mind ...go away ...nooooooooo
What makes you think that I'm not an incredibly gorgeous, busty woman?
:shock: ....this picture... in my mind ...go away ...nooooooooo
User avatar
[did]Madis
Adept
Posts: 297
Joined: Tue Jun 03, 2008 2:48 pm
Personal rank: カニはとても美味しい

Re: [INFO] Development Journal

Post by [did]Madis »

I have a question - Does the UT99 SDK have online support? I mean, could you make a mod that uses SDK features but can be and is intended to be played online?

Would the players require to install the SDK before being able to play online?
Support Nuclear Races by visiting our ModDB profile
Image
Image
User avatar
Creavion
Godlike
Posts: 4497
Joined: Sun Feb 17, 2008 7:23 pm
Personal rank: About to be non-act.
Location: Germany, Lower Saxony

Re: [INFO] Development Journal

Post by Creavion »

I think many players and modders would seek for Shadows head if they would find out that online support is not available. He is a professional coder and scripter. Without to ask (him), you can assume that^^ (I hope I am not wrong)
About to be non-active
My very last UT map project: CTF-FacePalm (tropical CTF-Face remake)
Why do I leave? click here
What I want to do next: Joining an UDK team (uncertain however) and improve 3D modelling and texture editing skills
Thanks to those who visibly supported me until/at the end!
My reactivated account on indiedb.com.
User avatar
Shadow
Masterful
Posts: 743
Joined: Tue Jan 29, 2008 12:00 am
Personal rank: Mad Carpenter
Location: Germany
Contact:

Re: [INFO] Development Journal

Post by Shadow »

SDK is intended to support online and offline play.
Owning two computers I can test network campatiblities myself.

In order to simply run new mods that base on the SDK there'll be a runtime version just with the binaries only.
Image
User avatar
[did]Madis
Adept
Posts: 297
Joined: Tue Jun 03, 2008 2:48 pm
Personal rank: カニはとても美味しい

Re: [INFO] Development Journal

Post by [did]Madis »

Shadow wrote:SDK is intended to support online and offline play.
Owning two computers I can test network campatiblities myself.

In order to simply run new mods that base on the SDK there'll be a runtime version just with the binaries only.
That's awesome!
Support Nuclear Races by visiting our ModDB profile
Image
Image
User avatar
Shadow
Masterful
Posts: 743
Joined: Tue Jan 29, 2008 12:00 am
Personal rank: Mad Carpenter
Location: Germany
Contact:

Re: [INFO] Development Journal

Post by Shadow »

Yarp ! Because the runtime won't be bigger than 30 MB, a downloadable anyone can effort to be able to play/see new freaky shit.

Currently working on this:

- New Console System (supports different 3 Menu Systems, changeable via configuration file)
- New Menu System, entitled "XMenus" (will feature 3D / 2D Menu Interaction, with custom environment backgrounds, mod support, custom cursors and many previously HIDDEN configurations, easy custom menu setup, forget UWindow System !)
- New Menu System, entitled "Unreal-Style UT Menu" (unreal's classic menu style adapted on UT)
- Messing around with UWindows...
- implementing New Media Support for Sound and Music Playback, supports MP3, WMA, OGG and WAV, own Media Subdirectories, Playback Functions are globally accessable from out of every Class (Play,Stop,Pause, global/class-based Volume)

Concerning UWindows: geeee.. again I must say: this is the most fucked up GUI I have ever seen :ironic2:
Image
Myth
Inhuman
Posts: 988
Joined: Tue Feb 12, 2008 5:57 pm
Personal rank: Low Poly Freak

Re: [INFO] Development Journal

Post by Myth »

Concerning the last post. Is it possible to update the mod/s3m/xm/it player? The current one seriously lacks sample ramping. UT doesn't even have support for many of *.it's features. Support for compressed samples would kick some serious mp3 ass. If i recall well FMOD supports ogg compressed samples, and modplug has a more older ADPCM compression.
What would really rock is to translate zxx commands into unreal events. That way a mapper could make the lights change on rhythm and any other kinds of events based on rhythm or just use the module as a dispatcher whit precise and easy to use timing for multiple cinematic effects. Modplug is open source :D
Ok, ok, I get it you're working your ass off and we're asking for the impossible, but this could easily be one of the best features, especially for SP mappers. Ok ok, I shut up. Keep up the good work whit whats already planned.
User avatar
[did]Madis
Adept
Posts: 297
Joined: Tue Jun 03, 2008 2:48 pm
Personal rank: カニはとても美味しい

Re: [INFO] Development Journal

Post by [did]Madis »

Myth wrote:Concerning the last post. Is it possible to update the mod/s3m/xm/it player? The current one seriously lacks sample ramping. UT doesn't even have support for many of *.it's features. Support for compressed samples would kick some serious mp3 ass. If i recall well FMOD supports ogg compressed samples, and modplug has a more older ADPCM compression.
What would really rock is to translate zxx commands into unreal events. That way a mapper could make the lights change on rhythm and any other kinds of events based on rhythm or just use the module as a dispatcher whit precise and easy to use timing for multiple cinematic effects. Modplug is open source :D
Ok, ok, I get it you're working your ass off and we're asking for the impossible, but this could easily be one of the best features, especially for SP mappers. Ok ok, I shut up. Keep up the good work whit whats already planned.
That would definitely be something I'd overuse.
Support Nuclear Races by visiting our ModDB profile
Image
Image
User avatar
Shadow
Masterful
Posts: 743
Joined: Tue Jan 29, 2008 12:00 am
Personal rank: Mad Carpenter
Location: Germany
Contact:

Re: [INFO] Development Journal

Post by Shadow »

No, myth it's ok. I'm very open to new ideas, and I think I gonna implement it, since modplug is open source, this shouldn't be too hard. Either in the first release (if I gonna make it) or in a update I'm going to implement this.

//edit:

Small Update for today:

Daily updating the sdkObject.uc / UsdkObject.h / UsdkObject.cpp I frequently add new useful global functions the standard Object class (on my point of view) hardly missed out. So here's a small overview of all shortly added math and general purpose functions, and variable structs.


Structures

Code: Select all

struct fModifier
{
	var() float Base, X, Y, Mod;	
	var() range Range;

	var() enum eOperation
	{
		OP_Constant,
		OP_Increase,
		OP_Decrease,
		OP_Timer,
		OP_Random,
		OP_Sin,
		OP_Unused
	}Operation;
};
The fmodifier struct gives complete control over a float value in realtime in connection with the XAdjustValue Function. The Range variable contains Min and Max values. Base is the (new) initial value to start from. X and Y are timing rates, mod is a delay and tick value.
Modes:
  • OP_Constant - Linearly applies new value based on Base
    OP_Increase - smoothly increases new value starting from Base to max, timed by X
    OP_Decrease - smoothly increases new value starting from Base to min, timed by Y
    OP_Timer - smoothly loops between Min / Max, timed by X and Y, mod sets X additional ticks the value should stay on Min / Max when approaching these
    OP_Random - randomizes between Min / Max Range, is either one shot (mod = negative value), instantly applied (mod = 0) or tick-wise applied (mod = X Ticks)
    OP_Sin - smoothly applies a sin function on new value, it adjusts the value based on Base by the Amplitude Max , the frequency X and the damping Y
    OP_Unchanged - sometimes useful, if the new value shall have it's default value at begin
Math / Vector / Rotator Functions

Code: Select all

static final function XAdjustValue(out float NewValue,byte Mode, float T,float Base, float Mod,float Max, float Min,float X, float Y,out float vTemp,out int vBuffer)

static final function vector Vect2(float x,float y,float z)
static final function vector Vect2D(float x,float y)
static final function float VSizeSq(vector V)
static final function float DotWOZ(vector A, vector B)
static final function float VSize2D(vector V)
static final function float VSizeSq2D(vector V)
static final function vector VAbs(vector V)
static final function vector VMin(vector A, vector B)
static final function vector VMax(vector A, vector B)
static final function vector VClamp(vector V, vector Max, vector Min)
static final function float VClamp2(vector V, float Max, float Min)
static final function vector VRange(vector min, vector max)
static final function vector Spat(vector A,vector B,vector C)
static final function vector DoubleCross(vector A,vector B,vector C)
static final function vector VLerp(vector A,vector B,float Alpha)
static final function vector VSmerp(vector A,vector B,float Alpha)
static final function bool VInterpolate(vector A,vector B,out vector DeltaV,float DeltaT)
static function float GetDistanceBetween(vector A,vector B,optional int DFactor)
static function vector GetVectorDistance(vector A,vector B)
static function bool IsDistanceGreater(vector A,vector B,float Compare)
static final function bool NearSpot(vector v1, vector v2, float radius, float height)

static final operator(16) rotator * (rotator A, rotator B)
static final operator(16) rotator / (rotator A, rotator B)
static final function rotator Rot2(int p,int y,int r)
static final function float RSize(rotator r)
static final function float RSizeNRoll(rotator r)
static final function rotator RMin(rotator A, rotator B)
static final function rotator RMax(rotator A, rotator B)
static final function rotator RClamp(rotator R, rotator Max, rotator Min)
static final function rotator RClamp2(rotator Max, rotator Min)
static final function rotator RRange(rotator Max, rotator Min)
static final function rotator RLerp(rotator A,rotator B,float Alpha)
static final function rotator RSmerp(rotator A,rotator B,float Alpha)
static final function bool RInterpolate(rotator RA,rotator RB,out rotator DeltaR,float DeltaT)
General Purpose Functions

Code: Select all

static final function bool RandBool()
static final function playerpawn GetPlayer(actor A)
static final function vector GetPlayerLocation(actor a)
static final function rotator GetPlayerRotation(actor a)
static final function rotator GetPlayerViewRotation(actor a)
static final function music GetSong(actor a)
static final function hud GetHUD(actor A)
static final function LevelInfo GetLevel(actor A)
static final function LevelInfo GetEntryLevel(actor A)
static final function gameinfo GetGameinfo(actor A)
static final function gamereplicationinfo GetRepInfo(actor A)
static final function PlayerReplicationInfo GetPRI(actor A)
static final function int GetMasterMusicVolume(actor a)
static final function int GetMasterSoundVolume(actor a)
static final function bool IsPlayerLineOfSightTo(actor A)
static final function float GetDefaultFOV(actor a)
static final function float GetDesiredFOV(actor a)
static final function PlayerConsoleCommand(actor a, string command)
static final function CopyTxtToClipboard(actor a, string copy)
static final function string PasteTxtFromClipboard(actor a, string copy)
static final function GetSysMousePos(out float x, out float y)
static final function actor GetActorList(actor a)
static final function actor GetLightList(actor a)
static final function pawn GetPawns(actor a)
static final function scriptedpawn GetScriptedPawns(actor a)
static final function pawn GetSpecPawn(actor a, name n)
static final function sdkvehicle GetVehicleList(actor a)
static final function sdkvehicle GetVehicleClass(actor a,name VClass)
static final function navigationpoint GetNavigationPointList(Actor A)
static final function navigationpoint GetSpecNavigationPoints(Actor A,name Na)
static final function name GetOperatingSystem(actor a)
static final function bool Win32_64(actor a)
native static final function bool 	InitSDKPlayback()
native static final function 		UpdateSDKPlayback()
native static final function 		ShutdownSDKPlayback()
native static final function bool 	PlaySound(string File, bool LoopSound)
native static final function bool 	PlayMusic(string File, bool LoopMusic)
native static final function 		StopSound()
native static final function 		StopMusic()
native static final function 		PauseSound(bool bPauseSound)
native static final function 		PauseMusic(bool bPauseMusic)
native static final function bool 	IsPlayingSound()
native static final function bool 	IsPlayingMusic()
native static final function 		SetNewVolume(int NewVolume)
native static final function int 	GetCurVolume()
static final function bool GetBoundingBox(vector pos,vector center,vector dimension,out vector volume)
static final function bool GetBoundingCylinder(vector pos,vector center,float height,float radius,out vector volume)
static final function bool GetBoundingHCylinder(vector pos,vector center,float height,float innerradius,float thickness,out vector volume)
static final function bool GetBoundingCone(vector pos,vector center,float height,float radius,out vector volume)
static final function bool jThal(int day, int month, int year, out string cDay)
static final function bool jThal2(int day, int month, int year, out string cDay, out string bDay, out string nDay)
static final function TimeSwap(float h, out int xSec, out int xMin, out int xH, out int xD)
static final function int TimeSwap2(int xSec, int xMin, int xH, int xD)
static final function GetSimQAxis(actor A,bool bFacing,vector Axis,out vector QuatRAxis,optional vector B,optional rotator Dir)
static final function UpdateSimQRot(actor A,bool bFacing,float T,rotator RRate,vector Axis,optional vector B,optional vector Dir)
static final function Orient(actor a, float t, byte Mode, name tag, vector offset, vector axis, optional vector dir)
Most functions should be self explonary by their name, but here are some additional information:

GetPlayer works for singleplayer / offline and multiplayer / online play.
On clients it returns the ONE and only player, on a server it returns all currently present players.

The time functions jThal, jThal2, TimeSwap and TimeSwap do the following.
jThal returns the current name of the day by given Year, Month and Day Date.
jThal2 is an extension of jThal. Given Year, Month and Day Date it returns current day, the day before and after as a name.
TimeSwap returns Seconds, Minute, Hour etc. of given Input Hours.
TimeSwap2 is the inversion of TimeSwap.

GetSimQAxis simulates quaternion axis ("a vector with rotation").
UpdateSimQRot simulates a quaternion rotation, allowing actors to move, attach, while spinning/rotating or facing/orienting towards a position.
Image
User avatar
Shadow
Masterful
Posts: 743
Joined: Tue Jan 29, 2008 12:00 am
Personal rank: Mad Carpenter
Location: Germany
Contact:

Re: [INFO] Development Journal

Post by Shadow »

Finished first stable build of the Sound/Music Playback system, I'm further working on next version.
The current build of the Playback System supports the following fileextensions:
  • AIFF
  • ASF / ASX
  • DLS (Internet streamable Midi-Format)
  • FLAC
  • FSB
  • IT (the well known Impulse Tracker Moduls)
  • M3U (Playlist Accessing)
  • MID / MIDI
  • MOD (Mod Plug Tracker Files)
  • MP2 & MP3
  • OGG
  • PLS (Playlist Accessing)
  • RAW - (Raw file format support)
  • S3M - (Scream Tracker 3 Mod Format)
  • VAG - (Playstation Platform Sound)
  • WAV
  • WAX (Playlist Accessing)
  • WMA
  • XM (FastTracker 2 Mod Format)
The Playback System has list storage for 64 (-1 because of Standard UT/Sound) Sound Directory Paths and 64 (-1 because of Standard UT/Music) Music Directory Paths, easy to setup in sdkCore.ini with:

Code: Select all

[sdkCore.sdkObject]
MusicDirectories(X) = C:\Games\UT\MyMod\Music
SoundDirectories(Y) = C:\Games\UT\MyMod\Sound

or

MusicDirectories(X) = ..\..\MyMod\Music
SoundDirectories(Y) = ..\..\MyMod\Sound
Where X and Y are previously free list positions.
Where ..\ = UT Root Directory + ..\ UT System Directory, for path indipendent file allocation.

The Playback API is highly optimized. It automatically detects whether a Path is set or not and only loops through set paths.
The files get streamed rather than loaded.

Next Build will have Ambient Sound Occlusion for Sound Playback (simulating distance : emitter <--> listener), implementing sound distance / radius behaviour. Additionally there'll be new Read-only Functions like :
  • GetPitch - returns current pitch value of sound/music
    set3DMinMaxDistance
    set3DOcclusion
Maybe I'm also implementing FMODEX' standard Sound Effects like Pitch Shifter, Wave Distortion, Chorus, Flanger etc.

Only downside is that FMOD isn't that well documented (damn.. I didn't see the help file lol), it features tons of sound/music functions but only a few are directly documented.

Regardless of using this new Playback System or not it doesn't matter which Unreal Engine Audio Driver you will choose.
Last edited by Shadow on Sun Feb 14, 2010 5:22 pm, edited 1 time in total.
Image
User avatar
Sp0ngeb0b
Adept
Posts: 376
Joined: Wed Feb 13, 2008 9:16 pm
Location: Cologne
Contact:

Re: [INFO] Development Journal

Post by Sp0ngeb0b »

Damn, awesome :D
Can't wait for it!
Website, Forum & UTStats

Image
******************************************************************************
Nexgen Server Controller || My plugins & mods on GitHub
******************************************************************************
User avatar
Shadow
Masterful
Posts: 743
Joined: Tue Jan 29, 2008 12:00 am
Personal rank: Mad Carpenter
Location: Germany
Contact:

Re: [INFO] Development Journal

Post by Shadow »

hey cool, thanks, another new face arriving at the journal thread !

Just added 2 new Media Functions:

Code: Select all

native static final function int 	GetMediaLength(bool bMS);
native static final function 		GetMediaVariance(out float curfreq, out float curvol);
"GetMediaLength" returns the Time Length of Sound / Music either in Seconds (bMS = false) or in Milliseconds (bMS = true)
"GetMediaVariance" dynamically shows current Frequency and Volume of Sound / Music, now one can associated these values with things like the drawscale. Guess what ? Rhythmically sizing an actor by the dynamic of a song ! So far in theory :ironic:
Image
User avatar
editor Dave
Inhuman
Posts: 904
Joined: Mon Mar 10, 2008 6:40 pm
Personal rank: Passionate SP Mapper
Location: Germany/Bavaria
Contact:

Re: [INFO] Development Journal

Post by editor Dave »

Shadow wrote:Next Build will have Ambient Sound Occlusion for Sound Playback (simulating distance : emitter <--> listener), implementing sound distance / radius behaviour.
If I understand that correctly this feature does already exist. The normal ambient sounds work like that. The further you stand in relation to the actor the quieter is the sound.
Anyway, good job on supporting all these music files :tu:
Image
10-Year Anniversary on Jun 08, 2019.
User avatar
Shadow
Masterful
Posts: 743
Joined: Tue Jan 29, 2008 12:00 am
Personal rank: Mad Carpenter
Location: Germany
Contact:

Re: [INFO] Development Journal

Post by Shadow »

editor Dave wrote:
Shadow wrote:Next Build will have Ambient Sound Occlusion for Sound Playback (simulating distance : emitter <--> listener), implementing sound distance / radius behaviour.
If I understand that correctly this feature does already exist. The normal ambient sounds work like that. The further you stand in relation to the actor the quieter is the sound.
Anyway, good job on supporting all these music files :tu:
Yes, for the Unreal Sound Output, but not for my FMOD-based Sound API. When playing a Song via PlayMusic(file,bloopmusic) the engine doesn't play anything, it's my Sound API playing that..
Image
Post Reply