Daggerfall Tools for Unity
Transcription
Daggerfall Tools for Unity
Daggerfall Tools for Unity - Manual V1.2.41 | 10/02/2014 Devblog SVN Twitter Email dfworkshop.net code.google.com/p/daggerfall-unity twitter.com/dfinterkarma [email protected] Daggerfall Tools for Unity Thank you for downloading Daggerfall Tools for Unity. This asset is an API and suite of editor scripts for procedurally importing Daggerfall’s content into Unity3D. Getting Started Before using Daggerfall Tools for Unity, you will need the following: 1. A full install of Daggerfall. You can download Daggerfall for free from the following sites. http://www.elderscrolls.com/daggerfall/ http://www.uesp.net/wiki/Daggerfall:Files 2. Unity 4.6 or later (Free or Pro). http://unity3d.com/unity/download 3. Optional, but highly recommended is Daggerfall Modelling. This Windows-only exploring tool allows you to quickly search for and browse Daggerfall models, blocks, and locations. It will be very useful until similar search features are implemented in Daggerfall Tools for Unity. http://www.dfworkshop.net/?page_id=1045 (Download). https://code.google.com/p/daggerfallconnect/wiki/DaggerfallModelling (Online Manual). Note: Also install Daggerfall Modelling prerequisites as described in online manual link. Daggerfall Tools for Unity - Manual V1.2.41 | 10/02/2014 Devblog SVN Twitter Email dfworkshop.net code.google.com/p/daggerfall-unity twitter.com/dfinterkarma [email protected] Using Daggerfall Tools for Unity Importing Asset After installing Daggerfall and Unity3D the next step is to import latest Daggerfall Tools for Unity package. 1. Open Unity3D and start a new project. 2. Click Assets > Import Package > Custom Package. Browse to the “Daggerfall Tools for Unity.unitypackage” file and click Open. 3. Ensure everything is selected and click Import. This will import Daggerfall Tools for Unity into your Assets folder and compile scripts. 4. Alternatively double-click the .unitypackage file to install into your current project. Prepare GameObject Daggerfall Tools for Unity uses a singleton class to interface with the DaggerfallConnect API. Only one instance of this script is required to import Daggerfall content from the editor or in code. 1. Create a new GameObject by clicking GameObject > Create Empty. Rename the new GameObject to “DaggerfallUnity”. 2. Select your new DaggerfallUnity object in Hierarchy then click Add Component in the Inspector. Browse to Scripts > Daggerfall Workshop > Daggerfall Unity to add the main script and any prerequisites. 3. Alternatively there is a prefab DaggerfallUnity in the Prefabs sub-folder and a ready-made empty scene in the Scenes sub-folder. Daggerfall Tools for Unity - Manual V1.2.41 | 10/02/2014 Devblog SVN Twitter Email dfworkshop.net code.google.com/p/daggerfall-unity twitter.com/dfinterkarma [email protected] Set Arena2 Path Before importing Daggerfall content, you must direct the script to your Daggerfall installation’s Arena2 folder. 1. Click on the DaggerfallUnity game object in Hierarchy. Then in the Inspector, click Browse and locate the Arena2 path of your Daggerfall installation. Importing Content Once you have set your Arena2 path, go to the Importer foldout in Inspector of your DaggerfallUnity instance. Currently, Daggerfall Tools for Unity does not have full in-editor browsing. You will find Daggerfall Modelling useful for locating IDs and names of content to import. Models are imported using a unique ModelID. For example, ModelID 456 is the exterior of “Scourg Barrow”. Blocks are imported using a unique Block Name. City blocks end with .RMB and dungeon blocks end with .RDB. For example, S0000999.RDB is the central block of Privateer’s Hold, and CUSTAA45.RMB is the exterior of Castle Wayrest. Cities and Dungeons are a bit more involved as some locations have both an exterior map and a dungeon map. To import a city or dungeon enter in the format RegionName/LocationName to either the City field or Dungeon field. For example, entering Daggerfall/Daggerfall in the City Name field will import the above-ground city of Daggerfall. Entering the same into the Dungeon Name field will import the dungeon within Castle Daggerfall Tools for Unity - Manual V1.2.41 | 10/02/2014 Devblog SVN Twitter Email dfworkshop.net code.google.com/p/daggerfall-unity twitter.com/dfinterkarma [email protected] Daggerfall. If the target location has any apostrophes, be sure to enter exactly as shown in-game. For example, entering Daggerfall/Privateer’s Hold into the dungeon field will spawn Privateer’s Hold. Note: City Name and Dungeon Name fields are case-sensitive. Once you have entered a model, block, or location, click the adjacent Import button to import that resource into Unity. Imported content will be serialized with your scene. Daggerfall Tools for Unity - Manual V1.2.41 | 10/02/2014 Devblog SVN Twitter Email dfworkshop.net code.google.com/p/daggerfall-unity twitter.com/dfinterkarma [email protected] Material Reader Options The Material Reader is a required component of DaggerfallUnity. This script handles importing and converting Daggerfall textures to Unity Materials. There are settings here which control how materials are processed during import. Atlas Textures. Combines billboards, ground textures, and animated textures into an atlas for improved efficiency. Currently, animated textures must be atlased for animations to play. It is recommended to always have this option enabled. MipMaps. Control generation of mipmap textures on generated materials. Compress Sky Textures. Enables texture compression for sky textures. Main Filter Mode. Change the desired filter mode of imported textures. The options are Point, Bilinear, and Trilinear. This setting will be applied whenever materials are rebuilt, such as when applying new climate settings. Sky Filter Mode. Set the desired filter mode for sky textures. Default Shader. This is the name of shader applied to most materials imported from Daggerfall. You can modify this to use your own shader instead. The shader is located using Shader.Find() during import. Billboard Shader. Same as above, but applied to billboard materials. Self-Illumin Shader. Same as above, but applied to self-illuminated materials, such as the windows. Unlit Billboard Shader. Same as above, but applied to unlit billboard materials. This is used by light textures, such as lamps and torches. Daggerfall Tools for Unity - Manual V1.2.41 | 10/02/2014 Devblog SVN Twitter Email dfworkshop.net code.google.com/p/daggerfall-unity twitter.com/dfinterkarma [email protected] Unlit Texture Shader. Same as above, but for unlit textures. Used by fireplace hearth and lava textures. Window Colour & Brightness. These options are for setting window colour and brightness (from 0.0 to 1.0) for window styles. You can set individual options for Day, Night, Fog, and Custom windows. Mesh Reader Options The Mesh Reader is another required component of DaggerfallUnity. This script handles import and conversion of Daggerfall’s 3D models to Unity Mesh format. It also has several code helpers for importing other types of mesh resources, such as properly scaled billboard quads and correctly tiled ground planes. There are only a couple of editor options for Mesh Reader at this time. Add Mesh Tangents. This option calculates tangents for Daggerfall models as they are imported. Tangents are used for shaders requiring a Normal Map. It is recommended this option is left enabled. Add Lightmap UVs. This option creates a secondary UV channel, required for lightmapping environments with tiling textures. Enabling this option will greatly increase import times. It’s not recommended to use this option unless lightmaps are required. Note: It is required to set these options prior to importing mesh data. World Time The WorldTime component is a complete Daggerfall-styled Tamrielic calendar. It is instrumental in managing seasons and time of day operations. Daggerfall Tools for Unity - Manual V1.2.41 | 10/02/2014 Devblog SVN Twitter Email dfworkshop.net code.google.com/p/daggerfall-unity twitter.com/dfinterkarma [email protected] Year, Month, Day, Hour, Minute, Second are individual units of current time. Time Scale scales the speed at which Tamrielic time elapses, and is unrelated to Unity’s internal time scale. Increasing this value to something high like 5000 will make days flash by in a few seconds. The default time scale is 10. Show Debug String draws a simple time string at top-left of screen while game in running. Sound Reader SoundReader is the final required component of DaggerfallUnity. This script handle import and conversion of Daggerfall’s audio sound effects. There are no editor options for the Sound Reader at this time. Daggerfall Tools for Unity - Manual V1.2.41 | 10/02/2014 Devblog SVN Twitter Email dfworkshop.net code.google.com/p/daggerfall-unity twitter.com/dfinterkarma [email protected] Daggerfall Unity Options The DaggerfallUnity editor has several options available to control how content is imported and how it behaves at runtime. Daggerfall Tools for Unity - Manual V1.2.41 | 10/02/2014 Devblog SVN Twitter Email dfworkshop.net code.google.com/p/daggerfall-unity twitter.com/dfinterkarma [email protected] Combining Combine RMB. Combines models in RMB blocks (city blocks) to reduce draw calls and increase efficiency of scene. Will otherwise maintain the same native scene layout as Daggerfall. It is recommended to leave this enabled. Combine RDB. Combines models in RDB blocks (dungeon blocks) as above. It is recommended to leave this enabled. Scene Options Set Static Flags. Sets appropriate objects as static. Ignores billboards and dynamic objects. Add Colliders. Adds a mesh collider to imported objects. Daggerfall’s meshes are very simple, about the complexity of normal physics meshes. Default Sounds. Adds a DaggerfallAudioSource to any scene object which creates sounds, such as torches, action objects, doors, and enemies. Close City Gate. The gates of walked cities will default to closed. This can also be controlled by Time & Space options. Lights Import Point Lights. Import point lights for cities and dungeons. Animated. Adds a flickering range animation to point lights. Tag. Set a custom tag for your lights. This enables you to manage scene lights as required. Custom Script. Add a custom script to each light. This enables you to quickly attach your own behaviour to imported lights. Enemies Import Enemies. Imports fixed enemies in dungeons (random enemies will be handed in a future update). Each enemy comes with a script to handle correct orientation and animation states. CharacterController, Rigidbody, CapsuleCollider, NavMeshAgent. Attach the selected Unity components to enemy at import. This will depend on how you choose to implement enemy movement and AI. Example AI. Add a suite of example scripts to every enemy, rigging them up for basic movement and combat. Will also attach a CharacterController. Tag. Set a custom tag for each enemy imported. Custom Script. Attach a custom script to every enemy. Advanced. Several preset options to apply when importing CharacterController and Rigidbody components. Daggerfall Tools for Unity - Manual V1.2.41 | 10/02/2014 Devblog SVN Twitter Email dfworkshop.net code.google.com/p/daggerfall-unity twitter.com/dfinterkarma [email protected] Time & Space Automate Textures. Changes exterior textures based on climate, season, and time of day. Automate Sky. Changes sky animation based on season, weather (to be implemented) and time of day. Automate City Lights. Point lights in cities will turn on and off based on time of day. Climate Textures After importing a city location, you can customise the climate and season directly from editor. To get started, import a full city like Daggerfall/Daggerfall. By default this will have the climate settings matching that location. Click on the DaggerfallCity game object in the Hierarchy. Your Inspector then displays a summary of your location along with several controls for adjusting the climate textures and window style. The metadata in About is generally only used by internal systems. The Climate settings are where you can control climate from the editor. Usage. Options are Disabled, Use Location, or Custom. Daggerfall Tools for Unity - Manual V1.2.41 | 10/02/2014 Devblog SVN Twitter Email dfworkshop.net code.google.com/p/daggerfall-unity twitter.com/dfinterkarma [email protected] o o Disabled. Turns off climate processing entirely. Use Location. Uses the location settings as shown in the About fields. Note that resetting from cog will destroy location metadata. o Custom. Full control over which climate settings are applied. Season. Options are Summer, Winter, Rain. Applies index modifiers to textures for simulating different in-game seasons. The Winter setting will enable snow textures, and Rain will slightly darken the ground plane. Climate. Options are Desert, Mountain, Temperate, Swamp. Applies index modifiers for simulating different in-game climates. Note that some climates do not fully support all seasons. For example, Swamp+Winter does not have a full complement of snow textures. Daggerfall Tools for Unity will gracefully handle known invalid swaps. Nature Flats. These are the trees, rocks, and shrubs used in combination with the climate. You can set this however required, even in combinations not normally seen in-game. Windows. Options are Disabled, Day, Night, Fog, Custom. Sets the window style of your city location based on time of day and weather. Use the custom setting for unusual effects, and set disabled to ignore window styles completely. Above: A Winter scene with point lights and Night windows. Dungeon Textures You can manually set dungeon texture swaps via the Inspector when you have a dungeon selected. Currently only the Custom option is implemented. Daggerfall Tools for Unity - Manual V1.2.41 | 10/02/2014 Devblog SVN Twitter Email dfworkshop.net code.google.com/p/daggerfall-unity twitter.com/dfinterkarma [email protected] In brief, dungeon texture swaps work by modifying a table of base texture indices to a substituted texture index. In-game, this is controlled by a random seed and random generator. Daggerfall Tools for Unity currently does not implement authentic texture swaps based on location. However it is possible to set your own custom swaps, or just click the Random button to generate a new valid texture table at random. Be careful with custom swaps, as it’s possible to set an invalid or inappropriate texture index. If you set an invalid swap, or just want to return back to start settings, use the Reset button. Click Apply to apply your changes. Other Tips Camera Setup & Billboards The default DaggerfallBillboard.cs script for billboard sprites (enemies, trees, etc.) will rotate to face the editor camera in your currently selected viewport while in edit mode. After hitting play, sprites will look for the camera tagged “MainCamera” and rotate to face this camera in the Game window. If you change the default camera, don’t forget to set the MainCamera tag on your first-person camera. Global Scale Daggerfall’s 3D objects natively use fixed-point arithmetic. A straight conversion to floating point results in very large environments well beyond the normal Unity 2m player height. By default, everything is scaled to 1/40 of original size. For reasons on this, check MeshReader.cs where GlobalScale is defined. If you would like to adjust the global scale play with GlobalScale field in MeshReader.cs. When placing objects into the scene from code, don’t forget to multiply by GlobalScale so it will be aligned with other objects in the scene. After changing GlobalScale, you will need to re-import content. It is recommend to use the one scale throughout development. It is not recommended to change the default GlobalScale, but it is important to know why it’s there. Daggerfall Tools for Unity - Manual V1.2.41 | 10/02/2014 Devblog SVN Twitter Email dfworkshop.net code.google.com/p/daggerfall-unity twitter.com/dfinterkarma [email protected] First-Person Controller Some of the architecture in Daggerfall is very steep. To ensure your first-person controller can ascend stairs and ramps, try playing with the maximum slope and step height parameters. A maximum slope of 75-85 degrees and a step height of 0.4-0.5 seems to work well in most cases. You may also need to tune radius and height to ensure controller can fit through doors at bottom of stairs and other tight spaces. You will find example first-person controller (Player Motor) and mouse look (Player Mouse Look) scripts in the Demos folder. There is also a premade Player prefab you can just drop into the scene. Don’t forget to delete any other MainCamera objects. When you hit play, you can explore your imported scene using WSAD to move, SHIFT to toggle run (keybind required), SPACE to jump, and ESC to uncaptured mouse. Enemy Mobiles Daggerfall Tools for Unity provides a foundation for enemy mobile units. These are imported wherever the appropriate editor marker is found. You could extend this foundation with spells, resistances, new enemy types, AI behaviours, and so on. Example enemy scripts are in the Demos folder. Currently is it not possible to instantiate an enemy directly from editor. Lighting Billboards normal are currently set to half way between Vector3.up and Vector3.forward. This means they will pick up some lighting from in front and some lighting from above. This seems to work well for three-point lighting rigs and point lighting. If you find your billboards are too dark in some orientations, add a cheap directional light to illuminate them a little. When using many point lights (common in cities) without benefit of Deferred Lighting from a Pro license, you may need to increase the number of pixel lights available to your scene. Otherwise you may find lights turning on and off at unexpected times in heavily lit areas. You can increase the Pixel Light Count in Unity from Quality settings. This will impact on performance, so Deferred is recommended if you have a Pro license. Standalone Builds You can include files from the Arena2 folder in your build by appending “.bytes” to the file and copying into a Resources folder in your Unity project. When loading files from the API with FileUsage.UseMemory (now default) the FileProxy class will search your Resources folder for an available file of the same name (e.g. “arch3d.bsa.bytes”) and use that file instead. This will help you to create builds for web and mobile platforms. Standalone builds will be covered in detail in a future tutorial.
Similar documents
PDF manual - Daggerfall Workshop
Daggerfall Tools for Unity uses a singleton class to interface with the DaggerfallConnect API. Only one instance of this script is required to import Daggerfall content from the editor or in code. ...
More informationPDF Manual - Daggerfall Workshop
simulating different in-game climates. Note that all climates fully support all seasons. For example, Swamp+Winter does not have a full complement of snow textures. Nature Flats. These are the tree...
More information