8,452
edits
Paradox-01 (talk | contribs) mNo edit summary |
Paradox-01 (talk | contribs) mNo edit summary |
||
(9 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{update|The tutorials on the now-defunct Oni Central Forum, under the section "Links to Forum Tutorials", should be merged into this article.}} | ||
This page covers level creation from scratch. See [[Modifying an existing level]] if you want to change a vanilla level in the game. | |||
==Level releases and resources== | ==Level releases and resources== | ||
Line 17: | Line 18: | ||
|- | |- | ||
|2019/09/16 | |2019/09/16 | ||
|[http:// | |[https://web.archive.org/web/20240527004257/http://oniforum.bungie.org/viewtopic.php?id=2965 Omega Tournament] | ||
|31 | |31 | ||
|- | |- | ||
|2016/02/13 | |2016/02/13 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=2947 AI Battle] | |[https://web.archive.org/web/20160224173743/http://oni.bungie.org/forum/viewtopic.php?id=2947 AI Battle] | ||
|7 | |7 | ||
|- | |- | ||
|2014/01/19 | |2014/01/19 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=2698 Wilderness Preserve] | |[https://web.archive.org/web/20211202225410/http://oni.bungie.org/forum/viewtopic.php?id=2698 Wilderness Preserve] | ||
|17 | |17 | ||
|- | |- | ||
|2013/09/07 | |2013/09/07 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=2656 Island] | |[https://web.archive.org/web/20201127180732/http://oni.bungie.org/forum/viewtopic.php?id=2656 Island] | ||
|29 | |29 | ||
|- | |- | ||
|2013/07/12 | |2013/07/12 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=2640 City] | |[https://web.archive.org/web/20201127175459/http://oni.bungie.org/forum/viewtopic.php?id=2640 City] | ||
|28 | |28 | ||
|- | |- | ||
|2013/06/01 | |2013/06/01 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=2619 Fight Club] | |[https://web.archive.org/web/20201029102326/http://oni.bungie.org/forum/viewtopic.php?id=2619 Fight Club] | ||
|25 | |25 | ||
|- | |- | ||
|2012/05/12 | |2012/05/12 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=2357 Old China] | |[https://web.archive.org/web/20220701102842/http://oni.bungie.org/forum/viewtopic.php?id=2357 Old China] | ||
|24 | |24 | ||
|- | |- | ||
|2012/03/18 | |2012/03/18 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=2302 Boss Battle] | |[https://web.archive.org/web/20211202220454/http://oni.bungie.org/forum/viewtopic.php?id=2302 Boss Battle] | ||
|23 | |23 | ||
|- | |- | ||
|2012/02/12 | |2012/02/12 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=2271 De Dust Deluxe] | |[https://web.archive.org/web/20201029113554/http://oni.bungie.org/forum/viewtopic.php?id=2271 De Dust Deluxe] | ||
|22 | |22 | ||
|- | |- | ||
|2012/01/23 | |2012/01/23 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=2242 Parkour Challenge 2] | |[https://web.archive.org/web/20201029114415/http://oni.bungie.org/forum/viewtopic.php?id=2242 Parkour Challenge 2] | ||
|21 | |21 | ||
|- | |- | ||
|2012/01/16 | |2012/01/16 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=2235 Parkour Challenge] | |[https://web.archive.org/web/20211205145843/http://oni.bungie.org/forum/viewtopic.php?id=2235 Parkour Challenge] | ||
|21 | |21 | ||
|- | |- | ||
|2011/07/25 | |2011/07/25 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=2001 Mini-Partenon] | |[https://web.archive.org/web/20201029103607/http://oni.bungie.org/forum/viewtopic.php?id=2001 Mini-Partenon] | ||
|5 | |5 | ||
|- | |- | ||
|2011/10/03 | |2011/10/03 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=2024 Muro's Lair - Preview] | |[https://web.archive.org/web/20201029113340/http://oni.bungie.org/forum/viewtopic.php?id=2024 Muro's Lair - Preview] | ||
|20 | |20 | ||
|- | |- | ||
|2011/07/03 | |2011/07/03 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=1957 Hexagon] | |[https://web.archive.org/web/20201029113724/http://oni.bungie.org/forum/viewtopic.php?id=1957 Hexagon] | ||
|16 | |16 | ||
|- | |- | ||
|2011/06/23 | |2011/06/23 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=1938 Junkyard] | |[https://web.archive.org/web/20201029104928/http://oni.bungie.org/forum/viewtopic.php?id=1938 Junkyard] | ||
|15 | |15 | ||
|- | |- | ||
Line 81: | Line 82: | ||
|- | |- | ||
|2010/11/08 | |2010/11/08 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=1736 Arena of Hurt (OTA)] | |[https://web.archive.org/web/20210117150652/http://oni.bungie.org/forum/viewtopic.php?id=1736 Arena of Hurt (OTA)] | ||
|7 | |7 | ||
|- | |- | ||
|2010/11/06 | |2010/11/06 | ||
|[http://oni.bungie.org/forum/viewtopic.php?pid=50565#p50565 Martian Colony] AKA "Silly World" | |[https://web.archive.org/web/20201029105217/http://oni.bungie.org/forum/viewtopic.php?pid=50565#p50565 Martian Colony] AKA "Silly World" | ||
|5 | |5 | ||
|- | |- | ||
|2010/02/15 | |2010/02/15 | ||
|[http://oni.bungie.org/forum/viewtopic.php?id=1506 Maze] | |[https://web.archive.org/web/20201029113916/http://oni.bungie.org/forum/viewtopic.php?id=1506 Maze] | ||
|5 | |5 | ||
|- | |- | ||
Line 95: | Line 96: | ||
|[http://mods.oni2.net/node/4 Arena of Pain] | |[http://mods.oni2.net/node/4 Arena of Pain] | ||
|30 | |30 | ||
|- | |||
|2024/05/20 | |||
|[https://gamebanana.com/mods/514707 Kitsune: Chapter 1] | |||
|20 | |||
|} | |} | ||
===Forum tutorials on level creation=== | ===Forum tutorials on level creation=== | ||
* '''[http://oni.bungie.org/forum/viewtopic.php?id=2087 "Creating the Lair - A level tutorial"]''' | * '''[https://web.archive.org/web/20201029114347/http://oni.bungie.org/forum/viewtopic.php?id=2087 "Creating the Lair - A level tutorial"]''' | ||
* [http://oni.bungie.org/forum/viewtopic.php?pid=53026 "Creating a Custom Oni Level (s10k video tutorials)"] | * [https://web.archive.org/web/20201127172559/http://oni.bungie.org/forum/viewtopic.php?pid=53026 "Creating a Custom Oni Level (s10k video tutorials)"] | ||
* [http://oni.bungie.org/forum/viewtopic.php?id=1515 "Creating new levels"] | * [https://web.archive.org/web/20201127180431/http://oni.bungie.org/forum/viewtopic.php?id=1515 "Creating new levels"] | ||
* [http://oni.bungie.org/forum/viewtopic.php?pid=33838 "Create levels with pathfinding grids"] | * [https://web.archive.org/web/20201029114358/http://oni.bungie.org/forum/viewtopic.php?pid=33838 "Create levels with pathfinding grids"] | ||
* [http://oni.bungie.org/forum/viewtopic.php?id=2000 "More questions about levels"] | * [https://web.archive.org/web/20210117145338/http://oni.bungie.org/forum/viewtopic.php?id=2000 "More questions about levels"] | ||
* [http://oni.bungie.org/forum/viewtopic.php?pid=37252#p37252 "Modding Existing levels - Beta" ("Moveable furniture" post)] | * [https://web.archive.org/web/20201029103906/http://oni.bungie.org/forum/viewtopic.php?pid=37252#p37252 "Modding Existing levels - Beta" ("Moveable furniture" post)] | ||
===Wiki pages on level creation=== | ===Wiki pages on level creation=== | ||
* [[Creating a level]] (you are here) | * [[Creating a level]] (you are here) | ||
* [[Modifying an existing level]] | * [[Modifying an existing level]] | ||
* [[New levels]] | * [[New levels]] (a historical document) | ||
* [[Lightmapping levels]] | * [[Lightmapping levels]] (an experiment) | ||
===Free asset sources=== | ===Free asset sources=== | ||
* [ | * [https://3dwarehouse.sketchup.com/ 3D Warehouse] – architectural models (also see the [https://3dwarehouse.sketchup.com/collection/236901867937c4ed5fbaf4019d18db23/New-content-for-Oni curated collection] by geyser) | ||
* [https://www.turbosquid.com/ TurboSquid] – various models, including architecture | |||
* [https://www.textures.com | * [https://www.textures.com Textures.com] – wide variety of textures | ||
==Engine limitations== | ==Engine limitations== | ||
Line 214: | Line 219: | ||
;Static geometry | ;Static geometry | ||
:* '''Unique level geometry with no functions''' (AKEV core geometry such as buildings and streets). | :* '''Unique level geometry with no functions''' (AKEV core geometry such as buildings and streets). | ||
:* '''Repeating objects''' are flagged as '''furniture (FURN)''' although they can be outdoor objects such as boxes and containers. <!--Oni's story plays out most often inside buildings. So, there you go. -->FURN objects were used to be imported by an object collection, an CJBO. Nowadays, furniture collections can be used (again) for imports, but the individual objects are stored as OFGA files. This modularity is known in many game editors (like the Unreal Engine Editor). So, '''OFGA are nothing else than "game assets".''' The drawback of OFGA is that they '''will not import with any vertex shading'''. Only their '''geometries''', attached '''particle''' and '''gunk flags''' get copied into final (baked) level geometry. | :* '''Repeating objects''' are flagged as '''furniture ([[Creating_a_level#Furniture.xml|FURN]])''' although they can be outdoor objects such as boxes and containers. <!--Oni's story plays out most often inside buildings. So, there you go. -->FURN objects were used to be imported by an object collection, an CJBO. Nowadays, furniture collections can be used (again) for imports, but the individual objects are stored as [[XML:OFGA|OFGA]] files. This modularity is known in many game editors (like the Unreal Engine Editor). So, '''OFGA are nothing else than "game assets".''' The drawback of OFGA is that they '''will not import with any vertex shading'''. Only their '''geometries''', attached '''particle''' and '''gunk flags''' get copied into final (baked) level geometry. | ||
:* '''Objects with actual functions''' | :* '''Objects with actual functions''': [[XML:BINA/OBJC/CONS|CONS]], [[XML:BINA/OBJC/DOOR|DOOR]], [[XML:BINA/OBJC/TRIG|TRIG]], [[XML:BINA/OBJC/TURR|TURR]] | ||
: | |||
;[[XML:AKEV#AGQG|Gunk flags]] | ;[[XML:AKEV#AGQG|Gunk flags]] | ||
:Properties directly associated with the polygons. Among others, these can be: Transparent, TwoSided, NoCollision, Invisible, NoObjectCollision, NoCharacterCollision, NoDecals, Furniture, Impassable. | :Properties directly associated with the polygons. Among others, these can be: Transparent, TwoSided, NoCollision, Invisible, NoObjectCollision, NoCharacterCollision, NoDecals, Furniture, Impassable. | ||
Line 285: | Line 289: | ||
'''Common mistake:''' | '''Common mistake:''' | ||
CJBO files '''need relative paths | A few CJBO files '''need relative paths for resources'''. Inserting only a file name will not work. Let us take consoles for example: A relative path to a console should look like this: "'''consoles/console_data.oni'''". The resources are stored in '''shared/console/''' but since the XML master file points to the starting folder via "../shared", it will be omitted in all actual resource paths. If you need, look into the files of the [http://mods.oni2.net/node/299 demo project "lab"]. '''Doors''' and '''furniture''' also require relative paths. | ||
'''lab/lab.xml''' | |||
<?xml version="1.0" encoding="utf-8" ?> | |||
<Oni> | |||
<Level SharedPath="../shared"> | |||
... | |||
'''lab/Console.xml''' | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<Oni> | |||
<Objects> | |||
<CONS Id="4695"> | |||
<Header> | |||
<Flags>Gunk</Flags> | |||
<Position>944.1944 -27 29.37764</Position> | |||
<Rotation>3.623707E-05 270 0</Rotation> | |||
</Header> | |||
<OSD> | |||
<Class>consoles/console_data.oni</Class> | |||
... | |||
|- | |- | ||
| <Environment> | | <Environment> | ||
Line 410: | Line 434: | ||
The following two collection files are '''NOT''' supported. You need to copy them as regular pre-compiled *.oni files into your mod package: | The following two collection files are '''NOT''' supported. You need to copy them as regular pre-compiled *.oni files into your mod package: | ||
: [[XML:BINA/OBJC/MELE|Melee.xml]] (overrides global MELE; not used in vanilla levels) | : [[XML:BINA/OBJC/MELE|Melee.xml]] (overrides global MELE; not used in vanilla levels) | ||
: [[XML:BINA/OBJC/CMBT|Combat.xml]] (overrides global CMBT? not used in vanilla levels) | : [[XML:BINA/OBJC/CMBT|Combat.xml]] (overrides global CMBT?; not used in vanilla levels) | ||
'''Inside the following three supported collection files | '''Inside''' the following three supported collection files, provide links to pre-compiled (*.oni) class files: console, door and furniture collections. Use relative paths such as: | ||
:: <code>'''consoles/'''console_data'''.oni'''</code> | :: <code>'''consoles/'''console_data'''.oni'''</code> | ||
:: <code>'''doors/'''TCdouble'''.oni'''</code> | :: <code>'''doors/'''TCdouble'''.oni'''</code> | ||
:: <code>'''furniture/'''V_tctf_bigvan'''.oni'''</code> | :: <code>'''furniture/'''V_tctf_bigvan'''.oni'''</code> | ||
When | When you are unsure about the folder structure refer back to the [http://mods.oni2.net/node/299 level import demo]. | ||
|- | |- | ||
| <Films> | | <Films> | ||
Line 762: | Line 785: | ||
By default, a Mod Tool scene has one Infinite light, but it doesn't shine in every direction so you might want to add more Infinite lights. Let's say one Infinite light for each direction (+X, -X, +Y, -Y, +Z, -Z) with an intensity of circa 0.25 (night) or 0.75 (day). | By default, a Mod Tool scene has one Infinite light, but it doesn't shine in every direction so you might want to add more Infinite lights. Let's say one Infinite light for each direction (+X, -X, +Y, -Y, +Z, -Z) with an intensity of circa 0.25 (night) or 0.75 (day). | ||
The illumination of those lights can be integrated into the vertex color property | The illumination of those lights can be integrated into the vertex color property: | ||
* Property > Color At Vertices Map | * Property > Color At Vertices Map | ||
* Property > Render Map | * Property > Render Map |
edits