UDKOSC

From CCRMA Wiki
Revision as of 21:13, 24 November 2012 by Rob (Talk | contribs) (11/24/2012)

Jump to: navigation, search

UDKOSC is an implementation of the Unreal3 engine built using the Unreal Development Kit(UDK) with an integrated OscPack Windows dll linked to custom UnrealScript classes.

By linking custom UnrealScript classes to Ross Bencina's excellent OscPack Open Sound Control c++ implementation, actions and motions taken by virtual actors in the Unreal3 game engine are encapsulated as OSC messages over UDP and used to control dynamic music and sound synthesis systems in a manner similar to q3osc.

UDKOSC Seeking projectiles tracking Target projectiles

UDKOSC was first used in performance at the 2010 September 7,8 performances of Tele-Harmonium and Perkussionista in Milano, Italy at the 2010 MiTo (Milano-Torino) Festival.

Link to Videos for the performance: https://ccrma.stanford.edu/~rob/mvw/mito/

Currently, OSC output from game engine includes:

  • User XYZ coordinate data
  • fired projectile coordinate data
  • Static mesh objects XYZ coordinate data
  • Static mesh bump event
  • Static mesh takedamage event

UDKOSC can receive OSC control input in the following ways:

  • Player X, Y, Z movement vector data
  • Player Speed
  • Player Jump + Jump Height
  • Player teleport coordinates (X, Y, Z)
  • Camera X, Y, Z movement vector data
  • Camera Pitch, Yaw, Roll control data
  • Camera Speed
  • "Large" Projectile homing-target coordinates

Custom engine features include:

  • Player and Camera motion control over OSC
  • bouncing projectiles (customized OSCProj_ShockBall and OSCProj_LinkPlasma)
  • global projectile destructor exec command
  • homing/seeking projectiles (OSCProj_SeekingShockBall and OSCProj_SeekingRocket)
  • projectiles tracking projectiles
  • projectiles tracking OSC Input vector coordinates
  • OSC Interp Actor and Trigger classes to send OSC on move and trigger events


Overview

UDKOSC is the fourth project in a lineage of integrating virtual worlds and environments with interactive audio and music servers with a common goal of creating shared and distributed musical performance spaces. Like our custom Sirikata implementation for the 2009 MiTo festival, q3osc and Maps & Legends before, UDKOSC combines a game-based virtual world implementation (in this case the Unreal Development Kit or UDK) with customized classes to stream game-data to interactive sound-servers using Open Sound Control messages over UDP. In this manner, gestures, motions and actions from actors in virtual space can be transformed in real-time into control messages for complex audio and musical software systems.

