Home
Report Appendices
Contents
1. GUIMenuManag Class Class MonoBehaviour MonoBehaviour Fields E Fields s paused Y aClip targetObj 2 curDelegate 3 Methods 9 fogDistance 3 Star gamme 59 Update g next 9 styleOfChoice uniformSkin Still to add 0 xPos yPos E Methods Y ControlsMenu Y ExitMenu Y MainMenu OnGUI e OptionsMenu e SettingsMenu Start Nested Types EndCreditsScript ExitBackUp E Class Class MonoBehaviour MonoBehaviour Still to add i Methods E Methods Y OnTriggerEnter Y Update GUIHoverControls 4 Class MonoBehaviour Fields Y beep Y fadedOutMat 2 isClicked 9 isQuitButton Y levelToLoad 9 matl Still to add 9 mat2 9 mat3 9 narrative Y txtMesh 9 wait E Methods a ChangeColor 3 LoadALevel e OnMouseExit Y OnMouseOver Y StartintroTalk CollectAreas 61855 MonoBehaviour Fields Y audio 9 time Methods Y OnTriggerEnter Y PlayAudio ItemController A Class MonoBehaviour amp Fields z alpha areaCount finalGo go go2 itemCount IhsRect rhsRect storyComplete style totalAreasToVisit y winTextl g9 winText2 Methods 9 OnGUI Y Start Y Update Collectitems Class i MonoBehaviour totalNumberTo E Fields audio Y time Methods 8 OnTriggerEnter Y PlayAudio Sequence Diagram
2. a base that can derive a more uniformed menu at the start lt summary gt public class GUIMenuManager MonoBehaviour cache some audio clips public AudioClip aClip lt summary gt The style of choice lt summary gt public GUIStyle styleOfChoice lt summary gt The uniform skin lt summary gt public GUISkin uniformSkin lt summary gt GUI delegate to pass states to lt summary gt private delegate void GUIDelegate summary The current delegate make instance of GUIDelegate lt summary gt private GUIDelegate curDelegate lt summary gt The x position base pos caches lt summary gt private int xPos yPos lt summary gt The next bool to check if button sequence follwed lt summary gt private bool next false lt summary gt The gamma corrective value for gamma render setting in settings menu lt summary gt public float gamma lt summary gt The fog distance corerctive value for gamma render setting in settings menu lt summary gt public float fogDistance lt summary gt Start this instance set current delegate to main menu method lt summary gt public void Start this curDelegate MainMenu Y summary Raises GUI event twice per frame summary public void OnGUI
3. 1 go gameObject renderer enabled false FindMyGPS using UnityEngine using System Collections using System Collections Generic lt summary gt Find my GP G Wright 2013 simply places the objects transform position into some arbuitrary floats Not a complete script really more of a future development lt summary gt public class FindMyGPS MonoBehaviour lt summary gt The go lt summary gt public GameObject go marker object lt summary gt The myradius lt summary gt public float myradius 5 0f globe ball radius lt summary gt The mylatitude lt summary gt public float mylatitude lat lt summary gt The mylongitude lt summary gt public float mylongitude long lt summary gt The x position lt summary gt private float xPos yPos zPos lt summary gt The last position lt summary gt private Vector3 lastPos lt summary gt The object warning lt summary gt private string objWarning No Gameobject found please add in the inspector lt summary gt The player position lt summary gt public static Vector3 playerPos lt summary gt Start this instance set long and lat to transforms positon x and z lt summary gt void Start if go null Debug LogWarning objWarning else mylongitude go transform position x mylatitu
4. Start this instance set inst to this gameobject instance lt summary gt void Start inst this lt summary gt Update this instance set new target vector for rotation rotate to target apply to instance lt summary gt void Update targetPoint new Vector3 target transform position x transform position y target transform position z transform position targetRotation Quaternion LookRotation targetPoint Vector3 up inst gameObject transform rotation Quaternion Slerp transform rotation targetRotation 0 1f FlightCoordinator cs Adapted from a Sam Cox JavaScript 2009 FrictionPointStudios com C conversion documentation and optimization by G Wright 2013 Final adapted Code utilises LookRotation instead of the heavy LookAt Unity Engine method using UnityEngine using System Collections lt summary gt Flight coordinator lt summary gt public class FlightCoordinator MonoBehaviour 1 array instance of waypoint private FlyToNextWaypoint waypoints lt summary gt current bezier cache lt summary gt private WaypointBezier bezier lt summary gt The current waypoint in flyNextWaypoints array lt summary gt int currentWaypoint 6 lt summary gt The seconds for full loop Holds a time value to complete a full loop by lt summary gt public float SecondsForFullLoop 60f
5. access rendersettings RenderSettings ambientLight new Color gamma gamma gamma 1 0f RenderSettings fogDensity fogDistance declare the current skin array option GUI skin uniformSkin create gui layout full screen estate GUILayout BeginArea new Rect 0 0 Screen width Screen height GUILayout BeginVertical xPos 10 yPos 25 GUILayout EndVertical GUILayout EndArea apply initialised delegate state this curDelegate end GUI loop summary Main menu summary main menu methods private void MainMenu i camera backgroundColor Color white check it Debug Log main menu GUI skin uniformSkin 1 button choices if GUI Button new Rect Screen width 2 Screen height 2 Screen width 110 Press P or n Start Button nto Return to Game styleOfChoice 1 audio clip aClip 0 audio Play if GUI Button new Rect Screen width 2 Screen height 2 130 Screen width 40 Options styleOfChoice f audio clip aClip 1 audio Play options button clicked switch to new menu this curDelegate OptionsMenu if GUI Button new Rect Screen width 2 Screen height 2 180 Screen width 40 Exit styleOfChoice audio clip aClip 1 audio Play options button clicked switch to new menu this curDelegate ExitMenu Options menu button Methods private void OptionsMenu audio PlayO
6. int x int t float vectorArray Length if x vectorArray Length xX This is based from http homepage mac com nephilim sw3ddev bezier html float newT t float vectorArray Length float x vectorArray CheckWithinArray x vectorArray Length vectorArray CheckWithinArray x 1 vectorArray Length Vector3 prevl Vector3 thisl Vector3 nextl vectorArray CheckWithinArray x 2 vectorArray Length Vector3 farl vectorArray CheckWithinArray x 3 vectorArray Length Vector3 deltal Vector3 delta2 nextl prevl 166f farl thisl 166f return DoBezierForNPoints newT new Vector3 thisl thisl deltai1 nextl delta2 nextl lt summary gt Checks the within array lt summary gt lt returns gt The within array lt returns gt lt param name x gt X lt param gt lt param name c C lt param gt private int CheckWithinArray int x int c if x gt return x c else return x lt summary gt finds the bezier for N points lt summary gt lt returns gt The bezier for N points lt returns gt lt param name t gt 111 T lt param gt param name currentArray Current array param private Vector3 DoBezierForNPoints float t Vector3 currentArray 1 Vector
7. Converted from UnityScript to Cit at http www M2H nl files js to c php by Mike Hergaarden Do test the code You usually need to change a few small bits using UnityEngine using System Collections lt summary gt Collect areas attached to a gameobject leverages a single audio source and waits a time before firing off lt summary gt public class CollectAreas MonoBehaviour lt summary gt The audio audio cache lt summary gt public AudioSource audio lt summary gt The time holds an inspecptor assignable time value used in co routine lt summary gt public float time 2 5f lt summary gt Raises the trigger enter event lt summary gt lt param name col Col Col must be equal to the Player tag lt param gt void OnTriggerEnter Collider col switch col gameObject tag case Player add item to static item count in ItemController ItemController areaCount StartCoroutine PlayAudio time remove object from game Destroy this gameObject break lt summary gt Plays the audio sets looping to false controls doppler if 3d sound lt summary gt lt returns gt The audio lt returns gt lt param name _time _time gt lt param gt IEnumerator PlayAudio float _time _time time audio dopplerL
8. Unity Pro License allowing official deployments As an aside When obtaining Unity License it does not give you a license to deliver over all platforms namely IOS and Android will add further costs to a developer hoping to reach these audiences Critically this should not be seen as a negative as with IOS for example users of IOS often pay for their apps when they appear free on Android 1 3 1 3 Legal feasibility Legally there is little by way of concern due to the game being developed as an original concept In real terms this could be argued through the fact that although there are multiple types of games available free or otherwise the game type has no real definition with respect to the legal implications of naming a genre for example Platformer or Arcade However there is concern to be raised with respect to game title and likeness in that it should not be identified with exactly replicated traits or elements of any game currently available simplified this means one must certainly not pass off other artists work as original and must create the pertinent acknowledgements towards any such outsourced components if the game includes anything by them As is the same with source code correct acknowledgements must be given and licensing restrictions must be adhered to whatever the individual stipulations may be With respect to the above paragraph in terms of addressing original code and artwork references will be made to autho
9. CES GD ED 5 9 oem Eno 59 Ctrl Alt Drag Scroll Display TE ma mal 20 2 peas 9 10 LEES Loa sese z9SIESI 1 1 Adobe PhotoShop CS5 File Edit Image Layer Type Select Filter 3D View Window Help Style Normal dth x groundS png 104 Final RGB 8 x IM Using the filter gt offset and switching ithe horizontal and vertical until satisfied a tile can be made where afterwards it must be clone stamped at the inner seams being careful not to make any y changes to the outer edges Ne ese Final Ld offset Background 4 4 Z EA k Global Mapper 14 Global Mapper v14 0 6091212 64 bit REGISTERED File Edit View Tools TerrainAnalysis Search GPS Help 5 5 a m a Fa 51 19 51 al Atlas Shader JEt lal Setup Favorites List alt elo aloe 414 ele el ees eras 21010 Houndtor is approximately here and at any point after this it became indistinguishable from any other area close by it as can be seen in the enlargement onthe right SS 1 0 km 10km 20 km 30 km 40 km 50 km For Help press Fl 1 521800 GEO WGS84 Appendix F These can be found in Appendices under Appendix A in the second part Project report Deliverable Appendix F Deployment Alpha 1 1 Mon 27 02 13 Deployment Alpha1 0 Tue 14 0
10. Mat lt param gt lt summary gt Changes the color lt summary gt lt param name mat Mat lt param gt void ChangeColor Material mat f if not mat1 or mat 2 if mat fadedOutMat amp amp mat mat2 amp amp mat mat3 i mat must be mat 1 mat mati 4 J else if mat fadedOutMat amp amp mat mat amp amp mat mat3 1 mat must be mat 2 mat mat2 Y J else if mat fadedOutMat amp amp mat mati 88 mat mat2 T t mat must be mat 3 mat mat3 mat must be mat 4 mat fadedOutMat 1 assign new material to the textMesh being operated on txtMesh renderer material mat Y J summary Starts a narrative lt summary gt lt returns gt The intro talk after time lt returns gt IEnumerator StartintroTalk 1 audio clip narrative audio Play if isClicked Y j yield ChangeColor fadedOutMat return new WaitForSeconds wait 1 J lt summary gt Loads a level based on a mouse input to start game lt summary gt returns The A level returns IEnumerator LoadALevel 1 audio PlayOneShot beep if isClicked ChangeColor fadedOutMat txtMesh renderer material color a new Color txtMesh renderer material color r txtMesh renderer color g txtMesh renderer color b 0 0f
11. particleEmitter maxEmission origMaxEmission rampDownTime rampDownTime Time deltaTime if rampDownTime lt 0 rampDownTime 0 4 O I J Un N ON 3 N IND IE er ge ge ge ge ge ge ges 10 c activate WithDelay js Q activateWithDelay gt Update var activateThis GameObject var delay float 2 private var delayTime float 0 2 function Update delayTime Time deltaTime if delayTime gt delay activateThis SetActiveRecursively true 1 a co to destroyThisTimed js i destroyThisTimed gt 9 Awake 1 var destroyTime float 5 jfunction Start 1 Destroy gameObject destroyTime function Update J ttn Ww NY co ParticleScale js 3 activateWithDelay js 3 destroyThisTimed js x ParticleScalejs x Prefa Q ParticleScale Y Awake NN pa ps O io o p E pp 13 4 Uw N J O wo wm ME var particleScale float 1 function Start particleEmitter minSize particleScale particleEmitter maxSize particleScale particleEmitter worldVelocity particleScale particleEmitter localVelocity particleScale particleEmitter rndVelocity particleScale particleEmitter angularVelocity particleScale particleEmitter rndAngularVelocity particleScale 2
12. transform parent GetComponentInChildren typeof FlightCoordinator as FlightCoordinator DrawGizmoStuff WaypointBezier cs Original JavaScript by Sam Cox 2009 FrictionPointStudios com C conversion documentation and reformatting to suit my needs better by G Wright 2013 Final Project Code y using UnityEngine using System Collections lt summary gt Waypoint bezier lt summary gt public class WaypointBezier MonoBehaviour 1 Vector3 vectorArray lt summary gt Initializes a new instance of the lt see cref WaypointBezier gt class lt summary gt lt param name waypointsArray gt Waypoints array lt param gt public WaypointBezier FlyToNextWaypoint waypointsArray t vectorArray new Vector3 waypointsArray Length for int i i lt waypointsArray Length i vectorArray i waypointsArray i CurrentPosition lt summary gt Gets the point at time lt summary gt lt returns gt The point at time lt returns gt lt param name t T lt param gt public Vector3 GetPointAtTime float t S t return CreateBezierForPoint t 1 lt summary gt Creates the bezier for point lt summary gt lt returns gt The bezier for point lt returns gt lt param name t gt T param private Vector3 CreateBezierForPoint float t J
13. lt summary gt The target point lt summary gt private Vector3 targetPoint lt summary gt The target rotation vector to cache to the targets axis of rotation lt summary gt private Quaternion targetRotation lt summary gt Start this instance component array made equal to children transforms wayPoints in the parent gameobject the script is attached to Waypoints is instanced at each call with the current length of waypoints left and it and its index are copied Using optimized LookRotation instead of heavy LookAt method lt summary gt void Start Component rawArray transform parent GetComponentsInChildren typeof FlyToNextWaypoint if rawArray Length 1 Debug LogError You have no FlyToNextWaypoint objects defined Create an empty object at the same level as this and add the FlyToNextWaypoint script to it waypoints new FlyToNextWaypoint rawArray Length rawArray CopyTo waypoints bezier new WaypointBezier waypoints transform position waypoints CurrentPosition Vector3 newPosition bezier GetPointAtTime 0 01f targetPoint new Vector3 newPosition x newPosition y newPosition z transform position 0 1f j targetRotation Quaternion LookRotation targetPoint Vector3 up transform rotation Quaternion Slerp transform rotatio
14. n Look around you for a shia to her resting place n amp return her bones GUI new Rect Screen 2 250 Screen 3 500 175 GUI Box new Rect 0 15 500 175 winText1 style GUI new Rect Screen h Screen 2 Screen Screen ht 3 370 65 Remove press R on Keys or n A on Controller if Input ClearGui breach the itemcount and automatically remove the relevant GUI else GUI position far left hand side GUI new Rect 0 15 190 20 GUI Box new Rect Screen width Screen width 20 170 20 itemsToGetText style GUI new Rect 0 30 190 20 GUI this conditional checks against the visited areas as each is colllected the count increments and is used for nested conditional inside if lt if total reached IF gt assign text Well Done nYou ve seen all t areas An If you ve already found all the bones n amp you feel you ve seen all you want to n walk into the tree by the car park n to conclude your Hound Tor experience GUI new Rect Screen 2 175 Screen 3 500 350 GUI Box new Rect Screen width 200 Screen height Screen height 350 80 winText2 style GUI new Rect Screen Screen 2 Screen Screen ht 3 370 65 Remove press R on Keys or n A on Controller if Input ClearGui breach the areacount and automatically remove the relevant GUI else GUI GUI new Rect 15 190 20 G
15. AxisRotationChoic private AntiClockWiseX chosenSpeed float public ClockWiseX variants float public AntiClockWiseZ lt add field gt ClockWiseZ AntiClockWiseMix ClockWiseMix Enumeration choices to signify rotation control Scroller2 Name Type Modifier Summary Class 4 Methods MonoBehaviour gt OnGUI void private Raises the GUI event add method amp Fields 4 Properties lt add property gt 4 Fields scrollLines Y offset float public speed scrolllines string public style Y speed float public Methods Y style GUIStyle public o OnGUI lt add field gt RB_FPS_Gruffy Class MonoBehaviour Name Type Modifier Summary B Field gt Y ApplyClimbConstraints void private Applies the climb constraints gt Y Awake void private Awake this instance audioClip gt Y CalculatelumpVerticalSpeed float private Calculates the jump vertical speed Y canJump gt Y FixedUpdate void private Fixed the update Y canRun b e OnCollisionStay void private Raises the collision stay event 9 canRunSidestep 9 add method 9 gravity 4 Properties E a rounded AP lt add property gt rd 3 4 inAirControl audioClip AudioClip public M 0 canJump bool public jumpHeight canRun bool public Y maxVelocityCh canRunSidestep bool public Y runBackwardSp Y gravity float public Y runSidestepSpe cn bool m runSp
16. X break case AxisRotationChoice AntiClockWiseZ transform Rotate Vector3 forward Time deltaTime chosenSpeed rotate naticlockwise on Z break case AxisRotationChoice ClockWiseZ transform Rotate Vector3 back Time deltaTime chosenSpeed rotate clockwise on Z break case AxisRotationChoice AntiClockWiseMix transform Rotate Time deltaTime chosenSpeed Time deltaTime chosenSpeed Time deltaTime chosenSpeed rotate naticlockwise on Z break case AxisRotationChoice ClockWiseMix transform Rotate Time deltaTime chosenSpeed Time deltaTime chosenSpeed 10 Time deltaTime chosenSpeed 10 rotate anticlockwise on Z Some hardcoding has been applied in the parameters arguments below just to vary the rotation of each axis as they all spin together simultaneously break default Here we could default to a rotation by removing a case option from above and just adding the functional bit transform Rotate of your choice into this section and removing commenting out this operation below Do not rotate as a default never achieved but a safe ending and good practice though h transform Rotate 0 0f 0 0f 0 0f break y TriggerObject cs using UnityEngine using System Collections using System Collections Generic lt summary gt Trigger object using on trigger function to change material guitext coordinates ca
17. Y J yield return new WaitForSeconds wait Application LoadLevel levelToLoad end class ExitBackUp cs using UnityEngine using System Collections Exit back up public class ExitBackUp MonoBehaviour lt summary gt Update this instance lt summary gt void Update J if Input GetKeyUp KeyCode Escape Application Quit 11 JJ EndCreditsScript cs using UnityEngine using System Collections public class EndCreditsScript MonoBehaviour void OnTriggerEnter Collider col if col gameObject tag Player Application LoadLevel 2 end credits scene GUIHelper cs using UnityEngine using System Collections summary GUI helper Help and extension methods to be placed in here lt summary gt public class GUIHelper MonoBehaviour 1 public static Rect screenRect float screenPosx float screenPosy float screenW float screenH float xPos screenPosx Screen width float yPos screenPosy Screen height float sW screenW Screen width float sH screenH Screen height return new Rect xPos yPos sW SH CleanUp cs using UnityEngine using System Collections lt summary gt Clean up destroy object after time passed lt summary gt public class CleanUp MonoBehaviour public float timeToLive 5 0f summary Start this instance lt summary gt void Start Destroy g
18. amp Tracking Gantt charts pertaining to this timeline can be located at the rear of this assignment under Appendix F 2 Research 2 1 CH CH is a modern managed programming language that can be used to provide a type safe accesses only memory locations that it is authorized to The language has a number of common uses and though not exhaustive by any means have been listed below for the reader Traditional Windows client applications including Business and Games XML Web services Distributed components Client server applications Database applications The language is described as highly expressive yet it is also simple and easy to learn Microsoft 2012 and as such this section of the research has endeavored to uncover the fundamental core knowledge required to produce an output from a CH program With this in mind we can denote CH to be a multi paradigm language that is designed to be object oriented in nature and strongly typed meaning restriction is placed upon type operations and further denotes how operations handle the intermixing of different data types Below follows a non exhaustive list used to identify synoptically based information about the language Designed amp developed by Microsoft corporation Born 2001 current version is 4 beta version 5 released on February 29th 2012 alongside Visual Studio 11 Beta Multi paradigm Object Oriented Structured Imperative event dr
19. down 0 1 0 cache data to hit variable for use 1f the transforms y were to start at we would add Vector3 up to the Raycast s 1st argument to ensure its at least 1 unit from the ground The default transform that is prefabbed is 2 m tall and the transforms y scale is set to 0 835 so it never breaches 1 for this argument to be valid as a raycast parameter if Physics Raycast transform position Vector3 down out hit if hit normal y lt slidingThreshold argue slide direction with cached data from hit slideDir new Vector3 hit normal x hit normal y hit normal z the current magnitude is less than the magnitude constraint argument if slideDir magnitude lt slideMagnitudeConstraint add moveVects direction with slideDir direction moveVect slideDir rigidbody AddForce velocityChange x velocityChange y velocityChange z ForceMode VelocityChange else is gt or can only slide no input controls moveVect slideDir rigidbody AddForce velocityChange x velocityChange y velocityChange z ForceMode VelocityChange MouseLook cs This class was originally leveraged from the unity MouseLook cs class using using MouseLook rotates the transform based on the mouse delta Minimum and Maximum values can be used to constrain the possible rotation To make an FPS style character Create a capsule Add a rigid body
20. function Update RayCast js activateWithDelay js X o ParticleScalejs x PrefabGenerator js x rampDownParticlejs x Raycastjs x Q Raycast Update var moveThis GameObject var hit RaycastHit var createThis GameObject var cooldown float var changeCooldown float var selected int 0 var writeThis GUIText private var rndNr float function Start 1 writeThis text selected ToString 3 ow wo 14 12 2 3 function Update 14 is if cooldown gt 0 cooldown Time deltaTime 16 if changeCooldown gt 0 changeCooldown Time deltaTime 17 var ray Camera main ScreenPointToRay Input mousePosition 18 if Physics Raycast ray hit 9 t 2 2 2 2 2 2 2 2 2 2 2 1 Create a particle if hit moveThis transform position hit point 2 3 if Input GetMouseButton 0 amp amp cooldown 0 4 1 5 Instantiate createThis selected moveThis transform position moveThis transform rotation 6 7 cooldown 0 1 if Input GetKeyDown space amp amp changeCooldown lt 0 ow 0 32 selected 1 33 if selected gt createThis length 1 selected 0 34 35 writeThis text selected ToString 36 changeCooldown 0 1 o if Input GetKeyDown KeyCode UpArrow amp amp changeCooldown lt 0 40 H 41 selected 1 42 if selected gt createThis length 1 selected 0 43 44
21. plan collates User stories into the respective release packages and prior to an alpha beta or final release the requirements of both the user and developer should be met However these should not be misinterpreted as the requirements specification which was revealed within Section 1 during analysis amp feasibility User Stories Alpha release 1 0 As a user want to see how control the game Conformance Keyboard Gamepad Touchpad Mouse Test unit until working As a user want to see something react to my inputs Conformance optional early insertion Player should have full movement Textual pop ups occur upon raycast toward a contextual object Bones are collectable and itinerised on GUI Test unit until working As a developer need to ensure player controls are sound Conformance Review controls until human similar actions are tweaked effectively regarding player control mechanism Test unit until working As a developer need to ensure normals are correct for terrain collisions occurring from player Al and interactive objects Conformance Reduce terrain face intersection sharpness where possible Test unit until working Alpha release 1 1 As a user want to see some of the game models and textures in the game Conformance Enemy sprite artwork completed Dumb Al move from one side to the other toward player Add collision detection for enemy and player collisions and player projectile h
22. teleported false void lt summary gt Start this instance lt summary gt Start if destination null else Debug Log Teleport Area THIS script requires a script type to be assigned in inspector lt summary gt Raises the trigger enter event send the player to another world space destination lt summary gt lt param name col Col lt param gt void OnTriggerEnter Collider col if col CompareTag Player if teleported destination teleported true change teleported flag by accessing the scripts instance destination gameObj 04 form position 10n lt summary gt Raises the trigger exit event when exiting a collider the flag is set ot false signalling end of routine and return to orignal state lt summary gt lt param name col Col lt param gt void OnTriggerExit Collider col if col CompareTag Player teleported false return to original flag state ObjectStateChange cs using UnityEngine using System Collections lt summary gt Object state change lt summary gt public class ObjectStateChange MonoBehaviour public GameObject go lt summary gt State the specified state hough void we want the method to operate on a parameter set outside of the class this is achieved by the SendMessage Class functionality in Unity
23. the below line that the movie will beinvoked during the methods execution renderer material mainTexture Play Inside a regular Update method call void Update if Input GetButtonDown p if renderer material mainTexture isPlaying renderer material mainTexture Pause else renderer material mainTexture Play The above has been laid out to demonstrate the code that is intended for use once the last iteration period of the development is reached and the Unity project is transported to Unity Pro Itis here that full advantage will be taken of the MovieTexture calls to apply movie sequences to the experience 2 3 5 Quaternions Vs Eulers The key behind Quaternions lie within complex number theory represented as a bi mathematically with the on J commonly found as j in the electronics computing world The i represents the number as being imaginary or figmented but also representational of a number line that spans 2 dimensions This in short allows one to solve cubic equations mathematically and is especially handy for one to establish the position of a cubic element in a three dimensional game world then calculate a rotation or interpolation related to its position In game development and specific to Unity 3D Quaternions are used because they are fast to calculate leading to better optimized code that alternatively might use Euler Angles a potentially more
24. the path to exiting the area 3 2 High Level Action Diagram Explore the Tors of Dartmoor and obtain the clues to escape Action Sequence of events 3 3 Activity Diagram The following activity diagram expresses the nature of the high level Action diagram but with semantics low enough to be used as a template to extrapolate code classes from 3 4 Class Diagrams The class diagrams are being completed at the time of this report alongside other documentation of the system and in concurrency to the project scheduled timeline However due to research into the programming paradigm of Unity3D it was found that the model did not conform to the strict OO paradigm one would normally aspire to follow Instead Unity3D is a component oriented environment whereby objects are created and self contained encapsulated scripts applied to them once this object is completed in the Unity engine it can be prefabricated and further objects of the same type can be applied as instances ensuring repetition of code does not occur due to the instance parent being the location of the instances origin What shall be available in following reports are Component model diagrams that identify object in the game that go forward to identify the system in diagrammatic form Further research is under way into the nuances of correct component model diagramming techniques 3 5 Sequence Diagrams These diagrams will arrive for the second progress report of this project and will dem
25. to be sufficiently informative to confirm it as a viable project and which will be deliverable by the 2013 deadline At this stage the main presentation of any issues have come from steep learning curves in the 3D modelling software being used to complete the game assets These programs are professional tools that the course provides no background on via modules related to the course and as such has had a costly effect on time in this project Though time constraints have been tight the project as a whole has moved forward and at the time of writing is due to move into the second asset complimented grey box development testing phase Once this phase has been instigated development of in game mechanics and logical flow will be implemented and applied to the test environment This is concurrent with the plan laid out by the project timeline in fact and at the time of writing it is ahead of the schedule as grey box testing was immediately available in Unity with little needed to set up the scenario and researched and learned coding knowledge has proven useful to setup the in game staples for example character controller physics simple terrain environments The timeline is available at the following http address for the reader to peruse http www timetoast com timelines initiation Generally there was little research required to ensure legalities have and are kept within specified constraints with respect to locational information to be extract
26. will continue to present Operational costs can be attributed to users of the product but it is an assumption that the user will have a sufficient Windows platform PC in order to use the product Benefit o The benefit to this development is of educational value and will deliver an experience that may assist in divulging information relevant to national curriculum history o Further benefit to the Dartmoor tourism industry may be gained by this development by increasing locality awareness amongst users increased chance of visits to local tourist spots through information received by the user in game Legal IP conflicts None o Non original game assets As required by owner o Google Maps as a source of accurate data There was found to be no conflicts at this time related to using the Google Maps application to create a reference map for building upon a geologic terrain This is due to the map becoming changed from its original flat 3D state to a 3D interpreted state and furthermore is used under the fair use act for non profitable purposes o Data protection act stature is still under research with respect to use of historical information by citation or anecdotally This important aspect must be fully covered to ensure use of historic and folklore data in the game product can be used and remains accurately relayed Operational This system is not a system that is built to solve a problem but is more inclined to present a
27. writeThis text selected ToString 45 changeCooldown 0 1 46 47 48 if Input GetKeyDown KeyCode DownArrow amp amp changeCooldown lt 0 49 50 selected 1 51 if selected lt 0 selected createThis length 1 52 53 writeThis text selected ToString 54 changeCooldown 0 1 ss PrefabGenerator js activateWithDelay js x 3 destroyThisTimed js x ParticleScalejs x PrefabGeneratorjs X rampDownParticlejs X Raycastjs x M 3 MMMM ap Lu O wo ow nm 48 n n en en cn oe 69 J Oy n 4 M9 aw ow var createThis GameObject list of possible prefabs private var rndNr float this is for just a random number holder when ve need it var thisManyTimes int 3 var overThisTime float 1 0 var xWidth float define the square where prefabs vill be generated var yWidth float var zWidth float var xRotMax float define maximum rotation of each prefab var yRotMax float 180 var zRotMax float var allUseSameRotation boolean false private var allRotationDecided boolean felse var detachToWorld boolean true private var x cur float these are used in the random palcement process private var y cur float private var z cur float private var xRotCur float these are used in the random protation process private var yRotCur float private var zRotCur flo
28. 2 13 Deployment Beta 1 0 Thu 15 03 13 Sprint 2 Implement Game Sprint 1 General Structure Logic amp Initially Constructed Sprint3 Code Mon 06 02 13 Mon 13 02 13 Models Refinement Refactoring Full Demo Prototype 1 0 are Deployment Deadline Project Hand In Finish Thu 31 05 13 Start Sat 15 10 13 Developer testing Mon 06 02 12 Mon 13 02 13 Developer tests amp User tests Mon 05 03 12 Tue 13 03 13 Developer tests Wed 15 02 12 Tue 28 02 13
29. 3 returnVector Vector3 zero float oneMinusT 1f t int n currentArray Length 1 for int i 0 i lt n i returnVector BinomialCoefficient n i Mathf Pow oneMinusT n i Mathf Pow t i currentArray i return returnVector region Standard Maths methods summary Finds the Binomials coefficient lt summary gt lt returns gt The coefficient lt returns gt lt param name n gt N lt param gt lt param name k K lt param gt private float BinomialCoefficient int n int k f A if k k gt n return e k k gt n 2 n k k return float FallingPower n k Factorial k lt summary gt Finds Factorial of specified n lt summary gt lt param name n gt N lt param gt private int Factorial int n if n 0 return 1 int t n while n gt 2 t n return t summary Falling power returning an angle of fall summary returns The power lt returns gt lt param name n gt N lt param gt lt param name p P lt param gt private int FallingPower int n int p int t 1 for int i 0 i lt p i t n return t endregion ItemController cs using UnityEngine using System Collections lt sum
30. 4 age demographic in the focus group Jacquie Webb 34 Employed South West Water Jaquie is a keen mobile game player in her spare time and likes to play casually oriented games and could be helpful during the focus on the difficulty of challenge and speed of reward in order to keep the casual gamer interested She represents the 31 35 age range in the focus group Emily Jenkin 20 1st Year Nursing Student Southampton University Emily is a student in full time study and enjoys playing any game on any platform As such she represents a good generalised level of potential user that holds peripheral interest in the games technical production but a good level of interest in it being fun to play She represents the 16 20 age range in the focus group Kayleigh Wright 25 Graduate Author Kayleigh enjoys the limited time on casual games and also enjoys some time using console environments to play downloadable games on offer She will be a great input with respect to feedback over quality of experience when obtaining the game through a download portal such as the XBOX Live Marketplace She represents the 21 25 age range in the focus group Jane Aisthorpe 39 Beauty Therapist Self Employed Jane is the potential wild card in the focus group as she has little experience with games platforms or controlling them But could be seen as a vital Devil s Advocate to the group during discussions where suggestions may veer off into
31. Appendix D entitled 4 3 2 The complete code for the ParticleEngine class can be located at the back of this assignment under Appendix D entitled 5 End User Documentation 5 1 Minimum Specifications 5 1 1 Windows PC Windows XP x86 Windows Vista x86 x64 Windows 7 x86 x64 Windows 8 x86 x64 Acceptance of Administrator privelges may be required to install the standalone Ram 512 MB or more Prefernces Min 1GB HDD 1GB or more Access to the internet for download from as yet unspecified website 5 1 1 Android TBC All Android platforms V 4 0 Ice Cream Sandwich Upwards 5 2 User Manual 5 2 1 Install Windows 1 Unpack Zip file to a location of your choice 2 Click once to install complete game 3 Game now installed on system 4 User controls can be found in the Start of the game menu 5 2 2 Install Android TBC 1 2 3 4 5 Vv Vv 6 Project Review 6 1 Critical Appraisal The Analysis The Design The Build 6 2 Methodology Appraisal 7 Project Conclusions 7 2 Focus group Conclusion 7 2 What was achieved 7 3 Future developments Appendix A Appendix B Appendix C Focus Meeting Minutes 01 10 2012 Focus Meeting Minutes 10 12 2012 Focus Meeting Minutes 29 01 2013 Focus meeting minutes 15 02 2013 Appendix D full code Appendix E Appendix F Completed Gantt Chart Completed Tracking Gantt Chart Appendix G Iteration test proof Developer G1 Gamestates Intro
32. It is used to display both the first in game instructions and the games end credits and acknowledgements lt summary gt public class Scroller2 MonoBehaviour public string scrollLines public GUIStyle style public float offset 0 0f start position on 2d y public float speed 100 0f lt summary gt Raises the GUI event positions text label to middle of screen and releases each line based on the rectangle offset amount this is also used to stores an alpha value and replaces the labekl alpha with 0 0 then over the calls to OnGUI reduces it for every line in the array created lt summary gt private void 0 offset for in nGUI Time deltaTime speed 18 1 0 i lt scrollLines Length i float rectOffset scrolllines Length 20 i 25 offset float alpha Mathf Sin rectOffset Screen height 180 Mathf Deg2Rad GUI Lab 64 scrollLines i style GUI color new Color 1 1 1 alpha el new Rect Screen width Screen width 2 rectOffset 64 GUI color new Color 1 1 1 1 Teleporter cs using UnityEngin lt summary gt Teleporter lt summary gt public class Teleporter MonoBehaviour lt summary gt The destination create instance of teleporter lt summary gt public Teleporter destination lt summary gt The teleported set flag to false lt summary gt private bool
33. KeyUp KeyCode Escape Screen lockCursor true Pes Screen showCursor false else EE Screen lockCursor false T Screen showCursor true void Start Make the rigid body not change rotation if rigidbody rigidbody freezeRotation true originalRotation transform localRotation lock the mouse to the screen Screen lockCursor true Screen showCursor false public static float ClampAngle float angle float min float max if angle lt 360F angle 360F if angle 360F angle 360F return Mathf Clamp angle min max Leveraged JavaScript s from the Purchased Particle game object rampDownParticle js activateWithDelay js x B destroyThisTimed js E rampDownParticle js x S rampDownParticle gt O delayTime if var delayTime float 0 var delayPlusTime float 0 var rampDownTime float 1 var origMinEmission float var origMaxEmission float U N 1 function Start wW origMinEmission particleEmitter minEmission origMaxEmission particleEmitter maxEmission particleEmitter emit false O NP function Update 1 if delayTime delayPlusTime gt 0 delayTime Time deltaTime J n if delayTime lt 0 amp amp particleEmitter emit false particleEmitter emit true if delayTime delayPlusTime lt 0 4 particleEmitter minEmission origMinEmission rampDownTime
34. Min oF lt add property gt y gos 4 Fields 7 alphaMin bool public target Y gos List lt GameObject gt public Methods Y target GameObject public E OnTriggerEnter lt add field gt 0 5 aY OnTriggerExit 3 OnTriggerStay Y Start Name Type Modifier Summary 4 Methods 2 gt 2 OnTriggerEnter void private Raises the trigger enter event TriggerZone a gt Y Start void private Start this instance Class Y add method MonoBehaviour 4 Properties m lt add property Fields 4 Fields go GameObject public go msgObject GameObject public msgObject Methods e OnTriggerEnter Y Start Name Type Modifier Summary FlightCoordinator amp 4 Methods Class gt DrawGizmoStuff void public Draws the gizmo stuff MonoBehaviour gt Y NextWaypoint Vector3 private Nexts the waypoint gt Y OnDrawGizmosSelected void private Raises the draw gizmos selected event Fields b e Start void private Start this instance ye bezier gt Y Update void private Update this instance ye currentWaypoint 4 lt add method SecondsForFull 2 OP aus R 2 targetPoint il gt P md ae a ze targetRotation 4 Fields 3 bezier WaypointBezier private current bezier cache ll ite 9 currentWaypoint int private The current waypoint in flyNextWaypoints array Methods Y SecondsForFullLoop float public The seconds for full loop 9 DrawGizmoStuff Y targetPoin
35. Options Help Live ices B n b 3 wor v Audio g E3108 De fi oo g O 2Audo SD fies 3 Audio 58 1 8 1 9 8 ses gt E Boat 4 Audio 5 ES Ee ii ooo ms E 9 sao e oo DU Mixer C HA E 4 T Speaker On v i Auto OM int nr CIA ojo fis IZ o az e gt Mixer E m Wo 4 gt ig exte Speaker On _ v im Auto OM nt int gt Master v 0 gt E Freq saudo oa ESTERI aaa gt E Gate Speake Ono E 1 gt CO o ESTE MC ooo 3pm M A Ex gt Audio recording is achieved by iais settign the circle to red to a recieve input and then using ster a the play and record buttons at L the top This records live a input and stores it a raw wav 15 n i a pL CHI al audio until saved gt i Ping these audios are all the gt narratives for the story abouth EE the bones Track Display Click and drag to select time then use GraveSti 23 10 Audio 1 wav Sat S8 any available Edit menu command to ci ker 16 Ba 2 ch slave AE SIE 1 zb
36. Start InGame amp GameOver test screens G2 amp G3 Collision detection projectile collision G4 Full game play single pass screenshots G5 Appendix H Adobe Photoshop CS6 Adobe Soundbooth CS5 Used for some audio creations coming in the development Imageline FL Studio 9 was also used to create audio adssets like the dog bark noise amongst much more Appendix B Dependencies Class amp Method CameraSystem Item controller Objec n This semi leveraged script as some further conversion were brought more in line with C by this developer allowing a Terrain object to be prefabbed to a terrain object in Unity Object2Terrain Y OnGUI Y Object2Terrain Y OnLostFocus 4 Object2Terrain lt gt c_DisplayClass2 3 Object2Terrain CleanUp Y Begininvoke Y CleanUp Y Endinvoke Invoke lt gt c_DisplayClass2 lt CreateTerrain gt b_0 4 ColorCorrectionEffect MotionBlur W ColorCorrectionEffect OnRenderimage MotionBlur 7 OnDisable w OnRenderimage w Start i ImageEffectBase f OnDisable vm get material amp ContrastStretchEffect m OnRenderimage d v OnDisable Y OnEnable Y Start 3 H y get materialLum OW get materislReduce oN CalculsteAdaptstion VW get materialApply Y SQ get_materialAdapt 1 10 F GlowEffect 3 v gt GlowEffect z OnDisable Y DownSampledx Y BlitGlow w
37. Start Y FourTapCone n AA owe acd iar mx WM PAP ais OW get downsampleMaterial W get compositeMaterial OW get blurMaterial ImageEffects v Blit W BlitWithMaterial Y ImageEffects M RenderDistortion TriggerObject TriggerKittyAudio SmoothCamFollow Scroller2 GUIHelper ExitBackUp RotateObject RotateObject E 7 P 2 Y NT ree RB FPS Gruffy RB FPS Gruffy 00 as gt 1 0 CalculateJumpVerticalSpeed i ApplyClimbConstraints PauseEvent 4 2 4 ObjectStateChange PauseEvent ObjectStateChange e a TS d m MouseLook i MouseLook m p 0 MouseLook RotationAxes BU ClampAngle GenericTriggerScript al GenericTriggerScript 16 OnTriggerEnter 4 OnTriggerb t 4 OnTriggerstay 856 GUIMenuManager i GUIMenuManager Start N 4 GUIMenuManager 58 EndCreditsScript EndCredisScipt APT 7 A y E W ExitMenu W OptionsMenu gt a ONGUI SettingsMenu 4 ControlsMenu 4 Y i 3 ES GUIHoverControls 5 4s GUIHoverControls A StartintroTalk LoadALevel 4 e c Y 6 Y GUlHoverControls lt StartintroTalk gt d_0 GUlHoverControls lt LoadALevel gt d_2 OnMouseE
38. UI originalMaterial Material public The original material e OnTriggerEnter style GUIStyle public The style ET OnTriggerExit triggerFieldls bool public The trigger field is Y Start ales E Name Type Modifier Summary Class 4 Methods MonoBehaviour gt Y Start void private Start this instance 9 lt add method Fields 4 Properties Y BumpO Y lt add property Y Bumpl 4 Fields Y Bump2 Y 8 0 Texture2D public The bump0 1 2 3 Y Bump3 Bumpl Texture2D public ColTex0 Bump2 Texture2D public Collex1 Bump3 Texture2D public 9 ColTex2 Y ColTe0 Color public The col tex0 1 2 3 Collex3 ColTed Color public 6 CustomColorM Y ColTe2 Color public SplattingDistan ColTe3 Color public Y TerrainNormal CustomColorMap Texture2D public The custom color map SplattingDistance float public The splatting distance Methods TerrainNormalMap Texture2D public The terrain normal map e Start RotateObject zi Class MonoBehaviour E Fields Y axisRotationChoice EZ axisRotChoice 9 chosenSpeed 9 variants Name Type Modifier Summary E Methods 4 Methods Y Start gt Y Start void private Start this instance Y Update gt Y Update void private Update this instance E Nested Types 9 add method Ma 4 Properties AxisRotationC oF lt add property gt pe A LL mE AntiClockWiseY Y axisRotationChoice AxisRotationChoic public ClockWiseY s axisRotChoice
39. UI new Rect 30 190 20 GUI CollectItems cs using UnityEngine using System Collections lt summary gt Collect items attached to a gameobject leverages a single audio source and waits a time before firing off lt summary gt public class CollectItems MonoBehaviour lt summary gt The audio audio cache lt summary gt public AudioSource audio lt summary gt The time holds an inspecptor assignable time value used in co routine lt summary gt public float time 2 5f lt summary gt Raises the trigger enter event lt summary gt lt param name col gt Col Col must be equal to the Player tag lt param gt void OnTriggerEnter Collider col switch col gameObject tag case Player add item to static item count in ItemController ItemController itemCount StartCoroutine PlayAudio time remove object from game Destroy this gameObject break lt summary gt Plays the audio sets looping to false controls doppler if 3d sound lt summary gt lt returns gt The audio lt returns gt lt param name time _time lt param gt IEnumerator PlayAudio float _time _time time audio dopplerLevel 0 0f audio loop false audio Play yield return new WaitForSeconds time CollectAreas cs
40. Unity operates the using namespace statements and it is requirement to add to create working code in Unity using UnityEngine 2 1 3 CH Namespaces Namespaces can be viewed as a tool whereby various types can be correctly organized A conceptualization may allow an easier insight into what a namespace represents For this the reader is invited to imagine a folder structure like that which can easily be seen in any wimp interface for example Windows or OSX These folders allow files to be saved within them and reference is made to their storage location through them This in turn allows one to store an identical file with an identical name in two different folders with different folder titles This is the same concept for namespaces In this context each namespace folder allow classes of the same name to be accessible through its namespace identifier and in turn fully qualifying it as unique A diagram below has been created to assist the reader in visualization with respect to the above discussion As can be seen in the above diagram one can utilize the Namespace structure to access classes interfaces and methods of the same name and type allowing for code reusability in the creation of assembly dll s for example and relying more on the scope convention accessed via a top down approach which instantly avoids naming conflicts Generally namespaces contain classes structs interfaces enumerations delegates and can also be found to contain o
41. User Requirements User requirements consist of Simple control mechanisms bearing in mind user cognitive capability with respect to users being either young children or generalist computer users Encouraging coercive tutorial like instructions to ease user into using anything the game specifically requires one to be comfortable with For example game keys or mouse actions Complimentary environment to add to the nuance of exploring the real thing Continual updates and inclusion of decisions based on user interactions concerning the game Approachable prototype deliveries incrementally presented during the later development test phases 6 5 T E L O S as a feasibility tool A full TELOS breakdown will be delivered in the first project report of this assignment 7 Analysis After investigations have concluded an analysis will be undertaken to conclude the efficacy of the project and will go forward to provide conclusions and recommendations prior to entering the design stages of the system A critical analysis will be undertaken at the project s final steps to provide a comparison against what was aimed for and what was achieved 8 Objectives Conclusively the Objective is to produce a complete document and working demonstrable prototype that meets the criteria laid out in this initiation document and discovered requirement being laid out in future reports and project updates 9 Approach to Methodologies This section is also covered i
42. a compasses lt summary gt public class GenericTriggerScript MonoBehaviour public List lt GameObject gt gos public GameObject target public bool alphaMin true void Start foreach GameObject go in gos go gameObject renderer enabled false lt summary gt Raises the trigger enter event lt summary gt lt param name col gt Col is collider tagged with Player lt param gt void OnTriggerEnter Collider col if col gameObject tag Player foreach GameObject go in gos go gameObject renderer enabled true lt summary gt Raises the trigger stay event lt summary gt lt param name col Col turns now enabled objects towasrd the Player transform by assessing the tag again lt param gt void OnTriggerStay Collider col if col gameObject tag Player foreach GameObject go in gos utilising rotation instead of LookAt function as it proved to have a reversing consequence with 3d text meshes go transform rotation target transform rotation Y J lt summary gt Raises the trigger exit event lt summary gt param name col gt Col loops through each gameobject triggered by colliding object and removes them lt param gt void OnTriggerExit Collider col 1 if col gameObject tag Player foreach GameObject go in gos
43. a type Extensive class library that includes allowances for programmers to handle low level operations safely Development frameworks and technologies designed for specific areas like networking web pages multimedia applications and more Interoperability of language due to intermediary code produced by the CIL Common Intermediate Language then complied at runtime by the CLR Common Language Runtime Retro compatibility for earlier NET implementations which should mostly not require recoding Cross platform coding 2 2 Unity 3D Unity 3D current version at time of writing 4 0 1 is a complete game engine system that allows novice and experienced developers to create speedily prototyped developments related to gaming and GUI programming It couples a cross platform development tool that includes a GUI and code driven IDE alongside the ability for full integration with third party or self created external developer libraries The product was born from a game development tool originally created for Apple s MAC OS X circa 2005 and has continued to evolve to now cater for development across 10 separate platforms making it a truly cross platform tool There are two versions of Untiy 3D available Pro and Community Edition of which the differences are further discussed at a later part of this sub section The below establishes some of the new features provided by the fourth iteration of Unity 3D though no distinction is made between p
44. act it is also compiled to an intermediary language prior to machine executable code is also complimentary to it but One aspect that has influenced C through Java more than any other language is C adoption of Unicode character encoding for char and string types that then allow for complex scripts like Chinese Arabic or Japanese to display correctly in a written program and overall can be seen to resolute multiple internationalization issues and current systems are designed to run programs faster under Unicode enabled software Effectively C can be viewed upon as Java but with a different set of Component libraries to use NET or Mono 2 1 7 Mono Framework The Mono NET Framework is the latest stable release of a framework that houses the class libraries that C relies upon to effectively interoperate between it s classes As a comparator below is a description found on the Microsoft website and which moves forward to establish a synopsis that describes what the NET framework actually is The NET Framework is an application development platform that provides services for building deploying and running desktop web and phone applications and web services It consists of two major components the common language runtime CLR which provides memory management and other system services and an extensive class library which includes tested reusable code for all major areas of application development Microsoft 2012 With the above in min
45. al feasibility By means of identifying the problems with their offset solutions a technical analysis has been undertaken with a clear definition of requirements and there counter actions to create solutions Can the project be built by a single entity Yes The technology can be accessed by the project creator for all aspects of the build including System design Coding Art work Testing Implementations and Marketing Although some confabulations among peer groups for potentially cleaner and more succinct code practices may take place during development Is the technology available to implement the project successfully i CH ii Unity 3D Package iii Mono IDE iv NET 4 Mono Framework v Adobe cs6 suite vi Autodesk suite vii Blender viii Standardised UML modelling process Is the necessary expertise and infrastructure available to carry out the task at hand Not all the expertise will be pre requisite to development Some aspects of the project denote independent learning and research to take place before the project can move forward and onto the later code development stages These will be highlighted throughout the projects chapters where a necessary basis for understanding was developed before moving forward Will the project meet expectations regarding it users The project will remain fairly subjective by means of a focus group with respect to meeting expectations as the finished product is a game and will require feedback a
46. allowing us to pass the argument to the parameter for operation easily An optimized route may be to set a delegate system up to pass the argument via an event handler this is a full system upgrade as part of future developments as such this script and paradigm of its use conforms to the Unity way and is not used more than once so is not a heavy load this coupled with managed garbage collection makes this script a viable option method to handle setting game object to active or not lt summary gt lt param name state gt State lt param gt void State bool state cache bool bool state state foreach GameObject _go in go gameObject renderer enabled _state SetActive _state RB_FPS_Gruffy cs lt summary gt Character controls Copyrights Original Code Unify Community 2012 Changed Code Gruffy 2013 These have been adapted from the RigidBody FPS Walker code found at http wiki unity3d com index php title RigidbodyFPSWalker The script originally Javascript was adapted to C and allows the player controll system to be affected by real physics setup in the game This is due to the character controller including movement and mouse control scripts creating its own physics during runtime to move the player object about or affect it against the game world if needed Unify s example idea is based on games that may require workld phy
47. ameObject timeToLive Destroy obj component to remove optional time delay length J RotateObject using UnityEngine using System Collections lt summary gt Rotate object Created for convenience by G Wright 2013 gruffy wright gmail com This script can be attached to any game object and give the developer simplified access to GameObject rotations The Vector3 types built in scope operators are up facing the GameObject yields an anticlockwise rotation on Y axis down facing the GameObject yields a clockwise rotation on Y axis left facing the GameObject yields an anticlockwise rotation on X axis right facing the GameObject yields a clockwise rotation on X axis back facing the GameObject yields an anticlockwise rotation on Z axis forward facing the GameObject yields a clockwise rotation on Z axis Below are Bespoke as I could not find built in operations in Unity to deal with all axes rotations all axes rotate positively facing the GameObject yields an anticlockwise rotation on all axes all axes rotate negatively rotation on all axes lt summary gt public class RotateObject MonoBehaviour n 1 facing the GameObject yields a clockwise public float chosenSpeed multiplier public float variants inspector accessed enumerator type public enum AxisRotationChoice AntiClockWiseY ClockWiseY AntiClockW
48. ams to describe the system at the high level Bibliography Monden Y 1998 Toyota Production System An Integrated Approach to Just In Time Third edition ed Norcross GA Engineering amp Management Press Poppendieck M 2003 Lean Software Development An Agile Toolkit Boston Addison Wesley Professional Project Report 1 Deliverable Outline Report and initial research Document PROC303 FINAL YEAR PROJECT Project Report Part 1 Draft documentation Deliverables and Early designs Gareth Wright 10239101 1 Progress against plan 2 1 1 Overview 2 1 2 solidified idea analysis and feasibility 2 1 2 1 Idea 2 1 2 2 Genre 3 1 2 3 Category 3 1 2 4 Platform 3 1 2 5 Play mechanics 3 1 2 6 Technologies 3 1 2 7 Target Audience 4 1 2 8 Key Feature Unique Selling Point 5 1 2 9 T E L O S feasibility 5 2 Demonstrable representations of the product 7 2 1 Initial Report Product deliverables outputs 7 2 2 Development progress using Unity3D 7 2 3 Development Progress using stated 3D modelling tools 7 2 4 Ul screens 8 2 5 Game Assets Experimental and in game placement models 10 2 6 Prototype Grey Box amp Experimental Environment 1 10 3 Draft outline of the report 11 3 1 Use Cases 11 3 2 High Level Action Diagram 13 3 3 Activity Diagram 14 3 4 Class Diagrams 15 3 5 Sequence Diagrams 15 1 Progress against plan 1 1 Overview After an implementation of the grey box for this development it was found
49. at private var timeCounter float counts the time p private var effectCounter int you vill guess ti private var trigger float trigger at which intervals should ve generate a particle function Start trigger overThisTime thisManyTimes define the intervals of time of the prefab generation function Update timeCounter Time deltaTime if timeCounter gt triggersseffectCounter lt thisManyTimes 1 rndNr Mathf Floor Random value createThis length decide which prefab to create X cur transform position xt Random value xWidth xWidth 0 5 decide an actual place y_cur transform position Random value yWidth yWidth 0 5 z_cur transform position z Random value zWidth zWidth 0 5 if allUseSameRotation false allRotationDecided false basically this plays only once if allRotationDecided true othervise it plays all the time xRotCur transform rotation x Random value xRotMax 2 xRotMax decide rotation yRotCur transform rotation y Random value yRotMax 2 yRotMax zRotCur transform rotation z Random value zRotMax 2 zRotMax allRotationDecided true var justCreated GameO0bject Instantiate createThis rndNr Vector3 x cur y cur z cur Vector3 xRotCur yRotCur zRotCur instantiates the prefab var justCreated GameObject Instantiate createThis rndNr Vector3 x cur y cur z cur transform rotation create the prefab justCreated t
50. ation 3 2 Out of Scope The project will have limitations the most pressing of which being time and will undoubtedly present scheduling issues with respect to deliverables as a result With this in mind the maximum this project purports to deliver is a working prototype that can be interacted with as a demonstrative tool all else will be considered out of scope and for future development unless reviewed ad hoc and is revealed as achievable in the remaining time frame With respect to the future the development may have real world application as either an educational or tourism linked product which may present marketable features but will also not be in scope for the final product deliverable this project requires 3 3 Contingency Plan If the investigation analysis and early development were found to reveal conclusively that there is not enough substance in the concept of this prototype or adaptable use for this type of product the game mechanics environment game models and theme can be altered to redeliver an experience that demonstrates an understanding of games concepts but unfortunately may present nothing innovative 4 Project Log 4 1 Blog There will be a blog created over the coming weeks that offers a form of tracking the project s developments though this should be viewed as informal due to there being no strict guidance for how the blog should be presented or laid out The URL can be currently accessed through http my
51. c 65 Legends ort Appendices Table of Contents PAD DCI A RR RO 4 Project Part one Deliverable PID 5 iii 4 Project Report 1 Deliverable Outline Report and initial research DOCUMENT cccccecessssececececesenneeeceeeeesettnaeess 10 Part 2 deliverable report covering full research 6 eene enne 16 leere 46 Dependencia te it ea tee obe d e eee ga sed n e Eo Erden ad 46 Class se Method A PL 46 Cameras ste Mii iii E E A A E E E E 46 IEEE 46 je Te PA ecco ios 47 Image effects COMpPlete EET m 47 111 1 1 0229 101 TIL 47 MPS CLO DCCL sacs execs tai 48 A E E Civ 48 SMOOtHCaMFONOW HE 48 ll iii cion 48 GUIEBelpet iaa ansia EEAS 48 dile UD MA 48 ROtaTCO DJ ECE ines cess 49 RB FPS Grial 49 A M 49 MOUSELOOK A RT 49 ru dulquudegmee C 49 GUIMenuMIaFriaBger irt eee ese teo rd atreve less hebes t aere dais 50 US EP 50 dheWuc
52. constraints and with the addition of utilising Agile practices for the developmental stages there will be a time slot where aspects of the project can be addended 1 3 1 6 Telos Conclusions and Recommendations The game is feasible for development as there is no actual real world client that is relying upon a working model to assimilate into their business in some way although it must be emphasized that the project should hold equal weight to that of a corporate development by means of it focus group being the client who will ultimately critique it for quality and sufficiency 1 3 2 Outcomes Finalized game with future development potential Better familiarization with techniques and documentation tools using the UML 2 0 specification A time served understanding of development processes commonly found in games 1 3 3 Deliverables Below is the list of self perpetuated deliverables the project has been designed to provide System documentation via UML Use cases sequence diagrams etc A physical game available to play over multiple platforms but predominantly demonstrated on Windows and MAC OS Historical in game information regarding the local area Research into C Unity 3D Net Mono Framework 4 component library Comparative elements to influential languages such as C and Java and pertinent definitions with general research given to types commonly used in game Unity developments including the use of component classes to conform to
53. d we can use the description found on the Mono website to see where the differences lie Mono is a software platform designed to allow developers to easily create cross platform applications It is an open source implementation of Microsoft s Net Framework based on the ECMA standards for CH and the Common Language Runtime We feel that by embracing a successful standardized software platform we can lower the barriers to producing great applications for Linux Mono no date Analysis of the above two statements shows that Mono utilizes the same Net framework as Microsoft but have a distinct intention to use it as a standard across platforms outside of the Microsoft only compliment particularly with Linux in mind As such the NET and Mono framework should commonly be viewed as transparent to developers using it For example if a piece of software were to be installed the executable may require some NET Mono framework library and install that to one s system and one need never know why or ever use it However with developers utilizing the NET Mono Framework one can view it as a vital inclusion to successfully and safely building projects from code in C Explanations of provisions that the framework offers to programmers can be found on the Mono website pertaining to the Mono NET Framework but below is a round up what it can be seen to provide Memory management Common type system no longer relies upon compiler definition of
54. date ee LookAtTarget Name Type Modifier Summary Class 4 Methods MonoBehaviour gt Y Start void private Start this instance b FU Update void private Update this instance 3 Fields 9 add method inst 4 Properties 9 target lt add property Je targetPoint 4 Fi a targetRotation inst LookAtTarget private The instanc of itself B Method x 5 Y target GameObject public The target is an empty gameobject behind the player a targetPoint Vector3 private The target point to look at e Start g targetRotation Quaternion private The target rotation to rotate toward Update Y lt add field gt TriggerObject Class MonoBehaviour Name Type Modifier Summary 4 Methods Fields gt Y OnGUI void private Raises the GU event changeToMater EJ OnTriggerEnter void private Raises the trigger enter event 7 gt Y OnTriggerExit void private Raises the trigger exit event 9 p EN Start void private Start this instance coords add method Y distance 4 Properties at go PE E sd Y objectToChange telds gt changeToMaterial Material public The change to material M originalMaterial content List lt string gt public style coords List lt Vector2 gt public The coords triggerFieldIs distance int public The distance ga 2 go GameObject private The go Methods objectToChange GameObject public The object to change ye OnG
55. de go transform position z lastPos go transform position lt summary gt Update this instance lt summary gt void Update mylatitude go transform position x make long and lat register gameobject position mylongitude go transform position z leave yPosition of go for now as we are not interested in 3d geolocation yet if go transform position lastPos xPos zPos go transform position x assign x go transform position z assign z yPos go transform position y assign y anyway to ensure you have the data atleast if needed PauseEvent cs using UnityEngine using System Collections public class PauseEvent MonoBehaviour 4 lt summary gt The target object easier access to the gameobject s components in this instance we want the camera lt summary gt public GameObject targetObj are we paused lt summary gt The paused set to false lt summary gt private bool paused false lt summary gt Start this instance lt summary gt void Start 1 Screen lockCursor true Screen showCursor false set our cache object component to false this component is in the Main Camera Game Object target0bj GetComponent lt GUIMenuManager gt enabled false Y J Update is called once per frame void Update this keybutton check is functioned through the input indentif
56. design was solid enough to pass through to practical code implementation without any issues The last part of the previous statement rarely occurs flawlessly and the waterfall method entertains no possibility of design and changes after the design stage is finalized 2 4 2 SCRUM Research Scrum is used as a metaphor for to coincide with the same premise of the rugby scrum When a scrum is formed it becomes an short but intense time span where clear succinct and speedy interaction between the team players development team and getting the rugby ball product deliverable out to their team s fly half Client The metaphor stretches even further to denote the level of interaction the fly half must have with the scrum to understand where the ball is and instruct of changes that the scrum need to make to effect the ball enough that he can accept it Even further we can denote the scrum half in the middle of the scrum to be the project team leader who must battle hard to ensure that the ball is delivered through his team As the above metaphorical explanation of scrum is hoped to incite Scrum is a quick deliverable time sensitive based style of handling development stages The emphasis is to get the product deliverable out as fast as possible by continual interaction between the team with at least one standing meeting every morning to discuss the days affairs and what should be deliverable or achieved by the end of it It is this element of Scrum that s
57. e 2 1 6 C Common Influences Instantly upon starting to write code with C one can ascertain its influences to have predominantly developed from C C and Java A fair dichotomy would be to state that it is loosely based on C C and similar to Java with respect to being a language that uses a common intermediary platform to pipeline source code into machine readable language With respect to C C the C language does not have an exclusive class library that it can call its own but instead makes heavy use of the NET Framework which is a comprehensive class library in its own right and is not exclusive to the C language alone C types are similar to C with respect to the available range of basic types but where C relies on the platform to denote the length of the basic types C resolute a fixed length to each type for example a C long type depends wholly on the platform bit type meaning a long could be 32 or 64 bits in length depending on the platform architecture whereas C equates a long type to 64 bits and negates whether the platform architecture is 32 or 64 bit Classes and structs can be seen as practically the same thing in C with respect to them being reference types due mainly to its influence from C whereas C tends to separate the two quite distinctly for instance a C struct cannot contain initializations of a field This is better explained through use of a code diagram As C does not allow the initialization of f
58. e maxVelocityChange velocityChange z maxVelocityChange velocityChange y rigidbody AddForce velocityChange ForceMode VelocityChange Mathf Clamp velocityChange z maxVelocityChange Jump not used in this game if canJump amp amp Input GetButton Jump rigidbody velocity new Vector3 velocity x CalculateJumpVerticalSpeed velocity z ApplyClimbConstraints apply gravity manually for better tuning control rigidbody AddForce new Vector3 0 gravity rigidbody mass 0 grounded false lt summary gt Raises the collision stay event lt summary gt void OnCollisionStay lt summary gt Calculates the jump vertical speed lt summary gt lt returns gt The jump vertical speed lt returns gt float CalculateJumpVerticalSpeed grounded true From the jump height and gravity we deduce the upwards speed for the character to reach at the apex return Mathf Sqrt 2 jumpHeight gravity lt summary gt Applies the climb constraints using raycast downwards to determine angle of slope not fully implememnted yet but applying a slide constraint to a rigidbody method below lt summary gt void ApplyClimbConstraints if grounded return slideDir Vector3 down RaycastHit hit ray origin is placed 1 unit up from player 0 1 0 ray direction facing
59. e mystery and investigative games that utilise 3D and interactive environments to move the story such as the MYST franchise The Mysterious Island franchise the Darkfall franchise amongst others The game itself will be focused on location centralised historical fact folklore or Legend that surrounds areas of Dartmoor It will attempt to use the above stated focal nuances to develop a mystery exploration game that reveals educational facts regarding localised Dartmoor history The final product would aim to deliver An unspecified number of unique experiences over the Dartmoor landscape utilising high profile areas such as the Dartmoor Tors to drive the storyline Storyline utilising the game user for help in discovery of secrets The player takes on a challenge and attempts to solve mystery and puzzle elements that deliver learned or educational experiences to the user about historical mythological and legendary information about a location Photographic images of scenes designed around key Dartmoor locations used for puzzles investigative progression First Person Perspective view and control Appendices 1 Contents These and other subject matters are later discussed in this document Table of Contents Introduction 1 1 Project Proposal 3 2 Projects Components and Background 3 2 1 The Build 3 2 2 Subject Matter for Research 4 2 3 Desired Skills 4 2 4 Technologies available 4 2 5 Need for this type of developm
60. e E O 50 ENE E detener heaters ttu dote atc em RN duse A 50 A 51 A OOO 51 RO 51 STO VO Vii a ati 52 A NN 53 Class Definitions and Diagrams ii ii ii cis 53 Sequence DIA Bia MSs s cett e esteem EE WR A di 63 APDCNGIXED ica lts a di A aeta rn a is ce dee cae 66 XPDoc mented Gamie Code 66 Leveraged JavaScript s from the Purchased Particle game object sss 111 A TE 113 PrefabGenefratot s tiet oer tree e ette A ad adi 114 7 10191 1 10 1 A m M HH 115 AppendbGE s ste tice ave DR REIR 5 T pde e UE 119 LncaeDg 120 Appendix A Project Part one Deliverable PID Introduction History Mystery An educational Exploration Adventure Dartmoor Edition This project has been put forward to deliver a working prototype of a full game concept based around the nuances of Dartmoor myth legend and history The genre type will take influence from investigative and adventure based games with predominant influences coming from adventur
61. e computational system contained within the source code and relative ReadMe documents 2 Projects Components and Background 2 1 The Build The project will deliver in the least a working demonstrable prototype that will showcase the premise of the game and important aspects of the game mechanics The internal mechanisms the game based environment will be designed around and worked towards are First Person 3 Dimensional open like environment Use of real photographic shots to deliver location based realism Photographs will be focused upon to deliver some puzzle elements as a gameplay factor Trail driven interaction game play logic linear model for early prototypes Audio will play a relatively significant part in delivering the overall experience and in order to compliment the project a final year module centred on sound design has been undertaken in order that the correct aural accompaniments can be ascertained through better understanding of music and how to fit it into interactive scenarios for fullest effect The game will be developed on a Windows PC but the prototype environment is Unity which offers significant scope to deliver a prototype on other platforms simultaneously This is a future consideration and will be addendum to a final fully working product which is currently considered out of scope for this project The control system will rely on mouse and key input However experimentation with control systems along the wa
62. ed from Google Maps as a basis for the 3D terrain generation of the localised areas in game The legal issues arise mostly from printed or authored material that may prove useful to the narrative and storyline of the game premise This further denoted an investigative requirement into the legalities surrounding the relay of information to children or minors through the game As such there is further research required for this element and is due to be undertaken in the coming weeks prior to the return to University in the New Year 2013 1 2 solidified idea analysis and feasibility 1 2 1 Idea Mystery History is an explorative game designed to be both enjoyable to experience and educational by being historically and geographically correct alongside historic and myth or folklore as the driving force to entice user involvement The environment places the user in scenario whereby puzzles must be solved or clues found to complete the level and return to a selection screen that offers a range of destinations These destinations are related by locality with this idea focusing around the locality of Dartmoor using local history and folklore to inform the user about the area via playing the game 1 2 2 Genre This genre falls under the umbrella of Adventure games and shall be considered also as an educational game or Edugame 1 2 3 Category Mystery History is designed to offer a unique experience of local areas through experiencing historic informatio
63. eed ae float pubie 0 side stepS j isTouchEnabled bool public jumpHeight float public i Y maxVelocityChange float public M slideMagnitude runBackwardSpeed float public 9 slidingThreshold runSidestepSpeed float public at targetVelocity runSpeed float public g velocity 7 float poti velocityChange f slideDir Vector3 private walkBackwards slideMagnitudeConstraint float public lkSpeed 9 slidingThreshold float public g targetVelocity Vector3 private i Methods a velocity Vector3 private e ApplyClimbCon a velocityChange Vector3 private e ete walkBackwardSpeed float public eres walkSpeed float public a Pe lt add field gt BY FixedUpdate Y OnCollisionStay MouseLook Class MonoBehaviour Fields axes 9 maximumX Name Type Modifier Summary Y maximumY 4 Methods 9 minimumX gt 4 ClampAngle float public Y minimumY gt Y Start void private 3 originalRotation gt Y Update void private 3 rotationX add method 2 rotationY 4 Properties Y sensitivityX S88 lt add property W sensitivityY 4 Fields E Methods Y axes RotationAxes public ClampAngle 9 maximumX float public Y Start Y maximumY float public 3 Update minimumX float public E Nested Types 9 minimumY float public 5 originalRotation Quaternion private a rotationX float private g rotationY float private sensitivityX float public gc m i Mo
64. el 2 0 Phone has no support for custom shaders 3 0 and upwards Unity Pro supports applying custom shader extensions Physics NVIDIA PhysX NVIDIA Physx Particle System Shuriken Shuriken Max texture Size 1024 4096 Max Cubemap size 1024 4096 3D Texture support Not Supported Browser Integration Deployment Windows Linux MacOS Android IOS Webplayer Flash PS3 XBOX WiiU Windows Linux MacOS Android IOS Webplayer Flash PS3 XBOX WiiU Realtime Shadows Not Supported HDR Not Supported Light Probes Not Supported Optimized Graphics Directx amp OpenGl Directx amp OpenGl ShadersBuilt in amp Customisable Built in amp Customisable Lightmapping Generated or imported Generated or imported Global Illumination Not Supported Beast lighting system extra Dynamic Batching Static Binding Not Supported Terrains Full Screen PPE Post Processing Not Supported Occlusion Culling Not Supported Umbra Deffered Rendering Not Supported IK Rigs Not Supported Full IK positioning using Unity rigs Mechanim Sync and Curve Not Supported Navmeshes Not Supported Navigation baking and high performance path finding amp crowd simulations Dynamic Obstacles Dynamic Priorities LOD level of Detail Support Not Supported LOD grouping for optimization over distance Audio Filter Not Supported FMOD filters Video Playback amp Streaming Not Supported 2 2 1Unity API amp GUI The Unity Engine is an Application Programming Interface based u
65. ent 5 3 Project Objectives 5 3 1 Initial Scope 5 3 2 Out of Scope 6 3 3 Contingency Plan 6 4 Project Log 6 4 1Blog 6 5 Investigation 7 6 Feasibility 7 6 1 Purpose of the game 7 6 2 Game scope 7 6 3 Current deficiencies 7 6 4 User Requirements 7 6 5 T E L O S as a feasibility tool 7 7 Analysis 8 8 Objectives8 9 Approach to Methodologies 8 Works Cited9 1 Project Proposal Title History Mystery An educational Investigation Adventure Dartmoor Edition Format Game Educational interactive exploration experimental Platform Unity for prototyping with further development to be undertaken in a suitable language Time Scale 3 months for working prototype demonstrating conceptual premise Design Methodology Agile Conformance Lean Lean Sensei Documentation UML Lean is an adaptation of a set of principles derived from the Japanese Toyota Factory s set of principles and can be found detailed in the book entitled Toyota Production System An Integrated Approach to Just In Time 1998 The term lean software development was first coined in the book by Poppendieck 2003 who presented a set of principles Development Methodology Agile Conformance eXtreme Programming Documentation XP Extreme programming can be seen to offer a developer a good avenue of system build approach with the emphasis on iteration and code redesign opportunities at the earliest possible identification and continued documentation of th
66. er string for input keys this allows for both controller and keyboard to take the same identifier but can fire events over multiple buttons if Input GetButtonUp Pause keyboard P or xbox Start button check if p pressed to pause game if paused Screen lockCursor Screen showCursor paused true Time timeScale 0 0f set component menu to true targetObj GetComponent lt GUIMenuManager gt enabled false true 1 J else when pressed again 1 Screen lockCursor true Screen showCursor false paused false Time timeScale 1 0f Time timeScale set component menu to false targetObj GetComponent GUIMenuManager enabled yaay a working menu in Unity GUIMenuManager cs using UnityEngine using System using System Collections using System Collections Generic lt summary gt GUI menu manager called by Pause Event from accompanying script component Gruffy2013 This is a delegate system to deal with changing gui elelments at the start and pause menu of my game The delegate is passed in visa vis the instance delegate declared above it This then applys the state passd in as the arguement For each argument there is a method to carry out FUTURE DEVS change to event handlers to create system wide gui controls to handle all game states this means a state manager that could house these methods as class methods perhaps
67. ere it seemed appropriate to example any complexities of the project build The purpose of this project was to deliver a game that can be played by all ages and abilities using realistically textured graphics alongside simple control mechanics to aid with the provision of a fun gaming experience Further to this the experience of visiting real areas of interest with comparable game locations mimicking the real areas geographics The deliverable was set to accomplish a fully demonstratable prototype game development based around the legends facts and stories of Dartmoor This iteration of the potential series focuses around the suicide victim Kitty Jay and the area around Houndtor Dartmoor This implied a supernatural element to the idea and this developed to be the premise behind this game s theme This project has utilised the Unity 3D Engine framework and Mono version of the Net framework to composite the iterative and final articles This project utilised the Mono framework Ct Language and Unity3D to allow more time to be given to code development and experiential learning and less time with respect to time costly development areas of code and debugging such as garbage collection a common predetermined feature in many newer OOP languages such as Java for example There is also the considerably lengthy process of instigating an environment for the game to display and complex handlers for controlling the graphics hardware devices and user inp
68. evel 0 0f audio loop false audio Play yield return new WaitForSeconds time TriggerZone cs using UnityEngine using System Collections lt summary gt Trigger zone Generic singleton class that purely sets a game objects active state upon collider being triggered lt summary gt public class TriggerZone MonoBehaviour f t public GameObject go public GameObject go2 public GameObject msgObject lt summary gt Start this instance lt summary gt void Start go gameObject SetActive false msgObject gameObject guiText enabled false J lt summary gt Raises the trigger enter event lt summary gt lt param name col Col assess s the current colliding objects tag and actions upon result lt param gt void OnTriggerEnter Collider col if col gameObject tag Player go gameObject SetActive true msgObject gameObject guiText enabled true GenericTriggerScript cs GWright 2013 using UnityEngine using System Collections using System Collections Generic lt summary gt Generic trigger script This script employs a list to hold gameobjects they are then set to false based on their renderer they must have a renderer atatched Based upon the evaluation of the colliding object they set the renderer to true or false Used to instantiate 3d text mesh renderers at are
69. following lt summary gt public Transform targe lt summary gt The distance in the x z plane to the target lt summary gt public float distance 10 0f lt summary gt the height we want the camera to be above the target lt summary gt public float height 5 0f lt summary gt The height damping lt summary gt public float heightDamping 2 0f lt summary gt The rotation damping lt summary gt public float rotationDamping 3 0f lt summary gt The target point lt summary gt private Vector3 targetP lt summary gt The target rotation lt summary gt private Quaternion t summary Late update find the target and set the rotation to turn toward do same for world height of transform aim this transforms look direction at the target transform dampen correctional positoning and rotation summary void LateUpdate if target return float wantedRotationAngle target eulerAngles y float wantedHeight target position y height float currentRotationAngle transform eulerAngles y float currentHeight transform position y currentRotationAngle Mathf LerpAngle currentRotationAngle wantedRotationAngle rotationDamping Time deltaTime Damp the rotation around the y axis currentHeight Mathf Lerp currentHeight wantedHeight heightDamping Time deltaTime Damp the height var curren
70. gamma GUI HorizontalSlider new Rect Screen width 3 Screen height 2 130 Screen width Screen width 2 40 gamma 0 1 0f fog adjust slider GUI Label new Rect Screen width 2 Screen height 2 135 200 40 Fog Distance styleOfChoice fogDistance GUI HorizontalSlider new Rect Screen width 3 Screen height 2 180 Screen width Screen width 2 40 fogDistance 0 0 03f 1 J summary Controls menu to show user inputs on the screen lt summary gt private void A Color check it Debug Controls menu if GUI new Rect Screen 2 20 Screen 40 Screen 40 Return To Main 0 this GUI new Rect Screen 2 275 0 550 control scheme GUI new Rect 10 52 540 40 Move or Left Analogue ThumbStick i GUI new Rect 10 152 540 49 Move Backward n KEY n or Left Analogue ThumbStick GUI new Rect 10 252 540 40 Move or Left Analogue ThumbStick 6 new Rect 136 352 546 49 Move KEY n or Left Analogue ThumbStick GUI new Rect 10 452 540 40 Look Mouse n ThumbStick GUI new Rect 10 552 540 40 Pause KeyBoard Pin START button GUI lt summary gt Exit menu exit menu asks if sure then presents a further AFter confirmation application exits lt summary gt confirmation GUI private void ra Color Debug exit menu if GUI new Rect Screen 2 Screen 2 Screen 40 Cl
71. gital image and art editing on computer Adobe After Effects CS6 Potential for movie editing Adobe Soundbooth CS5 amp FL Studio DAW Audio mixing and editing 3 6 1 Game Sequences Unity Pro developement The initial hand drawn story board for the introduction movie can be found at the rear of the project under Appendix E 3 6 2 Composite list of Scene Artwork and Models created Player FPS Torch Kitty s Ghost Kitty s Bones Kitty s Grave Houndtor Rock Scene Kitty s Crossroads Hound of the Baskervilles Al CubeMaps Particles 4 Fully Developed Game Code 4 1 Coded structure 4 1 1 Main Game Structure The complete code for the class can be located at the back of this assignment under Appendix D entitled 4 2 Coded Base classes and Interfaces 4 2 1 The complete code for the class can be located at the back of this assignment under Appendix D entitled 4 2 2 The complete code for the class can be located at the back of this assignment under Appendix D entitled 4 2 3 The complete code for the class can be located at the back of this assignment under Appendix D entitled 4 2 4 The complete code for the class can be located at the back of this assignment under Appendix D entitled 4 2 4 The complete code for the class can be located at the back of this assignment under Appendix D entitled 4 3 Coded engine classes if any 4 3 1 The complete code for the component class can be located at the back of this assignment under
72. hall be utilized albeit without the team aspect but rather where testing feedback is involved through the focus group setup to undertake critique of the final game and its interim deliverable beta releases for testing The below diagram is offered up to the reader to assist in visualization of the processes in Scrum and that also helps to see scrum as the fast paced and decisive development method it is G Wright 2013 There is much more to Scrum and as can be seen it is a method in its own right but fullest use of the methodology could be seen better described in a scenario involving a development team numbering greater than one To conclude the use of both XP and Scrum items have been listed below and which can be seen to eclectically pluck elements from each methodology to suit the needs of the development As such the constraints that denote those aspects are as follows Single entity developer team with only feedback encountered from the focus group at the high level Single entity design team for documentation of the system with only feedback via the focus group at the high level This has denoted the aspects which must be taken from both paradigms and are as follows SCRUM Sprint planning the team meets with the product owner to choose a set of work to deliver during a sprint Daily scrum the team meets each day to share struggles and progress Sprint reviews the team demonstrates to the product owner what it has completed d
73. here makes game unhappy vars to add sidestep functionality later on if needed public bool canRunSidestep true public float runSidestepSpeed 12 0f remember the touches for future dev public bool isTouchEnabled false unused as yet private bool grounded false private Vector3 slideDir private Vector3 velocity private Vector3 velocityChange private Vector3 targetVelocity establish before game script is loaded that lt summary gt Awake this instance lt summary gt void Awake our rotation is set to our z forward direction upon creation rigidbody freezeRotation true tell rigidbody to ignore game based gravity calculations essential to a character controller rigidbody useGravity false why because we will use forces to push the player object and this will include the Y axis relative up and down in the world lt summary gt Fixed the update lt summary gt void FixedUpdate if grounded true Calculate how fast to move based on inspector refined values targetVelocity new Vector3 Input GetAxis Horizontal 0 Input GetAxis Vertical targetVelocity transform TransformDirection targetVelocity targetVelocity walkSpeed Apply a force that attempts to reach our target velocity velocity rigidbody velocity velocityChange targetVelocity velocity velocityChange x Mathf Clamp velocityChange x maxVelocityChang
74. how the game UI will appear during play 2 5 Game Assets Experimental and in game placement models Please review the current grey box prototype that accompanies this first report for evidence of modelling assets and application of them into the Unity environment A full assets list will be delivered in the final report of this project with preliminary assets delivered by the second instalment of this project report 2 6 Prototype Grey Box amp Experimental Environment 1 Typical image overview of the game level environment representative not actual due to no created terrain models for realism of environment at this stage 3 Draft outline of the report This is likely to follow the development approach used there is more information further on in the Guide as to report structure 3 1 Use Cases The below use case identifies the system user and developer along with their relationship to the system The use case below identifies user interactions with the system The below use case identifies the general interactions from the user which move forward to create the set of requirements to be met by the system The below use case identifies the interaction between the user and game at the time of discovering a clue This has been emplaced to demonstrate at the high level a mechanics requirement of the system by the user in order to deliver an in game experience The example is of finding a clue during exploration which signifies
75. human readable approach to Quaternions Most notably Quaternions are also favoured due to their ability to avoid Gimbal lock the loss of one degree of freedom in 3D space caused by two of the three 3D available gimbals an imaginary ring of rotation around 3 axes fall into parallel forcing a rotation to lock into a degraded 2D space rotation rather than the required 3D Using Euler Angles this issue is counteracted by the addition of a fourth gimbal additional outer ring and continually angled at a 90 degree offset alignment to the centralised gimbal Without this additional fourth gimbal Euler Angles present themselves as flawed to correctly define rotations in 3D space but can be found as important in the definition process of a game coordinate system in a 3D space Why are Quaternions important and correct for 3 dimensional space rotations Mathematically they describe a rotation in a single pass by specification of the angle in radians and the normalized axis of its vector to turn on This is 2 times less complex than the Euler solution which requires three successive descriptions based on each gimbal to make the same rotation A Quaternion rotation is stored mathematically as a tuple ordered list of elements and computationally these are stored as Matrices Vectors or Arrays In terms of computing and Unity Quaternions can be used to operate on a bunch of 4X4 matrix vector coordinate data values describing each gimbal s posi
76. ick to Exit Game 1 true if nd Color GUI new Rect Screen 2 Screen 50 Screen 40 SURE if GUI new Rect Screen 2 Screen 11 Screen 40 Yes 5 Application options button clicked switch to new menu if GUI new Rect Screen Screen 170 Screen 40 Mo this 670 CONTROLS Forward n W ARROW UP KEY n S ARROW DOWN Left n A ARROW_LEFT KEY n Right n D ARROW_RIGHT or Right Analogue or Controller 2 2 2 be GUIHoverControls using UnityEngine using System Collections lt summary gt GUI hover controls Forces an audio source to the instance plays an audio object on mouse up changes colour on mouse over and exit loads or plays based on textmesh being clicked on the screen lt summary gt RequireComponent typeof AudioSource public class GUIHoverControls MonoBehaviour public int levelToLoad public AudioClip narrative public AudioClip beep public bool isQuitButton false public float wait 5 0f public Material mati public Material mat2 public Material mat3 public Material fadedOutMat public TextMesh txtMesh Use this for initialization private bool isClicked false lt summary gt Raises the mouse over event lt summary gt void OnMouseOver f L change the material when hovering over ChangeColor mat2 if leftmouse butto
77. ields in a struct the following code would be invalid and an exception would be thrown at compile time struct AStruct public int x 20 public int y 20 The below code shows the correct method by which to declare instantiate and initialization of a struct in C struct AStruct public int x public int y Inside public static void main AStruct myStruct new AStruct myStruct x 20 myStruct y 20 What can be concluded from the above code examples is that C differentiates structs from classes by type definition thusly CH class reference type CH struct value type This simply equates to meaning structs can be objects that conform to behavior similar to built in types like double int long etc So to conclude this difference C passes reference to a struct when it is used in some method the same as C classes and CH passes a literal copy of the struct when used in some method and leaves referencing to be used for classes This is achieved by the change of approach when its new operator is called by allocating to the heap and waiting for instantiation to create space for it on the stack C yields performance gains due to this as one can work directly with the struct through its instance instead of by reference to it meaning one can pass actual values instead of a reference to them Java is another predominant influence to C by means of its similarity in structural and OO coding paradigms the f
78. ines and some of these will be recorded in the appendices section of this report relating to the later section and which records the game development project 2 2 3 3d Modelling Tools The following modelling tools are under continual evaluation to aquire the basic skills required to operate them effectively The below listed programs were found to require in depth practices and understanding to achieve any respectable modelling results Autodesk 3DS Max 2013 This software covets all aspects of 3D model creation but has the highest complexity due to how much is incorporated into one all encompassing program Maya 2013 This software is the game development refined version of its bigger bolder sibling 3DS Max It is used industry wide to create professional and optimized character and environemtn models MudBox 2013 This tool is for the unitiated user and offers some very important but basic elements required to build a 3D model including a 3D paint aspect where model painting in the application provides automatically UV mapping on export simplifying one of the early hurdles met in 3D model development for the prototype development MotionBuilder 2013 This tool offers the user the ability alongside other plugins like Brekel for Kinect to attempt rudimentary motion capture MoCap Brekel is an open source implementation that access the Kinect hardware and utilises data from the camera and sensors to record the positio
79. ironment There is always much to learn from this sandbox environment and as such continual aggregation of knowledge is constantly being acquired at every session This has been complimented by initial user training gained through concurrent modules to the course overall under the module titles AINT304 and AINT 306 it has been possible to explore further intricacies on offer from the Unity development environment and a chance to develop some coded mechanisms that will be utilised by the game product s final version 2 3 Development Progress using stated 3D modelling tools 3D modelling has been found as a difficult process to undertake due to the nuance of understanding the complex UI these software packages often present With this in mind the software package Blender has been used to effect basic models without textures normal or UV mapping applied The modelling software by Google SketchUp will be used to create the terrain environment but is due for developments to be undertaken in this over the coming December month alongside othe deliverables that will be evidenced in the final project report 2 4 UI screens Below are the initial Ul screens hand drawn and which formulate the main UI elements in game With the UI being a hand drawn element at this stage there is no evidence of transference into the grey box environment as yet though this is set for instigation starting approximately in the last two weeks of December Subject to c
80. iseX ClockWiseX AntiClockWiseZ ClockWiseZ AntiClockWiseMix ClockWiseMix script based cache to operate on public AxisRotationChoice axisRotationChoice private AxisRotationChoice axisRotChoice lt summary gt Start this instance sets the private cache to equal the enumeration choice lt summary gt void Start 1 axisRotChoice axisRotationChoice cache for inner operations 1 lt summary gt Update this instance By selection in the inspector through the enumeration this script just simplifies the process of getting the right rotation on an object lt summary gt void Update cache the public enum to the private enum instance for safe operations axisRotChoice axisRotationChoice switch axisRotChoice enumerator action based on inspector selected choice changes are updated at runtime too for editor debugging case AxisRotationChoice AntiClockWiseY transform Rotate Vector3 up Time deltaTime chosenSpeed rotate anticlockwise on Y break case AxisRotationChoice ClockWiseY transform Rotate Vector3 down Time deltaTime chosenSpeed rotate clockwise on Y break case AxisRotationChoice AntiClockWiseX transform Rotate Vector3 left Time deltaTime chosenSpeed rotate anticlockwise on X break case AxisRotationChoice ClockWiseX transform Rotate Vector3 right Time deltaTime chosenSpeed rotate clockwise on
81. its Test unit until working As a developer need to establish interactions between Al and player Conformance Implement and refine target detection for all interactive Al elements in game Test unit until working Beta release 1 1 Final release 3 4 Planned Iterations testing Alpha release 1 0 Main Iteration 1 Alpha release 1 1 Main Iteration 2 Beta release 1 0 Main Iteration 3 Final release 1 0 Main Iteration 4 Iteration delivery date 14 02 2013 21 02 2013 15 03 2013 11 05 2013 Responsibility Dev User Dev User Dev User Dev User Test to be completed Test structure Test Controls amp Intial model testing Evaluate textures Models Code Test Controls amp Gameplay and textures 3 5 Final Test Table 3 5 2 Final Developer Approval Tests 3 5 3 Final User Approval Tests 3 5 UI Design 3 5 1 Start Screen UI As can be seen in the image above the UI controls are specified for the user to familiarize themselves with and by which denotes how the user interfaces with the game at the start screen 3 5 2 In Game UI Below demonstrates the in game UI as seen by the user 3 5 3 Game over UI 3 6 Elements of Graphical Design The introduction movie to the game was created with a composited mix of tools of which are briefly discussed and have been listed below Adobe Photoshop CS5 All Artwork amp art editing hand drawn scans and digital Adobe Photoshop is viewed as a forefront industry standard software for di
82. iven functional generic reflective Typing disciplines Static Dynamic Strong Type safe Nominative Partially inferred Platform 1 Common language Infrastructure CLI Platform 2 Common Intermediate Language CIL Runtime Common Language Runtime CLR Executable code and runtime environment core of the Microsoft NET framework second platform neutral language that maintains compatibility to NET Compiles CIL to machine readable code 10010010 Influential languages C Java Eiffel Modula 3 Object Pascal Licenses CLR is proprietary for Windows A cross platform compiler known as Mono has a dual GPLv3 and MIT X11 license with the libraries conforming to LGPLv2 Dot GNU meaning GPL amp LGPLv2 together These licenses are beyond the scope of the project and as such will not be discussed further but links to their respective specifications can be found in the bibliography section of this document The information above can be found in an official capacity at the Microsoft website entitled CH Language Specification Microsoft 2012 and as previously stated this list in not exhaustive For the latest information regarding the specification one can find the URL located in the Works cited section at the back of this assignment 2 1 1 CH using Directives Statements which can be found at the very top of any C class are known as using directives The code diagram bel
83. l canPlay true lt summary gt Update this instance assigns item controller item count to items and evaluates it against the current audio slot in the array then plays the atching element lt summary gt void Update item ItemController itemCount if canPlay 88 item prevItem PlayCurrentClip summary sets the current clip lt summary gt private void PlayCurrentClip 1 if item gt audioClip Length make sure your index isn t longer than the array item audioClip Length 1 else if item lt 0 canPlay false return if the item was already played or the player is currently playing or the audioclip hasnt been set exit the function and do not execute any following code if item prevItem audioClip item null return StartCoroutine PlaySound summary Play the sound lt summary gt returns The current audio clip is played until finished the co routine then returns the play state to true lt returns gt private IEnumerator PlaySound canPlay false audio clip audioClip item audio Play previtem item yield return new WaitForSeconds 3 0f canPlay true Scroller2 cs using UnityEngine using System Collections lt summary gt Scroller2 This is an improved version of a previous script built to scroll the text as a gui element
84. local environment but with a task at hand per environment to encourage exploration investigation of the game s offerings 1 2 9 T E L O S feasibility Technical With respect to technical expertise required to deliver the product as a prototype built in Unity3D sufficient knowledge has been obtained to instigate initial grey box testing this allows for fast experimentation and further familiarising one s self with the development environment for the game Through the further use of purchased literature online documentation and forum support technical capability as a feasibility measure is in place and developing alongside the project s progression Economic Cost Benefit Analysis Cost The cost of this project is solely time based but This does not mean it is any less accountable to analysis of feasibility As such time constraints have proven typically tight against the scheduled stages of the project timeline and adjustments had to be made to reconcile an achievable outcome These changes identified in the conclusion to this feasibility study have not affected the demonstrable ability of the final prototype rather only affected the opportunity to develop the game outside of the Unity3D engine sandbox Another time constraint that should be considered a cost with respect to the projects requirement of input are concurrent projects that assist in the unbalancing of meeting the deadlines and cut off points this project has and
85. mary gt Item controller Gareth Wright 2013 uses static accessibles to obtain score this can thene be passed around but is dangerous it should really be placed into a delegate state system i think future dev point THIS IS A FUTURE DEVELOPMENT The class itself is designed to allow object activations to occur on gameobjects dependent on a clause being met In this case the script has been personlaised to deliver areas and bones current state updates lt summary gt public class ItemController MonoBehaviour lt summary gt The item count lt summary gt public static int itemCount 0 available to all system lt summary gt The area count lt summary gt public static int areaCount 0 available to all system lt summary gt The total number to collect lt summary gt public int totalNumberToCollect 9 lt summary gt The total areas to visit lt summary gt public int totalAreasToVisit 12 lt summary gt The story complete lt summary gt public bool storyComplete false completed bool lt summary gt The go for teleporter pads lt summary gt public GameObject go null lt summary gt The go2 lt summary gt public GameObject go2 null lt summary gt The final go lt summary gt public GameObject finalGo null lt summary gt The style lt summar
86. n about the locality through exploration clue finding and puzzle solving 1 2 4 Platform Nominated platform for delivery is Windows PC 1 2 5 Play mechanics User will control movement in game through a first person perspective that will utilise keyboard key presses to engage motion with mouse movement for looking around and mouse buttons to engage with the game puzzles clue interactions and navigating game texts UI elements will consist of the following Gameplay Screen viewing game environment Item obtainment indicator thumbnail icon shows on screen if obtained Text information boxes during game play and for guidance help text On screen compass for directional reference in game 1 2 6 Technologies Unity 3D Engine Integrated Development environment This robust sandbox environment poses an ideal prototyping and experimental development scenario It has richly populated community resources that can be called upon to speed up some initial processes that can be refined at a later stage for example Character controllers particle effects components gravity and physics management Sketch up 8 Community edition This is a 3D modelling package that has now become established enough to offer simpler model creation in sketch up with easy exportation to other 3D modelling software like 3dsMax and Maya by Autodesk or the open source software Blender Autodesk 3DS Max Maya amp Soft Image The above 3D modelling soft
87. n targetRotation lt summary gt Update this instance sets a timestamp per cycle assigns the vector positon to the current bezier way point position rotates to look at transform assigns current transform position to the next bezier point position Using optimized LookRotation instead of heavy LookAt method lt summary gt void Update J t float currentTime Time time SecondsForFullLoop Vector3 newPosition bezier GetPointAtTime currentTime SecondsForFullLoop targetPoint new Vector3 newPosition x newPosition y newPosition z transform position 0 1f targetRotation Quaternion LookRotation targetPoint Vector3 up transform rotation Quaternion Slerp transform rotation targetRotation transform position newPosition lt summary gt Nexts the waypoint lt summary gt lt returns gt The waypoint lt returns gt private Vector3 NextWaypoint 1 if currentWaypoint 1 gt waypoints Length 1 return waypoints CurrentPosition j else return waypoints currentWaypoint 1 CurrentPosition lt summary gt Raises the draw gizmos selected event lt summary gt void OnDrawGizmosSelected 1 DrawGizmoStuff lt summary gt Draws the gizmo stuff This is in a separate method because the waypoints themselves will also call it when selected this is an editor extensio
88. n be offset with coords lt summary gt public class TriggerObject MonoBehaviour lt summary gt The object to change lt summary gt public GameObject objectToChange lt summary gt The original material lt summary gt public Material originalMaterial lt summary gt The change to material lt summary gt public Material changeToMaterial lt summary gt The trigger field is lt summary gt public bool triggerFieldIs false lt summary gt The style lt summary gt public GUIStyle style lt summary gt lt summary gt public List lt string gt content lt summary gt The distance lt summary gt public int distance 1 lt summary gt The coords lt summary gt public List lt Vector2 gt coords lt summary gt The go lt summary gt private GameObject go lt summary gt Start this instance sets current instance object to the changed object sets renderer on new object to equal a transparent material lt summary gt void Start go objectToChange go renderer material originalMaterial lt summary gt Raises the trigger enter event lt summary gt lt param name col Col lt param gt void OnTriggerEnter Collider col if col gameObject tag Player triggerFieldIs true t
89. n brief at the beginning of this document under the section heading 1 Project Proposal Below follows a definitive list of methodologies that the project aims to abide by in order to deliver a complete document and prototype Agile Method Lean Lean sensei This paradigm offers a good ability to produce relevant documentation and emphasis on iterative prototyping and sufficient room for change during development if required Documentation UML User Stories Class Diagrams and Relations Sequence and Action diagrams to depict the system at the high level for non technical audiences to gain an understanding of the product at the design level Scrum Will be used to define sprint time constraints and deliverables during development and testing stages XP development documentation Comprehensive code commenting that depicts the system from the technical perspective Attempts to produce high levels of English explanation in the code may help to translate any technical aspects to those under the non technical banner with an interest in the semantic functionality of the system Personal eXtreme Programming PeP will be the main paradigm used to code the system using aspects of TDD where system elements require it This programming conformance is well suited to singular entity developments where both design and development can be conjoined by code comments for program documentation and light system designs using user stories and UML diagr
90. n cllicked if Input GetMouseButtonUp 1 change mat to signify click occurence ChangeColor mat3 if this is a wuit button if isQuitButton 111 audio clip clickBeep audio PlayOneShot beep exit game Application Quit else this is a button to load a level t Debug Log loading level in 5 secs specifics hack to check if button is start game to allow button audio to yield before starting the level if txtMesh text Hound Tor GUI Label new Rect Screen width 2 Screen height 3 100 40 Click to for Intro isClicked true Debug Log isClicked StartCoroutine StartIntroTalk else if txtMesh text Play gamE f isClicked true Debug Log isClicked StartCoroutine LoadALevel else we checked and it wasnt the start button S t isClicked false Debug Log isClicked StartCoroutine LoadChosenLevel lt summary gt Raises the mouse exit event when the mouse exits the textmesh s collision area lt summary gt void OnMouseExit return colour to normal white faded alpha ChangeColor mat1 Y J lt summary gt Changes the color change colour method taking a material in as the argument lt summary gt lt param name mat gt Mat lt param gt lt summary gt Changes the color lt summary gt param name mat gt
91. n so the camera route can be placed visually lt summary gt public void DrawGizmoStuff 1 Component rawArrayGiz FlyToNextWaypoint waypointsGiz rawArrayGiz transform parent GetComponentsInChildren typeof FlyToNextWaypoint waypointsGiz new FlyToNextWaypoint rawArrayGiz Length rawArrayGiz CopyTo waypointsGiz debug error log WaypointBezier waypointBezierGiz new WaypointBezier waypointsGiz for float t 0 t 1f t 0 001f Gizmos DrawIcon waypointBezierGiz GetPointAtTime t WaypointHeading tif j FlyToNextWaypoint cs using UnityEngine using System Collections lt summary gt Fly to next waypoint C documentation and reformatting to suit my needs better by G Wright 2013 Final Project Code lt summary gt public class FlyToNextWaypoint MonoBehaviour lt summary gt Gets the current position lt summary gt value The current position this transforms position lt value gt public Vector3 CurrentPosition get return transform position lt summary gt Raises the draw gizmos event lt summary gt void OnDrawGizmos Gizmos DrawIcon transform position Waypoint tif lt summary gt Raises the draw gizmos selected event keeps the visual refernce when selcting child objects of gameobject with flightcoordinator attached script lt summary gt void OnDrawGizmosSelected L
92. n the education sector and not only as a peripheral experience but as a potential avenue to further expose edugaming as a plausible alternative to more orthodox or traditional methods This development may prove to have a place as a prototype that could be redesigned into a tourism based application where focus could shift to tourism related information through virtual experience prior to a visitation and the model that houses this premise could prove to have extended reach beyond this However this is matter for research 3 Project Objectives 3 1 Initial Scope The project scope has itself a conformance to the lean principled methods of product development Simply put the scope may prove extensive and as such will be minimized to an interactive process by means of which can sufficiently demonstrate the potential the application might offer upon full completion The result will be a working prototype that can be utilised to demonstrate the concept at the very least proof of concept The below points go forward to specify the expected scope of each element in terms of deliverables at any given stage Design User stories amp High level designs ETC 6 December 2012 Development Code amp Testing Concurrent with above timeline and extending into March 2013 Full project delivery and documentation presentable DEADLINE 31 March 2013 There has been a web accessible timeline created and is available 9 http www timetoast com timelines initi
93. nal rotational and translational data from a calibration to a users actions 2 2 4 Bitmap Tools The following bitmap tools were utilised to establish certain file types and to manipulate image data to the required standard before applying them to any game elements requiring texturing Adobe Photoshop CS6 NVIDIA texture tools plugin for Photoshop normal bumpmapping Alien Skin Eye Candy plugin for Photoshop additional filter plugin to enhance images 2 3 Other research 2 3 1 Game Vectors All games use math of some degree or another and this project was found to be no different This was required so control could be established over game Al that could use the positional data to hunt for the player object during game time As such it was found that Vector3 a public struct located in the Unity framework is predominantly used in game development to establish information regarding the x y amp z coordinate positions at any time over a games loop and could be retrieved to provide data useful for establishing positions and directions The Vector3 has common operations that stretch to other classes like the Quaternion or Matrix4X4 which are useful in Unity and general game development to rotate or transform vectors and points in 3D space Below is a code diagram showing the Vector 3 class declaration and initilization Declaration Vector3 myVector Initialization myVector new Vector3 1 1 1 Rectangles are also a
94. ndix E 60 Appendix F 61 Appendix G 62 Appendix H 66 Bibliography 68 Introduction This project was composited for the reader to pick up and become more familiar to the nuances of CH Unity 3D IDE game development and common aspects between the Mono amp NET Framework Component oriented programming and design techniques that conform to the Unity way of code construction and other general developments have been used to bring a prototype development from an idea to fruition The project consists of a system build in the forerunning sections and that covers analysis of the system research into the language and developmental aspects using C and Unity 3D System design with some use of UML conforming with agile development methodologies alongside elements commonly used in XP and Scrum practices The reader is invited to peruse the assignment and with the hope that what is covered within will increase a readers knowledgebase without any or much prior experience of Component Oriented Programming strongly typed language practices design principles and development using agile paradigms As such this project assumes no prerequisite understanding of games development by the reader and attempts to allay any discrepencies with this idea using images and annotated explanations wheres possible There are several technical aspects found in this document but care was taken to bring explanations to the high level using diagrammatic accompaniments wh
95. neShot changeClip camera backgroundColor Color grey check it Debug Log options menu if GUI Button new Rect Screen width 2 Screen height 2 Screen width 40 Return To Main styleOfChoice audio clip aClip 0 audio Play options button clicked switch to new menu this curDelegate MainMenu J if GUI Button new Rect Screen width 2 Screen height 2 130 Screen width 40 Settings styleOfChoice audio clip aClip 1 audio Play options button clicked switch to new menu this curDelegate SettingsMenu Y if GUI Button new Rect Screen width 2 Screen height 2 180 Screen width 40 Controls styleOfChoice audio clip aClip 1 audio Play options button clicked switch to new menu this curDelegate ControlsMenu lt summary gt Settings menu lt summary gt settings menu methods private void SettingsMenu camera backgroundColor Color cyan check it Debug Log Settings menu if GUI Button new Rect Screen width 2 Screen height 2 Screen width 40 Return To Main styleOfChoice audio clip aClip 0 audio Play this curDelegate MainMenu Y j gamma GUI HorizontalSlider new Rect Screen width 2 Screen height 2 50 Screen width Screen width 2 40 gamma adjust slider GUI Label new Rect Screen width 2 Screen height 2 85 200 40 Gamma styleOfChoice
96. novel method of educational digestion through game play The problem in hand could be surmised at best to be that education does not reach all learners equally and that opportunity to deliver pertinent historic content themed for engagement and enjoyment may also help to improve the retention of information by familiarisation to the experience along the way Scheduling The project schedule was found to have remained feasible and realistic against completion of the project overall At the time of writing the schedule has continued to demand time but has also offered moments of significant progress with respect to developing a grey box in a matter of weeks for the game idea whereas this had been scheduled to for late December at the earliest alongside class structures in place for adding code to the next iteration of prototype These have currently been superseded by the quick fashion in which Unity offers usable results 2 Demonstrable representations of the product 2 1 Initial Report Product deliverables outputs Deliverable Output Use Cases and initial Research Documentation See section2 sub section 2 5 Grey Box Experimental Environment in Unity3D See Attached Compiled Grey Box demonstrable Assets See attached Grey box demonstrable for current prototyped asset experimentations 2 2 Development progress using Unity3D Unity3D has many advantages first and foremost for this project it has proven invaluable as a testing and experimental env
97. o be good choice as a prototyping tool It is Unity 3D community Edition that will be used to Seek to develop and hone programming skills with C Seek to understand better the process of component oriented programming through Unity3D s environment Seek to develop and understand educational value in games and game playing which can be utilised as a key attribute in one s portfolio of ability Experience with using tangible real world elements mixed into a game environment images close representations of landscapes 2 4 Technologies available The following technologies will be used to progress the project with respect to both documentation and physical development UML to present the documentation of the system Trello Scrum boards to composite user stories and game ideas mind dump Unity3D For initial audio and game mechanics testing later leading to developing a working prototype of the game that includes environmental and puzzle solution finding interactivity Blogger Used to run a concurrent blog that attempts to less formally highlight the trials tribulations and success of the project in hand 2 5 Need for this type of development Though it is an opinion by the author of this document it is firmly held that there is good reason to adopt the integration of current available technologies into tools that promote edugaming for two reasons To further cement the premise that game based applications have a place i
98. onstrate key sequences that identify in game messaging between the users actions and the systems response Part 2 deliverable report covering full research and Gareth Wright 30076024 PROC303 Personal Project Acknowledgements Abstract Introduction Acknowledgements 2 Abstract 3 Introduction 7 1 Problem Definition 8 1 1 Purpose 8 1 2 Focus group9 1 2 1 Focus Group Members Background 9 1 2 2 Focus group conclusions 11 1 3 Project Scope 12 1 3 1 Game Feasibility study utilizing T E L O S 12 1 3 2 Outcomes 15 1 3 3 Deliverables 15 1 3 4 Roles Responsibilities 16 1 3 5 Boundaries 16 1 3 6 Contingencies 17 1 3 7 Project Gantt Chart 18 2 Research 19 2 1C 19 2 1 1 C using Directives 21 2 1 2 C using Statements 22 2 1 3 CH Namespaces 23 2 1 4 C syntax 23 2 1 5 C structure 24 2 1 6 CH Common Influences 25 2 1 7 Mono Framework 4 0 26 2 2 Unity 3D 27 2 2 1Unity API amp GUI 30 2 2 2 MonoDevelop 31 2 2 3 3d Modelling Tools 31 2 3 Other research 31 2 3 1 Game Vectors 31 2 3 2 Timing values 32 2 3 3 Game Components 32 2 3 4 Gamestates Level Management 32 2 3 5 Movie controls 32 2 3 5 Quaternions Vs Eulers 33 2 4 1 XP 34 2 4 2 SCRUM Research 36 2 5 Design Principles 37 2 5 1 Factory Design Pattern used with prefabs 37 2 5 2 Singelton Design Pattern used with objects 37 2 5 3 Other Design Pattern s used 37 3 Project design38 3 1 UML Documentation 38 3 1 1 Package Requirement
99. ontingency due to the Christmas holiday period Below offers the reader a set of hand drawn UI designs Start Screen UI The start screen Ul above shows the main user view of the game on start up The Ul mainmenu shal consist of a simple button to transfer to the Area selection screen Area Selection Screen UI The Area Selection Screen Ul above shows the typical layout and functional elements of the on screen interface The main body on the right hand side will hold a representative image that is used to denote the interests of that location The option buttons to the left hand side offer the user succinct choices of exploratory destination This screen will require a UI cursor element to assist the user in making a choice of destination In Game UI The above image demonstrates the main user interface in game The in game interface will aim for minimal screen interference as much of the game play relies on reading texts and listening to audio where applicable The sign identifying the Tor or in the UI design for example Jays Grave will be in the form of an icon decisions over textual or image identifiers as icons are still under investigation due to the icons themselves being of less importance than the mechanics that will drive them ergo icon mechanisms are the current concentration where the UI is concerned as they should prove a large part in the navigation of the game area The below in game Grey box image offers the reader insight as to
100. ow should help to assist the reader in identification of these in any CH class A using directive has two main uses and these are briefly discussed below 1 Allowance of type qualification through use of its namespace allowing shorter access code o In the above screenshot one can ascertain there to be a using directive stating using System Text this using directive allows one to code a simple output to the console thusly CH Console WriteLine Hello Unity 3D alternative Debug Log Hello By removing the System Text directive one would be forced to use System Console WriteLine Hello Instantly lengthening the affair of producing a simple output statement Factor this out to larger scoped programs for example a game and one could agree the use of directives to bring namespaces into scope that contain useful reduction practices to produce code exemplars the C language as a tool for spending more time coding and less time typing 2 Alias creation for namespaces and types known as a using alias directive The below code snippet taken from the Microsoft MSDN website on C has been used to example the use of alias directives inside the languages structure namespace PC i Define an alias for the nested namespace using Project PC MyCompany Project class A void M Use the alias Project MyClass mc new Project MyClass namespace MyCompany namespace Project public clas
101. pendencies The main class dependency diagram for the game development can be found in sub section 3 1 7 of this current section 3 1 5 Class diagram Rich Diagram of component classes and their linkages 3 1 6 Class Dependencies diagram Diagram of dependant classes and any linkages 3 1 7 Object model dependencies Diagram of object dependencies and any linkages 3 1 8 Use cases Use cases describing system needs 3 1 9 Sequences Game screen sequence diagram Move player position sequence diagram Player fire press sequence diagram Collisions player amp projectile 3 1 10 XP documentation Using the XP practice one can find code annotation placed throughout the games different classes that conform to the specification of XP to document the system in the code As such please see the fully commented code for all classes at the rear of this assignment under Appendix A 3 2 Game logic method explanantions Using the XP practice one can find code annotation placed throughout the games different classes that conform to the XP style of code documentation As such please see the fully commented code that uses comments for method explanations at the rear of this assignment under Appendix A 3 3 Release Planning 3 3 1 Release Plan amp User stories Please refer to the timeline located in Sub section 1 3 7 of Section 1 of which pertains to Gantt chart derived release planning with respect to time constraints The following release
102. pon the solid standards driven NET Framework and contains methods that are commonly created in game development An epitome of this would identify itself in something like the loop scenario which a developer must usually template prior to building a game This loop moves forward to become an essential part of any game by making up what is known as the game loop The game loop in Unitycan be accessed in the Update function which runs every game frame or the FixedUpdate function which runs every physics based game frame In terms of development using pure C one would find the need to import C functions that could take advantage of low level speed of access in order to create a game loop useful enough that it could update in time to the speed of occurrences provided already in Unity s Engine This would be carried out through accessing timing information by importing ac struct into C and using it to access changing values and pass them to C to make a fast loop Below are the two methods automatically generated upon the creation of the project solution and which allows for the programmer to instantly start coding into a timed updatable loop This is just a part of the game loop Unity has and below is a quick run down of the execution order of this loop as laid out by Untiy Technologies Load First Scene use Awake Called prior to start methods but post prefab instantiation cannot be called until a game object is made active or a scri
103. pted function is executed on a game object OnEnable called on active objects to instantiate them prior to loading a scene level Before the first frame update use Start If enabled this is called before first frame update In between frames use OnApplicationPause Called at the end of a frame but dependant on a game pause action being executed first Update use FixedUpdate Can be called multiple times per frame allows physics calculations to updated immediately Update Main Update loop called once per frame LateUpdate Called once per frame after Update has completed 2 2 2 MonoDevelop The MonoDevelop IDE is an open source code editor that can be used to develop code alongside Unity 3D it is bundled in the Unity 3D download as the editor of choice for Unity Technologies The development editor also provides hinting and code completion steps similar to the likes of Microsoft Visual Studio s intellisense when writing code Key to MonoDevelop s success with respect to Unity is the integration of Unity s debugger to deal with any incorrect coding issues The Ultimate edition of Visual Studio 2010 provides the developer with tools to view the system build s architecture and create class object method namespace and other dependencies diagrams The IDE is optimized for agile iterative approach to program developments and comes with many extra tools to assist with sticking to time boxed and other sensitive deadl
104. ransform Rotate xRotCur yRotCur zRotCur if detachToWorld felse ve attach the freshly generated prefab to the object that is holding this script if needed justCreated transform parent transform timeCounter trigger administration p effectCountert 1 5 END OF GAME CODE Appendix E Other software undertaken to complete the project Blender 2 6 4 textures to the buildings Emme These were my first attempt at paras modleling a building set and as can be seen e w the resultant leveraged ux farmstead looks alot better inthe prototype Autodesk Software 2013 3DS Max CEM 4 8 8 4b ME These were the seperated bones that were difficult to seprate after following the tutorial to make them feces EE Maya 2013 n Options This was an attempt to model and texture the perched rock at Hound Tor in Maya 2013 Consequently this did not pass quality control though they did sort of take the shape MudBox 2013 8 Autodesk Mudbox 2013 864 Student Here the tree is Pine tree is modelled in MudBox and goes forward to also be the template for the sycamore tree this is still to be textured at this stage m FL Studio 10 ep Audio analyzer DRIN dub 22851 Bi Plaviist ER ber otr os Piano roll Abelton Live 8 KB ty hy Story UIS ees File Edit Create View
105. riggerFieldIs true Debug Log trigger area entered go renderer material changeToMaterial set current object renderer material lt summary gt Raises the trigger exit event lt summary gt lt param name col Col lt param gt void OnTriggerExit Collider col if col gameObject tag Player triggerFieldIs false set triggerFieldIs to false go renderer material originalMaterial Debug Log player left trigger area lt summary gt Raises the GU event lt summary gt void OnGUI if triggerFieldIs foreach string c in content foreach Vector2 v in coords GUI Box new Rect v x v y 0 0f 0 0f create new gui box TriggerKittyAudio cs using System Collections using UnityEngine lt summary gt Trigger kitty audio class style This class defines the operations performed on audio It is triggered by a change in the item count static cache for the total items collected For each increment in item an audio narrative will be triggered The class is set to check if audio isplaying and not to override with the next slot however it does not hold that audio in queue to play after the last had ended This is a future refinement and does not lt summary gt public class TriggerKittyAudio MonoBehaviour public AudioClip audioClip public int item private int prevItem 0 private boo
106. ro and Community at this juncture Mecanim Unity 4 s upgrade from version 3 5 brought with it the release of the Mechanim Animation System which greatly widened access to believable and real world animations that can be utilised inside of Unity and couples to an improved shuriken world collision system making the potential for AAA like animations possible to all with the caveat of relative experience The following extract is from the Official Unity website and aimed to offer the reader a quick peripheral understanding of the Mecanim animation system Mecanim Unity s uniquely powerful and flexible animation system brings your human and non human characters to life with incredibly natural and fluid motion Mecanim is a complete turnkey solution for animation in games It abolishes the need to spend expensive development efforts to integrate 3rd party middleware Mecanim is natively integrated with and optimized to run in the Unity Engine From the Editor you get all the tools and workflows needed to create and build muscle clips blend trees state machines and controllers directly in Unity Animate even vast armies with retargeting in Mecanim Unity s stability and power combined with new optimizations such as skinned mesh instancing ensure smooth runtime performance Unity Technologies 2013 Real time shadows introduced in Unity 4 Objects can cast shadows onto each other and onto parts of themselves self shadowing Pro Onl
107. rs throughout the project where necessary with respect to licensing restrictions attached to that code It is important to mention here that aside from the predetermined functions laid out upon IDE project creation in the Visual Studio 2010 environment all code will be bespoke and will not be taken from any code repositories via copy and paste techniques nor shall any artwork be used that has not been originally created due to one of the main focuses on the entire project is to become proficient in the application of code to produce a working product As such only real understanding can come from self development of a working knowledgebase of the codes structure Experientially this has been found to be better obtained through practice rather than through pasting other authors source code only to find it can take as long as writing it originally to iron out the problems that arise from implementation it into one s own code 1 3 1 4 Organizational feasibility With respect to organizational feasibility this project is not undertaken for an organization or pertinent business client to adopt into any current system There will be scope for further research into this aspect of feasibility at a later opportunity in the project when the final prototype is released for scrutinization on the web post project hand in date This system is not a system that is built to solve a businesses problem but was more designed to present a novel method of educational dige
108. rth topological data overlay plugin and imported into MICRODEM a freeware DEM file software package The above image was the result of using the USGS plugin which overlays heightbased colouring denoting darker colours showing lower regions and light colours representing the higher regions The above image helps to identify the issue raised in this progress against plan As can be seen the visual data extracted from the above result did not present respective data that could be used to develop a detailed heightmap of Houndtor from mainly due to the 25KM zoom in restraint that Google operates Houndtor is the small green icon in the center of the map Further to this the resultant port into MICRODEM resulted in the below image which was also too vague to establish correct heightmap data from To resolve the issue a different approach was undertaken and the following image demonstrates the heightmapping result of using the original birdseye image created by utilising the NVIDIA tools for normalising alongside techniques in Photoshop to create the normal map then using that as the displacement data set to port into 3DS Max The above image and the image overleaf demonstrate the results of the displacement mapping techniques used ona plane visualised into 3D data The below image is used to demonstrate the first satisfactory result after being brough into Unity3D and converted to a terrain through script which takes object vertex data and applys i
109. ry gt Update this instance conditonals to assess if itemCount or areaCount is achieved allowing gameobject to be set to active if conditional met lt summary gt void test if Input GetKeyDown KeyCode conditionals if not equal to specified total if lt set child go to false false false else set child go to false true true Color new Color 5f 9 5 0 5f 0 5f if not equal to specified toral if int lt if E l umbe amp amp areaC l set child go to false Set false else set child go to false true end update summary Raises the GUI event reassess validity of item and area counts concerning GUI visuals If achieved throw a mssage to the screen By adding 1 to each respective item the gui can be enabled based on this condition summary void new Rect Screen Sereen h Screen h Screen 201 57 new Rect Screen 198 Screen ht Screen 201 57 string to display in GUI box string item t Total Bones string t Total Areas Visited string 5 t Bones To collect tal ur string get Areas To collect 1 lt umbe tyle font material color Color white if itemCount gt alNumberToCollec t1 Well Done nYou Collected all emc bones n Return them to Kitty Jay s Grave nIf you are ready
110. s Completed story current audio clip Check item count Coroutine Audio Play if itemCount gt audio length Application Quit Display view Add selection listeners for buttons Enter Main Game Update to main game Application Quit player Grounded Return player position to Horizontal Vertical axis Validate position is grounded Redraw translated position Not grounded e Appendix D XP Documented Game Code SmoothCamFollow cs using UnityEng using System Collections lt summary gt Smooth cam follow Converted by Gruffy Gareth Wright 2013 from the Unity Scripts SmoothFollow js script Rewritten in Csharp to conform to the project s CSharp only program code rule This camera smoothes out rotation around the y axis and height Horizontal Distance to the target is always fixed There are many different ways to smooth the rotation but doing it this way gives you a lot of control over how the camera behaves For every of those smoothed values we calculate the wanted value and the current value Then we smooth it using the Lerp function Then we apply the smoothed values to the transform s position summary public class SmoothCamFollow MonoBehaviour summary The target we are
111. s 38 3 1 2 Package diagram 38 3 1 2 Class Requirements 39 3 1 3 Class diagram 39 3 1 4 Class dependencies 39 3 1 5 Class diagram Rich40 3 1 6 Class Dependencies diagram 41 3 1 7 Object model dependencies 41 3 1 8 Use case 42 3 1 9 Sequences 43 3 1 10 XP documentation 47 3 2 Game logic method explanantions 47 3 3 Release Planning 47 3 3 1 Release Plan User stories 47 3 4 Planned Iterations testing 48 3 5 Final Test Table 48 3 5 2 Final Developer Approval Tests 48 3 5 3 Final User Approval Tests 49 3 5 Ul Design 50 3 5 1 Start Screen UI 50 3 5 2 In Game UI 50 3 5 3 Game over UI 51 3 6 Elements of Graphical Design 52 3 6 1 Game Sequences Unity Pro developement 52 3 6 2 Composite list of Scene Artwork and Models created 53 4 Fully Developed Game Code 53 4 1 Coded structure 53 4 1 1 Main Game Structure 53 4 2 Coded Base classes and Interfaces 53 4 2 1 53 4 2 2 53 4 2 3 53 4 2 4 53 4 2 4 53 4 3 Coded engine classes if any 54 4 3 1 54 4 3 2 54 5 End User Documentation 54 5 1 Minimum Specifications 54 5 1 1 Windows PC 54 5 1 1 Android TBC 54 5 2 User Manual 54 5 2 1 Install Windows 54 5 2 2 Install Android TBC 54 6 Project Review 55 6 1 Critical Appraisal 55 6 2 Methodology Appraisal 56 7 Project Conclusions 56 7 2 Focus group Conclusion 56 7 2 What was achieved 56 7 3 Future developments 56 Appendix A 56 Appendix B 57 Appendix C 58 Appendix D 59 full code 59 Appe
112. s MyClass Microsoft 2012 As can be seen the alias directive can be delivered internally but This was found to produce no effect that which could result in a conclusion over whether accessing a namespace or type through an alias made any real difference in opposition to use 1 and this is concurred on the website Using alias directives Microsoft 2012 2 1 2 C using Statements The using statement is created to obtain one or multiple resources whereby the statement is executed and consequently ensures the resource is disposed of The resource using statement is composited of a class or struct designed to utilise the NET framework System directive known as IDisposable which is part of the managed code paradigm behind the C programming environment and ultimately Untiy development with C and Mono It uses a method Dispose to return indication that the resource used via access through the using statement is required no further As such the using statement can be viewed as read only in terms of importation It is also broken into a three part process defined by an acquisition a usage and a disposal stage Furthermore an important aspect to consider when undertaking the creation of a using statement is the try clause which demands a usage to be implicitly enclosed and the finally clause that disposes a resource as without one may find no exception to be thrown thusly nullifying the call to Dispose
113. sics objects to interact with the player object as a result of a physics calculation and as a physics based reaction rather than inacurately calculating this at incident overaall we can start to see why this is a better option as we are establishing the physics boundaries prior to runtime with rigidbody alone with char controller it happens in update unstable for physics lt summary gt using UnityEngine using System Collections important componenets to instance the object with minimum requirements RequireComponent typeof Rigidbody RequireComponent typeof CapsuleCollider lt summary gt Rb FP s_ gruffy lt summary gt public class RB_FPS_Gruffy MonoBehaviour public AudioClip audioClip public float walkSpeed 8 0f multiplier public float walkBackwardSpeed 4 0f public float sidestepSpeed 8 0f public float gravity 10 0f public float maxVelocityChange 10 0 public float inAirControl 0 1f public bool canJump true public float jumpHeight 2 0f public float slidingThreshold 0 6f public float slideMagnitudeConstraint 0 4f added for run set to Fire2 Change in Project Settings Input if different desired public bool canRun true public float runSpeed 14 0f negative values here makes game unhappy public float runBackwardSpeed 6 0f negative values here makes game unhappy var runSpeedChange 4 0 negative values
114. steryedugame blogspot co uk 5 Investigation The investigation is currently underway with processes and findings recorded in the final document write up 6 Feasibility The feasibility study will use the TELOS acronym to further define the project idea as plausible and achievable This type of documentation can be used to solidify expected outcomes and address issues like legality technical and scheduled feasibility of the product Below follows an initial Feasibility surrounding the project 6 1 Purpose of the game To provide a system that delivers an adventure investigation led experience by means of first person controlled environment themed on realistic localised areas of Dartmoor 6 2 Game scope This subject has been covered by section 3 entitled Project objectives but This will be further investigated as to the potential of the product being extrapolated from its original concept to factory out a model that can be applied to other historical mythical and legendary areas of the UK 6 3 Current deficiencies The system will be built from scratch using Unity3D CH and a compliment of 3D modelling tools to produce content and other game assets As such the system has no identifiable deficiencies to highlight due to it being a new development This simply means there is a lack of a system reference model an earlier version to identify current deficiencies With respect to the development and prototyping environment Unity3D 6 4
115. stion through interesting exploration game play The problem in hand could be surmised at best to be that education does not reach all learners equally and that opportunity to deliver pertinent history driven content themed for engagement and enjoyment may also help to improve the retention of information by familiarisation to the experience along the way Ultimately the game may or may not prove to deliver this element and will remain subjective until user testing has started 1 3 1 5 Schedule feasibility The project schedule was found to have remained feasible and realistic against completion of the project overall At the time of writing the schedule has continued to demand time but has also offered moments of significant progress with respect to developing a grey box in a matter of weeks for the game idea whereas this had been scheduled to for late December at the earliest alongside class structures in place for adding code to the next iteration of prototype These have currently been superseded by the quick fashion in which Unity offers usable results In order to control the timeline of development the project has utilised A Gantt chart to track phase deadlines These phases will be broken down into their composite parts and they have been tracked using the Gantt chart Critical path analysis was not used in this project as the path is being undertaken by a single entity and the Gantt chart has proven to be a sufficient indicator of time
116. t Vector3 private The target point a NextWaypoint 2 targetRotation Quaternion private The target rotation E OnDrawGizmos 2 waypoints FlyToNextWaypoir private e Start Y Update Name Type Modifier Summary Ga 1 ES gt Y OnDrawGi id ivat Raises the draw gi t 3 nDra a js e draw ia even 506 Behaviow gt Y OnDrawGizmosSelected void private Raises the draw gizmos selected event add method Properties 4 Properties oe CurrentPosition Vector3 public Gets the current position m CurrentPosition lt add property Methods z ba x Y OnDrawGizmos add field Y OnDrawGizmos WaypointBezier ES Name Type Modifier Summary Class 4 Methods WA Morotehaviou b FU BinomialCoefficient float private Finds the Binomials coefficient gt Y CheckWithinArray int private Checks the within array El Fields gt Y CreateBezierForPoint Vector private Creates the bezier for point gt Y DoBezierForNPoints Vector3 private finds the bezier for N points x vectonfisray gt Factorial int private Finds Factorial of specified n Methods qe ES ee if 59 oim ime ector public point at time EV gt amp WaypointBezier public Initializes a new instance of the see cref WaypointBezier gt class a CheckWithinArray add method Pig CreateBezierForPoint 4 Properties Y DoBezierForNPoints lt add property e Factorial 4 Fields e FallingPower 2 vec
117. t the final release stages to establish if expectations were met although the focus group will also be key during development to ensure expectations are en route to being met Are there any portability issues There are no real issue for portability aside from Unity3D requiring a pro license to actually release a full version of the development 10 different platforms are already supported in Unity3D for cross platform portability 1 3 1 2 Economic feasibility This section covers the questions relating to whether the project will hold some level of return perhaps through remuneration from the developed outcome of the project With respect to this the finished game which represents the outcome and goal of this project shall be marketed as a free to download software application game and will not extensively focus on monetary remuneration although this may be developed over the project s duration as an extended idea with respect to future developments and any updates for the product A cost benefit analysis on this project would be better analysed by a feasibility study over whether an end product can be obtained against the completion timeframe this can be demonstrated through viewing the Gantt chart which identifies critical timescales for completion during the various stages in development However there are items that must be obtained so that a final product may reach an audience outside of the focus group These are laid out as follows
118. t to a Unity Terrain The terrain reads the converted data as contextual heightmap values and applys this over a max spread of 65 536 effectively 64 000 vertices Terrain Textures Rock the rock texture was taken from a real image offset using Photoshop on both the x and y axes then using other internal Photoshop tools the image was refined clone stamped and blurred slighty to remove any seems in the image This resulted in the below image which was formatted for tiling when painting the terrain in Unity3D Grass The grass image taken alongside the rock image reference could not successfully be refined to produce a convinving grass texture The consequential result was to completely invent the grass texture by using the Render Clouds option under Filters tab in Photoshop This is not an exact science but using a combination of both Clouds Difference Clouds brightness curves Hue and saturation filters alongside the human eye The below image was the result to be used in this second prototype iteration NB Further attempts to use a real location texture of the grass and moor bracken will be made and this is a temporary solution to suffice for the time being 1 2 Focus group The focus group has already been established due to the time constraints of the project They were continually utilized for their end user consultative input and inspirational direction The members of the focus group consist of ten people selec
119. tRotation Quaternion Euler currentRotationAngle 0 Convert the angle into a rotation transform position target position Set the position of the camera on the x z plane to transform position currentRotation Vector3 forward distance distance meters behind the target transform position new Vector3 transform position x currentHeight transform position z Set the height of the camera transform LookAt target Always look at the target bad use of Unity in built heavy method LookAtTarget cs using UnityEngine using System Collections lt summary gt Look at target checks the gameobject s current transform position and rotates toward face the target targetPoint lt summary gt public class LookAtTarget MonoBehaviour lt summary gt The target is an empty gameobject behind the player transform as onintersection with a collider the LookAt function has issues lt summary gt public GameObject target lt summary gt The instanc of itself lt summary gt private LookAtTarget inst lt summary gt The target point to look at lt summary gt private Vector3 targetPoint lt summary gt The target rotation to rotate toward lt summary gt summary The target rotation the new quaternion to rotate toward lt summary gt private Quaternion targetRotation lt summary gt
120. ted to bring diversity of character via age range and equalized numbers in terms of gender and are listed below as follows Andrew Cuffe 36 Dan Horsey 22 Oliver Rosier 15 James Wright 8 Jacquie Webb 34 Emily Jenkin 20 Kayleigh Wright 25 Jane Aisthorpe 39 1 2 1 Focus Group Members Background Andrew 35 Final Year Student CGD University of Plymouth Andrew has an extensive experience and knowledge in gaming since the age of 10 years old and represents the 31 35 age range in the focus group Andrew is a knowledgeable person with some experience in the games industry Dan Horsey 22 Final Year Student University of Plymouth Dan is a keen games player and enjoys using his phone to find new games He is an accomplished programmer and has a good overall repertoire of gaming under his belt since early childhood He represents the 21 25 age range in the focus group Oliver Rosier 15 Full Time GCSE Student South Dartmoor Community College Oliver is keen Xbox user and spends the predominant amount of his free time playing games Oliver can bring opinion from the younger demographic of potential users of the game He represents the 11 15 age range in the focus group James Wright 8 Primary school student Elmswell Primary School James loves all videogames and can bring a refreshing opinion over direction with respect to a potentially younger audience for the game he represents the 8 1
121. the entire projects scope at the latter end if required This contingency plan will take advantage of areas that are seated in the refinement phase of developmental stages with respect to number of available game locations task linearity storyline Al Artificial Intelligence thusly making a reduction in additional time spent on game logic in the process These aspects of the prototype must be embodied at the very beginning of the development and as such the game should not overly suffer with respect to its functionality or over the documentation of the project as these features must be present in order to provide a good foundation on which to lay a game premise As for the planning of a contingency strategy this is clearly marked in the Gantt chart denoting the overall project time scale There will be marked points distinguishable in black showing days clawed back through early completion that can be utilised in areas that may have fallen behind schedule The contingency allots one day to review current status prior to a point of no return so to speak to establish if the contingency needs to be put into action or overtly if any lagging areas in development can be recuperated and retargeted with respect to recuperated days during the earlier research and analysis stages 1 3 7 Project Gantt Chart The below diagram offers the timeline overview of the project according to the Gantt chart data recorded during the project lifetime Both Gantt
122. the pillars of Object Oriented Code and Design with respect to the Unity 3D Component Oriented way Next is the finalized list of required deliverables to complete the system as laid out after progressive discussions with the focus group Challening 3 Dimensional investigation exploration game Visually appealing graphical environemnts based on real landscapes and areas of Dartmoor challenge and reward elements intuitive game control system and Ul navigation Free to download with the possible opportunity to extend ad support to see revenue return on time invested if potential found 1 3 4 Roles Responsibilities The roles and responsibilities are split into internal and external sections and have been laid out below for the reader to view Internal Roles Responsibility Gareth Wright Project Manager Deliver finished project Gareth Wright Analyst Deliver analysis of requirements Gareth Wright Designer Deliver system design Gareth Wright Models amp Artwork Deliver game artwork Gareth Wright Audio Deliver game audio and sound effects Gareth Wright Developer Deliver small test passed game components Gareth Wright Tester Deliver testing feedback External Roles Focus group members User Requirements Deliver a final requirement from the system Focus group members Artwork amp Model critique Feedback pro s and con s of system design Focus group members Audio critique Focus group members Release critiq
123. the technical realm due to the calibre of some in the group for example where user interfaces with complex control systems that require game playing experience to be a prerequisite to playing a game She represents the 36 40 age range in the focus group 1 2 2 Focus group conclusions During the initial interview with the focus group a questionnaire was assembled to gain data regarding the types of game the focus group enjoyed playing This questionnaire alongside the collated results is located at the back section of this assignment under the title Appendix B Focus group meetings were upheld throughout the project in the form of meetings where minutes of the discussion were recorded with those that could attend and the minutes forwarded to those who could not These meetings proved significant to the direction of the development during the design and development stage particularly Alongside that they group proved invaluable for the test phase In Appendix C of this assignment one can find the meeting minutes that led to influences over the visual and logic design of the system 1 3 Project Scope 1 3 1 Game Feasibility study utilizing T E L O S A T E L O S study was used to establish whether aspects of the project and indeed the whole project is feasible enough to continue on to further subject research and design of the game This will go forward to compliment and populate the definition of requirements for the build 1 3 1 1 Technic
124. ther namespaces 2 1 4 C syntax In C statements are created to perform actions and composite these statements into methods a common artifact of Object Oriented Programming and can be found later discussed under the heading Common Influences A very common method found in C is the Main String args method which acts as a common initial interface that is read by the program class that filters through what is known as the Content Pipeline 2 1 5 C structure The structure of C has been predominantly influenced by its forfather languages namely C and Java later discussed under the sub section heading C Common Influences It takes the building of classes to create one or more files that composite a program s code makeup and can cater for use of no or multiple namespaces containing the common types identified in the above discussion regarding namespaces As such the below code should adequately assist the reader in identification of the C code structure using System using System Collections Generic using System Ling using System Text namespace TheLastHuman class class MyResearch struct struct ResearchStruct interface interface Reasearch delegate int myResearchDelegate nested namespace namespace NestedResarchNameSpace nested struct struct NestedNamespaceStruct main program class class ResearchMainClass static void main string args program code executed her
125. tional x y z amp w by complex number with x y and z denoting the imaginary position and w denoting the real normalized number part 2 4 Further research on Agile practices and methodology concerning XP and Scrum The practice of iterative development has been touched upon during the second year of the foundation degree and as such one chose to use a combination of XP and Scrum to document the system Typically these agile practices conform to iterative development and incite concentration to predominate the development and test stages whereby a deliverable small component of the game can be released per time boxed sprint XP conforms to practices used with TDD Test Driven Development whereby developers write components to pass tests and once passed is released to involved users focus feedback group or white boxers for use and anything missed though the development process should catch any issues prior to their receipt of any completed game component through the agile practice s efficacy ingrained through its process 2 4 1 XP XP is an agile method used to develop systems that concentrate on the documentation being encapsulated in the code This is predominantly for the method s key concentrator a practice known a pair programming Pair programming was not undertaken as the project was a self motivated and self reliant exercise meaning no other developer party was involved during the process at any stage Tho
126. to the capsule Add the MouseLook script to the capsule gt Set the mouse look to use LookX You want to only turn character but not tilt it Add FPSWalker script to the capsule Create a camera Make the camera a child of the capsule Reset it s transform Add a MouseLook script to the camera gt Set the mouse look to use LookY You want the camera to tilt up and down like a head The character already turns AddComponentMenu Camera Control Mouse Look public class MouseLook MonoBehaviour public enum RotationAxes 0 1 2 public RotationAxes RotationAxes public float 15 public float 15F public float 360F public float 360F public float 60F public float 60F float OF float OF Quaternion void if RotationAxes Read the mouse input axis Input Mouse X Input Mouse Y Quaternion Quaternion Vector3 Mathf Quaternion Quaternion Vector3 Mathf else if RotationAxes Input Mouse X Quaternion xQuaternion Quaternion AxisAngle Vector3 up Mathf Deg2Rad rotationX transform localRotation originalRotation xQuaternion else rotationY Input GetAxis Mouse Y sensitivityY rotationY ClampAngle rotationY minimumY maximumY Quaternion yQuaternion Quaternion AxisAngle Vector3 left Mathf Deg2Rad rotationY transform localRotation originalRotation yQuaternion give a dbug and build escape to cursor option gruffy2013 if Input Get
127. torArray Vector3 private GetPointAtTime WaypointBezier SmoothCamPoll Class MonoBehaviour Name Type Modifier Summary Fields b Y LateUpdate void private Late update z Y lt add method distance 4 Properties height P amp P lt add property heightDamping q 9 rotationDamping Y distance float public The distance in the x z plane to the target 0 mos Y height float public the height we want the camera to be above the target arg 9 heightDamping float public The height damping ES targetPoint Y rotationDamping float public The rotation damping ye targetRotation Y target Transform public The target are following E Methods a targetPoint Vector3 private The target point g targetRotation Quaternion private The target rotation E LateUpdate dE LookAtTarget A Name Type Modifier Summary Class 4 Methods MonoBehaviour b e Start void private Start this instance gt Y Update void private Update this instance O Fields 9 add method 4 Properties inst lt add property target 4 Fields targetPoint Y inst LookAtTarget private The instanc of itself at targetRotation Y target GameObject public The target is an empty gameobject behind the player E Methods g targetPoint Vector3 private The target point to look at 7 targetRotation Quaternion private The target rotation to rotate toward 2 Start lt add field gt Y Up
128. type in XNA that can be used to hold positional data that reflects the outline shape of a size specified quadrilateral These offer a developer another way by which to lock on to objects on the screen by passing the object position to the rectangle as a parameter and have them affected by manipulation of their respective bordering rectangle or used to detect collision of one rectangle and another or indeed one rectangle and a vector2 Global declaration Rectangle myRect Int x 50 int y 50 int width 512 int height 512 Initialization myRect new Rectangle x y width height 2 3 2 Timing values Update Fixed Update Time time Time deltaTime 2 3 3 Game Components GameObject 2 3 4 Gamestates Level Management The Unity Engine offers Gamestate management through it s GUI based Build Settings found in the File menu of the main program s window PC This gamestate management can be used to associate level numbers with scenes in the game The levels can be utilised via code to effect a level change during a key element in the game like completion of the current level the game examples different levels to explore with different objects to obtain 2 3 5 Movie controls Currently there are no movie elements in the prototype due to Unity 3D community edition not offering indie developers the ability to access the MovieTexture method Below offers the reader the method that will be invoked to It is with
129. ue testing 1 3 5 Boundaries The boundaries laid out below in a bullet list for the reader to identify them are as follows At the end of development the game will have only been ported to Windows and MAC based OS s alongside the Unity Webplayer but with Unity s safety net of cross platforms the scope to deliver is restricted only to the likes of Blackberry s RIM and insufficiently specced machines running the array of Unity supported platforms The project does not consider level editing for the user in the game The project development does not boast a professionally comparable game but rather a prototype dfelivering a proof of concept The project is based predominantly on the experiential gain of coding in a new environment and language using a deliverable product a game to maintain productive focus and as such will require further post degree to ensure conformances are met to deliver this to potential investors if possible 1 3 6 Contingencies There may be call for a reduction of game dynamics in order to complete the project on time The ideas tend to flow well when speaking in context of the possibilities one might achieve when creating a game and can grow to become an elaborate potentially unfeasible project with numerous bells whistles smoke and mirrors as part of the finished product It is the bells and whistles areas that will unfortunately suffer in the development timeframe leading to time saving reductions in
130. ugh this is not sound practice under the XP banner the practice of commenting the code to read the design was still put into practice to conform with the agile paradigm s specification So Whats in XP s engine Research has led to the conclusion below which is not a definitive explanation but sufficient enough that one may understand the practice and involvement a little clearer Firstly we must establish the classic steps in the XP process Requirements Analysis Specification Design and Architecture Coding Testing Documentation Maintenance The above points move forward to create the iterative systems development life cycle in XP Secondly we must establish how it differs from high ceremony heavily documented methodologies All requirements will not be known at the beginning Requirements will change Use tools to accommodate change as a natural process Do the simplest thing that could possibly work and refactor mercilessly Emphasize values and principles rather than the process high level abstraction http www xprogramming com xpmag whatisxp htm The above image reflects the practices of XP and makes clear the paradigm it offers with focuses aggregating in the design and development aspects of the method as opposed to some methodology like the waterfall method that produces great time costs at the analysis and design stage prior to building anything of worth to a system and reliance that the
131. uring the sprint Sprint retrospectives the team looks for ways to improve the product and the process XP Four principle activities Coding Testing Listening Designing XP Values Communication Simplicity Feedback Courage TDD UML This will be the modelling language used to describe the system at any design stages and is a common standard used in nearly all object oriented developments to allow high level users the project focus group to easily follow the system s architecture and processes 2 5 Design Pattern Principles to Apply to the build 2 5 1 Factory Design Pattern used with prefabs 2 5 2 Singelton Design Pattern used with objects 2 5 3 Other Design Pattern s used 3 Project design 3 1 UML Documentation 3 1 1 Package Requirements A skeletal infrastructure to hold a system in place that acts as a hub for interaction between a user and the system 3 1 2 Package diagram The package diagram can be used to describe a high level view of the entire domain through separated packages that relate to the stripped down specifics of the system s requirements Hear one can view packages in similarity with entities at this high a level of abstraction Below has been offered the system as a package diagram 3 1 2 Class Requirements Component oriented designed class requirements 3 1 3 Class diagram The main class diagram for the game development can be found in sub section 3 1 6 of this current section 3 1 4 Class de
132. useX Y sensitivity float public Bl Mousey lt add field gt Enum to signify mouse axis control FindMyGPS a Class MonoBehaviour Fields go Name Type Modifier Summary lastPos 4 Methods mylatitude Y Start void private Start this instance 4 o Update void private Update this instance ans add method 2 objWaming 2 9 playerPos 2 xPos J add property Pos 4 Fields m Y go GameObject public The go E Methods 2 lastPos Vector3 private The last position 9 Y mylatitude float public The mylatitude pa Start Y mylongitude float public The mylongitude g me myradius float public The myradius Y objWarning string private The object warning Y playerPos Vector3 public The player position 2 xPos float rivate The x position gv yPos float rivate The x position g y p p a zPos float private The x position Not yet fully implemented but in as a future development script These component connected class diagrams deal with player controls and the future GPS handler though this is working it is not fully implemented and is a future development for later release the concept was proved in game by discovery of geo caches in the area the find GPS script will be later used to employ an internal game compass to make finding them more interesting PauseEvent ES
133. ut throughout the game s duration These have all been contextually predefined when a project is undertaken using the Unity 3D IDE and the CH Mono framework As asummary of the above this project precludes to offer the reader a journey into the nuances of C and Unity 3D some modelling and texturing and attempts to produce the below as deliverables Story led 3D scenario game idea offering exploration puzzle element and textual information based on the local area and history Provide a wide demographic of players with an experience that is fun and engaging Rewarding story driven narrative Geographic replication of real Dartmoor environments Demonstrate a potential series led development idea through this prototype game 1 Problem Definition 1 1 Progress Against Plan pt 1 1 1 Project deviation summary During this interim stage it was found that some aspects of the project needed readdressing to find a palpable solution to producing realistic environments for use in Unity 3D The original solution was to use STRM geographical data to produce a heightmap data set that could be incorporated with a plane through displacement inside a 3D modelling program This proved to be of some success and the following image demonstrates the initial results using this method of approach The below birdseye view is of the area Houndtor The image overleaf has been offered to identify the heightmap data created from the USGS Google Ea
134. ware tools are part of a suite of professional standard tools used in industry Autodesk Inc 2012 Blender An open source community contributed 3D modelling software package popular amongst independent developers first and foremost because it is free to use but also due to its friendly nature and intuitive UI 1 2 7 Target Audience The target audience is aimed towards children and a wide range of interested parties looking to enjoy receiving factual information and local lore as part of an interactive exploration experience There is scope to extend the target to tourism based with this product with respect to identification of other target audiences 1 2 8 Key Feature Unique Selling Point The unique selling point of this fundamentally game is that the content is offered as historically correct and delivered through the mechanics of gameplay as an educational experience during and hopefully afterwards too user engagement Another Unique selling point is the localisation of the game environments which are based on real locations around Dartmoor This shall be achieved by obtaining maps via Google products and converting them through a process of different modelling software to a 3 dimensional terrain for use in the game The representation should deliver a good level of accuracy once completed true to the existing real life terrain of the locality The ability for the player to be relatively free during game play to explore the
135. xit E w ChangeColor FindMyGPS 3 FindMyGPS 4 FindMyGPs Start Update EndCreditsScript GenericTrigger System Overview CHR CHEAO CENEL CNEL CO CENE DEN The top set of dependencies are the custom scripts that apply operation to components in Unity 3D We can see here that almost everything in a Unity Game is derived from the System namespace adn usually pipelined through the Unity namespace m T DE DE CMS CMS T T T T D T ze 00 Ff DN 0 05 0 06 00 EN lt rm oe Appendix C Class Definitions and Diagrams Below follow the class definitions and diagrams showing class attributes and operations Name Type Modifier Summary ObiectStateCha A 4 Methods Class a9 State void private State the specified state MonoBehaviour add method 4 Properties Fields lt add property 4 Fields go go GameObject public Methods add field a State Name Type Modifier Summary 4 Met E gt OnTriggerEnter void private Raises the trigger enter event GenericTriggerScript E gt Y OnTriggerExit void private Raises the trigger exit event Class gt Y OnTriggerStay void private Raises the trigger stay event MonoBehaviour gt Y Start void private 9 add method Fields 4 Properties 9 alpha
136. y Flash and Linux native authoring Publish directly to flash or Linux OS Cross Platform Dynamic Fonts A single True Type font is all that is needed to work across Unity s platform delivery spectrum DirectX 11 support Deffered lighting and shader model 5 alongside parallel processing GPU processing HDR images Linear space gamma correction These edition have some distinct seperations with repsect to performance and access to some of the Unity Engine s capabilities mentioned above though these differences by no means hinder the development of a game s proof of concept with respect to prototyping the functional controllable and general graphical aspects The screeshot below has been used to assist the reader with visual identification of the general Unity Community Edition UI The following table overleaf was laid out to identify the main differences between Community and Pro editions of Unity 3D The table is not exhaustive as such but offers clarified differentiations between the two editions and identifies areas where Unity 3D Community Edition cannot be utilised to achieve some desired effect This further assisted to denote potential consideration for the game in it s early development stages prior to any move in to Unity Pro at the final stage iterations Is Supported Community Pro Supported platforms with DirectX 11 shader model 2 0 with DirectX 11 and supporting shader model 2 0 upwards Shader Mod
137. y may present alternative directions for player control mechanisms to be incorporated 2 2 Subject Matter for Research Games Research Myst franchise by Cyan Games Return to Mysterious Island franchise by MC2 France Microids The Adventure Company publishers of games such as Siberia Broken Sword 2 Mysterious Journey Aura Fate of the Ages formally a division of developers DreamCatcher Interactive who sold the company on to Nordic Games in 2011 according to Nordic Games Publishing AB 2012 Hardware Research Game controls and interaction options that may enhance or simplify the game play experience System requirements needed from users computer in order to ascertain minimum requirements specification Design and Development Research Research into best practices with respect to developing a game regarded as under the adventure game umbrella Research into applying educational techniques with games to present an experiential game play that potentially offer the user useful chunk of storable information that they may take with them after finishing play Other Research Potential to transfer game model into a business model by which the game itself need only change by location and the parent model staying the same 2 3 Desired Skills During the final year of the degree Unity has been undertaken as a prototype development environment This coupled to some beginner experience using C in an XNA environment has proven t
138. y gt public GUIStyle style null lt summary gt The window text1 lt summary gt private string winText1 lt summary gt The window text2 lt summary gt private string winText2 lt summary gt The alpha color cache alpha for game object lt summary gt private Color lt summary gt The lhs rect screen counter offset left lt summary gt private Rect 1 lt summary gt The rhs rect screen counter offset right lt summary gt private Rect rl lt summary gt Start this instance assess the gameobjects to see if null if no tnull set their active state ot false lt summary gt void Sta set up right and left hand side rects for reference LI ct new Rect Screen width Screen h Screen he Screen heig 201 57 new Rect Screen width 200 Screen ht Screen he 201 57 if go null cache an aplha value as colour i new Color 1 0f 1 0f 1 0f 0 0f false return else Debug NOT all GameObject have a reference added to them in the ItemController script n Do u need to add some gameobjects in your inspector if ni ls null cache an aplha value as colour new Color 1 0f 1 0f 1 0f 0 0f n false return else Debug Log NOT all GameObject have a reference added to them in the ItemController script n Do u need to add some gameobjects in your inspector lt summa
Download Pdf Manuals
Related Search
Related Contents
4 - Innova Installation Manual DD-160E Sistema de taladro con diamante Manual de instrucciones Copyright © All rights reserved.
Failed to retrieve file