While the UDK offers only free access to the engine's UnrealScript programming layer (leaving the core C++ engine accessible only through significant financial investment) UnrealScript has a provision for binding Windows Win32 .dll's to UnrealScript classes, enabling code such as a C++ implementation of Open Sound Control (in this case, Ross Bencina's OSCPack) to provide bi-directional communication between game engine and sound-server. By then creating mirrored data structures both in UnrealScript classes and in the Windows .dll, data can be passed back and forth between the UDK and any OSC-enabled control system or software, including ChucK, Supercollider, Pure Data (PD) and Max/MSP.

For UDKOSC, a custom Windows oscpack_1_0_2.dll was compiled with specific extern methods and mirrored data structures to communicate with the game engine, both to stream specific game data out as OSC over UDP (including Pawn XYZ coordinate positioning, XYZ coordinate tracking for in-game projectiles, state and XYZ coordinate info for Static Mesh and Interp actor classes) and to send control data from iPad controllers and from the audio-engine itself back into the game to control Global GameInfo parameters such as world Gravity and GameRate, as well as specific positioning information for projecties and static actors.

Custom Functionalities

  • Player Pawn outputs location, landed, crouch events over OSC
  • Homing projectiles (ShockBalls, SeekingShockBalls)
    • Can be assigned to track other projectiles (ShockBalls), UTVolumes or targeted locations (via left-mouse fire trigger)
    • Can be resized; size param is sent over OSC
    • Bounce and Destroyed events tracked over OSC
    • Instance numbering and class name/type tracked over OSC
    • ShockBall projectiles can target XYZ coordinates input via OSC
  • InterpActors track position deltas over OSC
    • takeDamage, bump and touch events output OSC
  • Triggers fire triggeron, triggeroff events over OSC
  • Gravity and GameSpeed can be set via OSC
  • OSC can be used to control player movement (X, Y, Z vector directions, Speed and Jump)
  • OSC can be used to control camera movement (X, Y, Z, Pitch, Yaw, Roll, Speed)

Custom Classes and Files

UDK\UDK-2010-07\Binaries\Win32\UserCode

oscpack_1_0_2.dll

UDK\UDK-2010-07\UDKGame\Config

DefaultGame.ini
DefaultOSC.ini
DefaultUT3OSC.ini
DefaultEngine.ini
DefaultInput.ini 
NOTE: Default .ini files generate UDK*.ini files when the engine runs.  As such, make sure to delete UDK*.ini files after an svn update.

UDK\UDK-2010-07\Development\Src\UT3OSC\Classes

ActorFactoryOSCInterpActor.uc
ActorFactoryOSCKActor.uc
ActorFactoryOSCKActorFromStatic.uc
ActorFactoryOSCStaticMeshActor.uc
DefaultGame_QT3OSC.ini
OSCInterpActor.uc
OSCKActor.uc
OSCKActorFromStatic.uc
OSCParams.uc
OSCPawn.uc
OSCPlayerController.uc
OSCPlayerControllerDLL.uc
OSCProj_LinkPlasma.uc
OSCProj_ShockBall.uc
OSCProj_SeekingShockBall.uc
OSCProj_SeekingRocket.uc
OSCSeekingShockBallLight.uc
OSCStaticMeshActor.uc
OSCTrigger.uc
OSCWeap_LinkGun.uc
OSCWeap_ShockRifle.uc
OSCWeap_RocketLauncher_Content.uc
OSCWeap_SeekingShockRifle.uc
OSCWorldInfo.uc
ut3osc.uc

Exec Methods

Exec methods can be run from the UDK command-line in-game. The command-line can be accessed by pressing "~" for the full drop-down terminal window or by pressing "TAB" for the single-line window-bottom command-line. These are the custom UT3OSC exec methods that have been implemented to this point:

destroyAllProjectiles
destroyAllShockBalls (optional bool)
destroyShockball (#, optional bool)
OSCStartOutput
OSCStopOutput
OSCStartInput
OSCSendDeltas
setOSC [string, int]
setOSCHostname [string]
setOSCPort [int]
getOSC
getOSCHostname
getOSCPort
setLockHomingTargets
setSpeedSeekingShockBall
setSpeedSeekingRocket
setSpeedShockBall
freezeShockBall
setGroundSpeed [float]
getGroundSpeed
setAirSpeed [float] default:440.0
getAirSpeed 
initOSCFingerTouches [bool]
setSeekingShockBallTargetClassName [int] (1=ShockBalls, 2=UTVolumes)
increaseSizeSeekingShockBall [float]
decreaseSizeSeekingShockBall [float]
setSeekingTurnRate [float] ~ 1.0 -> 30.0
*setSpeedSeekingRocket [float]
*setRadiusSeekingRocket
*setRangeSeekingRocket

*=doesn't work

Key Binds

moveallprojectiles 0 0 3000
setSpeedSeekingShockBall 0, 300, 700, 1000 [map to number-pad horizontals]
setProjectileTargets X Y Z


Adding key-bindings to UDKGame\Config\DefaultInput.ini:

;-----------------------------------------------------------------------------------------
; UDKOSC Bindings
;-----------------------------------------------------------------------------------------
.Bindings=(Name="one",Command="OSCStartOutput",Control=False,Shift=False,Alt=True)
.Bindings=(Name="two",Command="OSCStopOutput",Control=False,Shift=False,Alt=True)
.Bindings=(Name="three",Command="OSCStartInput",Control=False,Shift=False,Alt=True)
.Bindings=(Name="four",Command="OSCSendDeltas",Control=False,Shift=False,Alt=True)
.Bindings=(Name="nine",Command="DestroyAllShockballs True",Control=True,Shift=False,Alt=True)
.Bindings=(Name="nine",Command="DestroyAllShockballs",Control=False,Shift=False,Alt=True)
.Bindings=(Name="zero",Command="DestroyAllProjectiles",Control=False,Shift=False,Alt=True)
.Bindings=(Name="F",Command="FlyWalk",Control=True,Shift=False,Alt=False)
.Bindings=(Name="seven",Command="freezeShockBall",Control=False,Shift=False,Alt=True)
.Bindings=(Name="BackSlash",Command="setSeekingShockBallTargetClassName 2",Control=False,Shift=False,Alt=True)
.Bindings=(Name="BackSlash",Command="setSeekingShockBallTargetClassName 1",Control=True,Shift=False,Alt=False)
.Bindings=(Name="Equals",Command="increaseDrawScaleSeekingShockBall .01",Control=False,Shift=False,Alt=True)
.Bindings=(Name="Underscore",Command="decreaseDrawScaleSeekingShockBall .01",Control=False,Shift=False,Alt=True)

OSC Output and Input

Player output:

/player "bob" 85.474144 -48.000000 -479.850006 [True] 
<tag> <player-name> <X float > <Y float > <Z float> <crouch bool>

Projectile output:

/projectile "OSCProj_ShockBall_3" "shockball" 0 -1830.275513 -19.010612 1.015289 1 0 
<projectile-name_instanceCount string> <projectile-type string> <instance-count int> <X float> <Y float> <Z float> <Bounce int> <Destroyed int>

current projectile-names: OSCProj_LinkPlasma, OSCProj_SeekingRocket, OSCProj_ShockBall
current projectile-types: "plasma", "seekingrocket" "shockball" "seekingshockball"

/gameGravity <value float>
/gameSpeed <value float>

iPad finger targeting for ShockBall homing OSC Input

/fingers <X1 float> <Y1 float> <Z1 float> <on1 float> ... <X5...

Static Mesh/Interp Actor output:

/mesh "OSCInterpActor_2" "mesh" "touch" 202.886230 -111.999939 -543.306702 

Trigger output (name is set as "Tag" in editor

/trigger "Trigger"

OSC INPUT Coding Notes:

- OSCProj_ShockBall.uc executes code where incoming OSC messages are polled from the oscpack dll
- OSCPawn.uc contains the calls for incoming OSC
- struct OSCFingerController is a 20 value (float) struct that is populated from the dll for FingerTouch data
- dll import calls for input made in OSCPawn:

dllimport final function OSCFingerController getOSCFingerController();
dllimport final function initOSCReceiver();
dllimport final function OSCGameParams getOSCGameParams();
dllimport final function float getOSCGameSpeed();
dllimport final function float getOSCGameGravity();

- game speed is polled each tick from getOSCGameSpeed()


- in osc.cpp of the oscpack .dll, gravity is set with:

__declspec(dllexport)float getOSCGameGravity()
{
  return OSCGameParamsStruct.gameGravity;
}

- value is set with:

}else if( strcmp( m.AddressPattern(), "/gameGravity" ) == 0 ){
  osc::ReceivedMessageArgumentStream args = m.ArgumentStream();
  float a1;
  args >> a1 >> osc::EndMessage;
  OSCGameParamsStruct.gameGravity = a1;
 
- struct is defined in osc.h

struct OSCGameParams
{
 float gameGravity;
 float gameSpeed;
};

To Turn on OSC Input:

- Alt+3
- prints Testing messages and Hello World to Terminal for confirmation
- initOSCFingerTouches [bool] will start osc data streaming in (port 7001) to IP from iPad controller

Maybe can repurpose getOSCGameGravity in OSCPawn.uc and dll:

- comment out gravity use in OSCPawn:
	if( localOSCGameParamsStruct.gameGravity != lastGameGravity ) 
	{
		setGrav(localOSCGameParamsStruct.gameGravity);
	}

Getting Started

Install UDK

Install UDKOSC

  • Follow the Subversion installation instructions below to install files to the correct locations.

There are only 4 locations where files need to be instlled:

  • UDK-2010-07\Development\Src\UT3OSC: these are the custom OSC UnrealScript classes
  • UDK-2010-07/Binaries/Win32/UserCode: the oscpack windows dll
  • UDK-2010-07/UDKGame/Config: the custom default config files
  • UDK-2010-07/UDKGame/Content/Maps: custom maps go here

Open UnrealFrontend to compile UT3OSC

  •  ?game=UT3OSC.UT3OSC should be pasted into the "Extra Options" field
  • check the "show log" check box to see debug messages in the console
  • in 2012-05 sometimes baking is required to run project (not sure why)

Launch UDKOSC

  • DETAILS COMING SOON

Launch Map

  • DETAILS COMING SOON

Supercollider

  • Default input port 57120

SETUP OSC CLIENT FOR MONITORING

  • DETAILS COMING SOON

Subversion Setup

Copy UDKOSC data into the Src dir:

cd D:/UDK/UDK-2010-07/Development/Src

svn checkout svn+ssh://rob@ccrma-gate.stanford.edu/user/r/rob/data/mvw/svn/udkosc/UDK/UDK-2010-07/Development/Src/UT3OSC ./UT3OSC/

Checkout oscpack dll:

cd D:/UDK/UDK-2010-07/Binaries/Win32/UserCode

svn checkout svn+ssh://rob@ccrma-gate.stanford.edu/user/r/rob/data/mvw/svn/udkosc/UDK/UDK-2010-07/Binaries/Win32/UserCode .

Checkout ini files:

cd D:/UDK/UDK-2010-07/UDKGame/Config

svn checkout svn+ssh://rob@ccrma-gate.stanford.edu/user/r/rob/data/mvw/svn/udkosc/UDK/UDK-2010-07/UDKGame/Config .

Checkout test Maps:

cd D:/UDK/UDK-2010-07/UDKGame/Content/Maps

svn checkout svn+ssh://rob@ccrma-gate.stanford.edu/user/r/rob/data/mvw/svn/udkosc/UDK/UDK-2010-07/UDKGame/Content/Maps .

Checkout oscpack_1_0_2.dll Source + VS2010 Project [optional]

svn checkout svn+ssh://rob@ccrma-gate.stanford.edu/user/r/rob/data/mvw/svn/udkosc/oscpack/ .

NOTE: also includes .zip of source project

Timeline

11/24/2012

- Annoying Steam-based errors with spawned playercontrollers

- Trying to disable Steam server in DefaultGame.ini with:

[Engine.AccessControl]
IPPolicies=ACCEPT;*
bAuthenticateClients=False
bAuthenticateServer=False
bAuthenticateListenHost=False
MaxAuthRetryCount=3
AuthRetryDelay=5

- DefaultEngine.ini:

[OnlineSubsystemSteamworks.OnlineSubsystemSteamworks]
bEnableSteam=false

11/18/2012

- Added low-latency OSCPawnBot control with each PawnBot controller polling OSC structs for each pawn's own struct (stored in a std::map in the dll)

- Sorted out rotations and slewed rotation calls in osccontrol.rb under /Scripts/

- Finished all movement calls to OSCPawnBots.

- params for Unreal Frontend "Launch Options": -wxwindows -remotecontrol -log

10/21/2012

- Added OSCPawnBot as the primary 3rd party pawn actor. Still hooking up OSC.

"spawnPawnBot" will spawn OSCPawnBot with a unique ID and attach it to a OSCPawnController controller instance.

- Added OSCBot as standard AI unit. Still hooking up OSC. Can respond to MoveTo commands.

- Added rotation to OSCControl.rb and to OSCPawn; still wonky.

9/19/2012

Version 1.0 of OSCControl has been added to the project. Documentation on getting started with OSCControl and remote control of UDKOSC camera and actors can be found at:

https://github.com/robertkhamilton/udkosc/blob/master/Scripts/getting_started.txt

9/07/2012

Added a proper stop call in .dll as well as fixed jumping

9/04/2012

Now actor speed is reset after manual stop is called (before next player move X,Y,Z call)

9/03/2012

Added much needed "playermove stop 1" call as actors set upon a given vector would not ever stop. whoops.

Currently can only be manually called outside of a block.

Should reset actor speed when next playermove is called.

9/02/2012

Scripting Overview:

playermove

- playermove calls require method, param, val, (slewtime in ms), userid
e.g. "playermove x 100 1000 1"
- actor motion can be stopped by calling "playermove stop 1" at any time outside of a block
  = STOP calls don't reset the currentval of PLAYERSPEED 
cameramove

- cameramove calls don't require userid

e.g. "cameramove pitch 360 10000"
cameramove pitch, yaw and roll values are all scaled to allow degree input (i.e. 0-360) through use of the UDK scaling factor of 182.044403
Console commands: useable console commands are defined in the script generator and can be called with the method call "console" e.g.

- "console behindview"
OSC bundles
- OSC bundles are created by creating block commands, started with "[" and ended with "]"
- all slew values for each block command are created and sorted before generation
wait
- the message "wait" will call a ms Sleep command in Ruby
Comments
- comments are any lines prefaced with a "#" followed by a space

EXAMPLE SCRIPT:

[
cameramove pitch -90 100
cameramove x -300 5000
cameramove z 300 500
]
console behindview
# This is a test
[
cameramove pitch 90 1000 
cameramove yaw -130 1000
]
[
playermove speed 500 20 1
playermove x 5000 3000 1
]
playermove stop 1

8/25/2012

Created scripting language for creating UDKOSC movement gestures and Ruby OSC generating code.

Download from https://github.com/robertkhamilton/udkosc in the Scripts directory

Currently supports basic movement gestures:

PlayerMove (X,Y,Z, Jump, Speed, UserID, time slew) CameraMove (X,Y,Z,Speed, time slew) Wait Block Messages - i.e. gestures to be created simultaneously as OSC bundles

Time slews for gestures generate streams of OSC messages or bundles

07/12/2012

Camera Control by OSC enabled:

behindview
OSCMove
OSCSetFreeCamera
OSCStartInput

Camera Pitch, Yaw, Roll + Relative (to Pawn.Location) and Absolute (to 0.0, 0.0, 0.0 World Coordinates) - OSCSetFreeCamera toggles between Relative and Absolute coordinates - OSCMove toggle between standard control and OSCControl (both for PlayerController/Pawn and for Camera)

Using "behindview" makes Pawn visible as 3rd-Party actor

05/19/2012

Bumping up to UDK-2012-03 version

Had to add line to DefaultEngine.ini

"+NonNativePackages="


08/29/2010

Added Scaling code for iPad control OSC values

setOSCFingerWorldMax x y z
setOSCFingerWorldMin x y z
setOSCFingerOffsets x y z
initOSCFingerTouches True

setOSCFingerSourceMin	x y z
setOSCFingerSourceMax	x y z
OSCSendDeltas

08/28/2010

added setAirSpeed,setSeekingTurnRate methods

modded setSeekingShockBallTargetClassName to differentiate between "energy_post" and "counterweight" named objects; bound each combo to numPad

setProjectileTargets will direct projectiles to a given X Y Z coordinate; can be bound

TOGGLEHUD
DISABLEALLSCREENMESSAGES

08/27/2010

Added left-fire location tagging for projectiles

Started modding MiTo Supercollider code from 2009 for Tele-Harmonium structure

Got multi-player working via FrontEnd; exact copies of compiled code will connect without a hitch. Replication is still an issue, will reference basics from http://mutualdestruction.net/udk-networking-tutorial/

08/26/2010

http://forums.epicgames.com/showthread.php?t=742470

Networking error madness:

Downloading Entire UDKGame > Script directory

Receiving Core
Receiving Engine
Receiving 'Game Framework'
Receiving 'UnrealEd'
Receiving 'IPDrv'
Receiving 'GfxUI'
Receiving UDKBase
Receiving 'UTGame'


8/22/2010

Added ability to toggle seekingShockBalls seekTarget between OSCProj_ShockBall and UTVolume objects.

Set ctrl-F to call WalkFly exec to toggle pawn state between Fly and Walk

8/19/2010

Added OSCProj_SeekingShockBall, and OSCWeap_SeekingShockRifle for glowing balls with seeking properties, taken from the OSCProj_SeekingRocket code

Added media/ScreenShots dir to svn for archiving ingame snaps

8/18/2010

Cleanup on UDK-side of multi-touch control; now shockballs don't explode on collision with other shockballs and when initOSCFingerTouches is TRUE, will seek out the next available finger touch location currently being received.

Created Max/MSP test patch for control testing.

8/17/2010

Added initial OSC Input to control seeking of ShockBalls to be used as controlled by 5 iPad finger touches.

/fingers X Y Z on/off (all floats, for fingers 1-5)

8/16/2010

Smoothed out homing functionality for SeekingRockets; now make nice smooth arcs.

8/15/2010

Added basic homing functionality for SeekingRockets to track ShockBalls. Added helper functions:

setLockHomingTargets
setRadiusSeekingRocket
setRangeSeekingRocket
setSpeedSeekingRocket
setSpeedShockBall

with LockHomingTargets, we can set if seeking projectiles will automatically search for the closest target (expensive) or stay locked to the initial target the first seek.


8/14/2010

Committed Full svn

post svn:

- added setGroundSpeed (float), and getGroundSpeed() exec functions to OSCPawn to set player speed.


8/13/2010

Added exec functions for setting OSC params from within game terminal: setOSC(ip, port) setOSCHostname(ip) and setOSCPort(port) which all save values to UDKOSC.ini after edit.

Added getOSCHostname, getOSCPort and getOSC methods to display current OSC settings to in-game user.

Initial homing rocket code started with limited results; rockets home in on ShockBalls but after tracking them successfully, don't update their direction to follow again.

8/12/2010

Successful network (LAN, local) testing with 3 connected clients Added OSCTrigger class to send message on Trigger event

8/11/2010

Added crouch tracking in OSCPawn output, and OSCStartInput, OSCStartOutput, OSCStopOutput, and OSCSendDeltas exec functions.

Working on extending "Use" function:

http://forums.epicgames.com/showthread.php?t=717602&highlight=PerformedUseAction

found in PlayerController.uc

/**
* Entry point function for player interactions with the world,
* re-directs to ServerUse.
*/
exec function Use()
{
	if( Role < Role_Authority )
	{
		PerformedUseAction();
	}
	ServerUse();
}
/**
 * Player pressed UseKey
 */
unreliable server function ServerUse()
{
	PerformedUseAction();
}

8/10/2010

added initOSCReceiver function to OSCPawn to initiate OSC input polling from the dll.

updated Max/MSP gui OSC sender applet for testing global gameGravity and gameSpeed params over OSC

8/09/2010

Mapped incoming OSC test floats to GameSpeed and Gravity successfully.

Can access WorldInfo and current Game vars and methods stored in ut3osc.uc:

UT3OSC(WorldInfo.Game).fingerTouchArray[0].X=val;

8/08/2010

Code re-written to access OSC params in OSCParams.uc class. Now Hostname and Port can be set through the DefaultOSC.ini

Updated code checked into SVN

8/03/2010

Successful test of OSC messages being sent into UDK via OSCPack dll listener, operating on its own thread.

Pawn motion:

http://www.etc.cmu.edu/projects/coyote210/Docs/undox/Engine.Pawn.html

MoveTo and MoveToward methods

void	MoveTo(vector NewDestination, optional float)
     
// Latent Movement. Note that MoveTo sets the actor's Destination, and MoveToward sets the actor's MoveTarget.  Actor will rotate towards destination

void	MoveToward(Actor NewTarget, optional float)


UDKProjectile

/** Currently tracked target - if set, projectile will seek it */ var actor SeekTarget;

Projectile

Can target be changed just by setting Velocity (Speed * Direction vector)?

/* Init()
initialize velocity and rotation of projectile
*/
function Init( Vector Direction )
{
	SetRotation(Rotator(Direction));
	Velocity = Speed * Direction;
}

Actor (projectiles inherit from Actor)

// The actor's position and rotation.
/** Actor's location; use Move or SetLocation to change. */
var(Movement) const vector			Location;

/** The actor's rotation; use SetRotation to change. */
var(Movement) const rotator			Rotation;


Added "MoveAllProjectiles X Y Z" as exec function: instantly moves all projectiles to a specific location.

Working on

exec function setAllProjectileSpeed(int speed)
{
    local UTProjectile pUT; 

  	ForEach AllActors(class'UTProjectile', pUT)
	{
		pUT.Speed = speed;
	}
}

8/01/2010

Checked in modifications to July UDK to svn at ccrma. Note only modified files/custom files were checked in, including the source for the oscpack windows dll, and these should be checked out into a 2010-07 install of the UDK.

7/31/2010

OSCInterpActor class

- outputs position data on move, bump and damage as well
- Kismet script tested successfully to spit out position data while object moves

7/27/2010

- Moved to July UDK

Current Feature List

- OSC dll in place
- Tracking XYZ data in customized player controller sending OSC data
- Bouncing Projectiles
- Tracking projectile XYZ data sending OSC data
- customized Actor class for OSC on bump and touch events (not tested yet)

6/13/2010

First Words: ?game=UT3OSC.UT3OSC needs to be passed in "Extra Options" in Unreal FrontEnd

OSC message is being sent from Terminal on typing "Test1"

- first impressions are that it's a bit slow... lag/latency maybe UnrealScript?


[COMMANDLET 'UDK.exe make -full' STARTED IN ] June 13, 12:23 AM

Init: Version: 6522
Init: Epic Internal: 0
Init: Compiled (32-bit): Apr  9 2010 12:14:06
Init: Command line:  -full -DEFENGINEINI=..\..\UDKGame\Config\DefaultEngineUDK.ini
Init: Base directory: C:\UDK\UDK-2010-04\Binaries\Win32\
Init: Character set: Unicode
Log: Executing Class UnrealEd.MakeCommandlet
--------------------Core - Release--------------------
Analyzing...
Scripts successfully compiled - saving package 'C:\UDK\UDK-2010-04\Binaries\Win32\..\..\UDKGame\Script\Core.u'
--------------------Engine - Release--------------------
Analyzing...
Scripts successfully compiled - saving package 'C:\UDK\UDK-2010-04\Binaries\Win32\..\..\UDKGame\Script\Engine.u'
--------------------GameFramework - Release--------------------
Analyzing...
Scripts successfully compiled - saving package 'C:\UDK\UDK-2010-04\Binaries\Win32\..\..\UDKGame\Script\GameFramework.u'
--------------------UnrealEd - Release--------------------
Analyzing...
Scripts successfully compiled - saving package 'C:\UDK\UDK-2010-04\Binaries\Win32\..\..\UDKGame\Script\UnrealEd.u'
--------------------IpDrv - Release--------------------
Analyzing...
Scripts successfully compiled - saving package 'C:\UDK\UDK-2010-04\Binaries\Win32\..\..\UDKGame\Script\IpDrv.u'
--------------------OnlineSubsystemPC - Release--------------------
Analyzing...
Scripts successfully compiled - saving package 'C:\UDK\UDK-2010-04\Binaries\Win32\..\..\UDKGame\Script\OnlineSubsystemPC.u'
--------------------UDKBase - Release--------------------
Analyzing...
Scripts successfully compiled - saving package 'C:\UDK\UDK-2010-04\Binaries\Win32\..\..\UDKGame\Script\UDKBase.u'
--------------------UTEditor - Release--------------------
Analyzing...
Scripts successfully compiled - saving package 'C:\UDK\UDK-2010-04\Binaries\Win32\..\..\UDKGame\Script\UTEditor.u'
--------------------UTGame - Release--------------------
Analyzing...
Scripts successfully compiled - saving package 'C:\UDK\UDK-2010-04\Binaries\Win32\..\..\UDKGame\Script\UTGame.u'
--------------------UTGameContent - Release--------------------
Analyzing...
Scripts successfully compiled - saving package 'C:\UDK\UDK-2010-04\Binaries\Win32\..\..\UDKGame\Script\UTGameContent.u'
--------------------UnrealOsc - Release--------------------
Analyzing...
Scripts successfully compiled - saving package 'C:\UDK\UDK-2010-04\Binaries\Win32\..\..\UDKGame\Script\UnrealOsc.u'

Success - 0 error(s), 0 warning(s)
Execution of commandlet took:  22.67 seconds 

[COMMANDLET 'UDK.exe make -full' SUCCEEDED] June 13, 12:23 AM

6/1/2010

basic testing of Windows Oscpack dll writes message successfully over OSC from test app

__declspec(dllexport) double returnDouble(double a);
__declspec(dllexport) void sendOSCmessageTest();

random notes

Shortcuts

Link to Disable Windows key:

http://support.microsoft.com/?id=216893
Hide HUD and Weapon: togglescreenshotmode
http://udn.epicgames.com/Three/CharactersTechnicalGuide.html#Inventory and Weapons: WeaponFired [weapon] [bViaReplication] [hitLocation]
http://www.moddb.com/games/unreal-tournament-3/tutorials/unreal-learning-1-my-first-unreal-tournament-3-mutator
default gravity (game specific) - set in defaultgame.ini
Default value: -520.0
ProjectileList http://wiki.beyondunreal.com/UE3:WorldInfo_internal_variables_(UDK)

Moving to July UDK

Add UT3OSC references to UDKGame\Config\DefaultGame.ini

[Engine.GameInfo]
DefaultGame=UT3OSC.UT3OSC
DefaultServerGame=UT3OSC.UT3OSC
PlayerControllerClassName=UT3OSC.OSCPlayerControllerDll
DefaultGameType="UT3OSC.UT3OSC";


Add ModEditPackages line to section in UDKGame\Config\DefaultEngineUDK.ini

[UnrealEd.EditorEngine]
+EditPackages=UTGame
+EditPackages=UTGameContent
+EditPackages=CastleGame
ModEditPackages=UT3OSC

Exposed OSC Methods

Adding Hostname and Port param to structs to allow for multiple/dynamic OSC targets

sendOSCPlayerState(PlayerStateStruct)
- OSCPawn::Tick

- Hostname   (string)
- Port       (int)
- PlayerName (string)
- Location X (float)
- Location Y (float)
- Location Z (float)
- Crouch     (bool)

sendOSCpointClick(PointClickStruct)

- Hostname                 (string)
- Port                     (int)
- TraceHit                 (string)
- TraceHit_class           (string)
- TraceHit_class_outerName (string)
- Location X               (float)
- Location Y               (float)
- Location Z               (float)
- HitInfo_material         (string)
- HitInfo_physmaterial     (string)
- HitInfo_hitcomponent     (string)

DLL Binding

"A single UnrealScript class can bind to only a single DLL. The DLL to bind to is specified with the DLLBind directive, and the DLL name to bind to is specified in parentheses. Do not include a path or .DLL extension. DLLs can only be loaded from the Binaries\Win32\UserCode folder."
- http://udn.epicgames.com/Three/DLLBind.html

Also TCP/IP Link:

http://forums.epicgames.com/showthread.php?t=740321

Network Latency overview from Valve

http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking

My Posts

http://forums.epicgames.com/showthread.php?p=27580921#post27580921

http://forums.epicgames.com/showthread.php?p=27580950#post27580950

http://forums.epicgames.com/showthread.php?t=742848

http://forums.epicgames.com/threads/927220-Remote-Actor-and-Camera-control-with-UDKOSC-and-OSCControl?p=30740607#post30740607

Scripting

http://okita.com/alex/?page_id=474

http://okita.com/alex/?p=444

http://forums.epicgames.com/showthread.php?t=736141

http://forums.epicgames.com/forumdisplay.php?f=367&order=desc&page=19

Trace location distance (Pawn to surface/object)

http://forums.epicgames.com/threads/893500-Trace-length

Graphic Settings:

http://forums.epicgames.com/showthread.php?t=721052&highlight=Video+settings+menu

UDK dev environment

http://udn.epicgames.com/Three/ExecFunctions.html#Debugging

http://forecourse.com/unreal-tutorials/

http://forecourse.com/unreal-tutorials/#UnrealScript%21

http://wiki.pixelminegames.com/index.php?title=Tools:nFringe


http://forums.epicgames.com/showthread.php?t=722792

http://forums.beyondunreal.com/showthread.php?p=2405761

SKELETON/BONES w/Unrealscript (for Kinect):

http://udn.epicgames.com/Three/UsingSkeletalControllers.html


BOTS/AI:

http://www.moug-portfolio.info/udk-ai-pawn-movement/


VIDEO CAPTURE:

http://udn.epicgames.com/Three/CapturingCinematicsAndGameplay.html


SPAWNING: http://forums.epicgames.com/threads/884933-Placing-Static-Mesh-Actor-into-map-via-UnrealScript

REPLICATION:

http://forums.epicgames.com/showthread.php?t=743111&highlight=class+member+function

http://forums.epicgames.com/showthread.php?t=741953&highlight=replication

http://law3d.blogspot.com/

http://udn.epicgames.com/Three/GameStateReplication.html

http://udn.epicgames.com/Three/NetworkingOverview.html#Projectiles


Overview:

http://www.theballthegame.com/tutorialudk.htm

http://www.hourences.com/book/tutorialsindex.htm

Adding Classes to World Editor:

http://forums.epicgames.com/showthread.php?t=715530

Windows Multithreading c++:

http://www.cppgameprogramming.com/cgi/nav.cgi?page=multithreading

http://www.devarticles.com/c/a/Cplusplus/Multithreading-in-C/


Weapon Modding:

http://forums.epicgames.com/showthread.php?t=716665

http://udn.epicgames.com/Three/WeaponsTechnicalGuide.html

http://forums.epicgames.com/showthread.php?t=708422

Unreal Script calling Windows dll:

http://udn.epicgames.com/Three/DLLBind.html

OSC dlls:

http://www.frieder-weiss.de/OSC/OSC-DLL.htm

http://www.bespokesoftware.org/wordpress/?page_id=69

http://www.3dvia.com/forums/topic/opensoundcontrol-osc-bb-s-released-under-gpl/page/3

Windows OSC utilities:

http://www.frieder-weiss.de/OSC/

Creating Windows C++ dlls:

http://msdn.microsoft.com/en-us/library/1ez7dh12.aspx

http://www.tutorialspoint.com/dll/dll_writing.htm

UDK Tutorials (video):

http://www.3dbuzz.com/vbforum/sv_videonav.php?fid=292838127fecccd8b151c72003546386

http://utmapping.wikidot.com/how-to-build-a-simple-cube-map

Basic Level Building Tutorials:

Windows VS2010 stuff:

http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/ea11890e-247b-4640-82a9-d6f657c36afa

http://social.msdn.microsoft.com/forums/en-US/vclanguage/thread/d8c0ba83-a619-443f-b194-20a1fbbf7bd7

http://msdn.microsoft.com/en-us/library/28d6s79h(VS.80).aspx

Linker Settings for VS2010 (necessary to compile):

http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/ea11890e-247b-4640-82a9-d6f657c36afa

http://www.gamedev.net/community/forums/topic.asp?topic_id=185053

(right-click project > Properties > Linker > Input > add to "Additional Dependencies" Ws2_32.lib;WINMM.lib; )

Homing Missles:

http://board.flashkit.com/board/archive/index.php/t-175556.html

Packaging:

http://forums.epicgames.com/showthread.php?t=734728&highlight=PACKAGE+GAME&page=2

Overall Process:

http://developer.download.nvidia.com/udk/Whizzle_Creation_Document_1_2.pdf

Keyboard input overview:

http://okita.com/alex/?p=740

class reference:

http://forums.epicgames.com/showthread.php?t=739124&highlight=actor+tag+instance

general location:

http://okita.com/alex/?p=787

vectors:

http://chimeric.beyondunreal.com/tutorials/vectors.php

http://chortle.ccsu.edu/VectorLessons/vectorIndex.html#01

http://wiki.ioquake3.org/Vectors

http://wiki.beyondunreal.com/Legacy:UnrealScript_Vector_Maths

http://wiki.beyondunreal.com/Legacy:Useful_Maths_Functions

ShuttlePro Drivers:

http://retail.contourdesign.com/?/products/23


MOUSE LOOK (for smoothing): http://utforums.epicgames.com/showthread.php?t=743907

LINKS

UDKOSC on github: https://github.com/robertkhamilton/udkosc Chris Platz's website: http://www.chrisplatz.com Gram Gatheral interview about his work with UDKOSC: http://designingsound.org/2011/06/audio-implementation-greats-11/ Grahm Gatheral's website: http://www.gatheral.co.uk/