mirror of
https://github.com/open-goal/jak-project
synced 2026-07-12 15:42:20 -04:00
add jak 2 test-zone
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
{
|
||||
// The "in-game" name of the level. Should be lower case, with dashes (GOAL symbol name)
|
||||
// the name of this file, and the folder this file is in must have the same name.
|
||||
"long_name": "test-zone",
|
||||
// The file name, should be upper case and 8 characters or less.
|
||||
"iso_name": "TESTZONE",
|
||||
// The nickname, should be exactly 3 characters
|
||||
"nickname": "tsz", // 3 char name, all lowercase
|
||||
// Background mesh file.
|
||||
// Must have vertex colors. Use the blender cycles renderer, bake, diffuse, uncheck color,
|
||||
// and bake to vertex colors. For now, only the first vertex color group is used, so make sure you
|
||||
// only have 1.
|
||||
"gltf_file": "custom_levels/jak2/test-zone/test-zone2.glb",
|
||||
|
||||
// automatically set wall vs. ground based on angle. Useful if you don't want to assign this yourself
|
||||
"automatic_wall_detection": true,
|
||||
"automatic_wall_angle": 45.0,
|
||||
|
||||
// if your mesh has triangles with incorrect orientation, set this to make all collision mesh triangles double sided
|
||||
// this makes collision 2x slower and bigger, so only use if really needed
|
||||
"double_sided_collide": false,
|
||||
|
||||
// available res-lump tag data types:
|
||||
// int32, float, meters, vector, vector4m (meters)
|
||||
//
|
||||
// examples:
|
||||
//
|
||||
// adds a float tag 'spring-height' with value of 200 meters (1 meter = 4096.0 units):
|
||||
// "spring-height": ["meters", 200.0]
|
||||
//
|
||||
// adds a vector tag 'movie-pos':
|
||||
// "movie-pos": ["vector", [4096000.0, -176128.0, 1353973.76, 1.0]]
|
||||
|
||||
// The base actor id for your custom level. If you have multiple levels, this should be unique!
|
||||
"base_id": 100,
|
||||
|
||||
// All art groups you want to use in your custom level. Will add their models and corresponding textures to the FR3 file.
|
||||
"art_groups": ["prsn-torture-ag"],
|
||||
|
||||
// Any textures you want to include in your custom level.
|
||||
// This is mainly useful for textures which are not in the common level files and have no art group associated with them.
|
||||
// To get a list of all the textures, you can extract all of the game's textures
|
||||
// by setting "save_texture_pngs" to true in the decompiler config.
|
||||
"textures": [],
|
||||
|
||||
"actors" : [
|
||||
{
|
||||
"trans": [-15.2818, 15.2461, 17.1360], // translation
|
||||
"etype": "crate", // actor type
|
||||
"game_task": 0, // associated game task (for powercells, etc)
|
||||
"kill_mask": 0,
|
||||
"quat": [0, 0, 0, 1], // quaternion
|
||||
"bsphere": [-15.2818, 15.2461, 17.1360, 10], // bounding sphere
|
||||
"lump": {
|
||||
"name": "test-crate",
|
||||
"eco-info": ["int32", 18, 2]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"trans": [-5.4630, 17.4553, 1.6169], // translation
|
||||
"etype": "eco-yellow", // actor type
|
||||
"game_task": 0, // associated game task (for powercells, etc)
|
||||
"kill_mask": 0,
|
||||
"quat": [0, 0, 0, 1], // quaternion
|
||||
"bsphere": [-5.4630, 17.4553, 1.6169, 10], // bounding sphere
|
||||
"lump": {
|
||||
"name": "test-eco"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"trans": [-7.41, 13.5, 28.42], // translation
|
||||
"etype": "prsn-torture", // actor type
|
||||
"game_task": 0, // associated game task (for powercells, etc)
|
||||
"quat": [0, 0, 0, 1], // quaternion
|
||||
"bsphere": [-7.41, 13.5, 28.42, 10], // bounding sphere
|
||||
"lump": {
|
||||
"name": "test-torture"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
;; DGO definition file for Awful Village level
|
||||
;; We use the convention of having a longer DGO name for levels without precomputed visibility.
|
||||
|
||||
;; the actual file name still needs to be 8.3
|
||||
("TSZ.DGO"
|
||||
("test-zone.go"
|
||||
"prison-obs.o"
|
||||
))
|
||||
@@ -14690,7 +14690,7 @@
|
||||
0
|
||||
)
|
||||
|
||||
;; added in PC port: test levels from the ps3 version
|
||||
;; og:preserve-this added in PC port: test levels from the ps3 version
|
||||
(#when USE_PS3_LEVELS
|
||||
(define 4aaron (new 'static 'level-load-info
|
||||
:index 1
|
||||
@@ -15724,3 +15724,88 @@
|
||||
(cons! *level-load-list* 'wasall)
|
||||
(cons! *level-load-list* 'stadocc)
|
||||
)
|
||||
|
||||
;; og:preserve-this added test-zone level
|
||||
(define test-zone
|
||||
(new 'static 'level-load-info
|
||||
:index #x9e
|
||||
:name 'test-zone
|
||||
:visname 'test-zone-vis
|
||||
:nickname 'tsz
|
||||
:dbname 'test-zone
|
||||
:taskname 'default
|
||||
:packages '()
|
||||
;; :memory-mode (load-buffer-mode small-center)
|
||||
:music-bank #f
|
||||
:ambient-sounds '()
|
||||
:mood-func 'update-mood-default
|
||||
:mood-init #f
|
||||
:ocean #f
|
||||
:sky #t
|
||||
:use-camera-other #f
|
||||
:part-engine-max 16
|
||||
:continues '((new 'static 'continue-point
|
||||
:name "test-zone-start"
|
||||
:level 'test-zone
|
||||
:trans (new 'static 'vector :x 0.0 :y (meters 10) :z (meters 10) :w 1.0)
|
||||
:quat (new 'static 'vector :y 0.061 :w 0.9981)
|
||||
:camera-trans (new 'static 'vector :x 0.0 :y (meters 1) :z 0.0 :w 1.0)
|
||||
:camera-rot (new 'static 'inline-array vector3s 3
|
||||
(new 'static 'vector3s :data (new 'static 'array float 3 1.0 0.0 0.0))
|
||||
(new 'static 'vector3s :data (new 'static 'array float 3 0.0 1.0 0.0))
|
||||
(new 'static 'vector3s :data (new 'static 'array float 3 0.0 0.0 1.0))
|
||||
)
|
||||
:on-goto #f
|
||||
:vis-nick #f
|
||||
:want (new 'static 'inline-array level-buffer-state 6
|
||||
(new 'static 'level-buffer-state :name 'test-zone :display? 'display :force-vis? #f :force-inside? #f)
|
||||
(new 'static 'level-buffer-state :name 'ctywide :display? 'display :force-vis? #f :force-inside? #f)
|
||||
(new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f)
|
||||
(new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f)
|
||||
(new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f)
|
||||
(new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f)
|
||||
)
|
||||
:want-sound (new 'static 'array symbol 3 #f #f #f)
|
||||
)
|
||||
)
|
||||
:tasks '()
|
||||
:priority 100
|
||||
:load-commands '()
|
||||
:alt-load-commands '()
|
||||
:bsp-mask #xffffffffffffffff
|
||||
:buttom-height (meters -10000000)
|
||||
:run-packages '()
|
||||
:wait-for-load #t
|
||||
:login-func #f
|
||||
:activate-func #f
|
||||
:deactivate-func #f
|
||||
:kill-func #f
|
||||
:borrow-level (new 'static 'array symbol 2 #f #f)
|
||||
:borrow-display? (new 'static 'array symbol 2 #f #f)
|
||||
:base-task-mask (task-mask task0)
|
||||
:texture-anim-tfrag #f
|
||||
:texture-anim-pris #f
|
||||
:texture-anim-shrub #f
|
||||
:texture-anim-alpha #f
|
||||
:texture-anim-water #f
|
||||
:texture-anim-twarp #f
|
||||
:texture-anim-pris2 #f
|
||||
:texture-anim-sprite #f
|
||||
:texture-anim-map #f
|
||||
:texture-anim-sky #f
|
||||
:draw-priority 10.0
|
||||
:fog-height 327680.0
|
||||
:bigmap-id (bigmap-id bigmap-id-20)
|
||||
:ocean-near-translucent? #t
|
||||
:ocean-far? #t
|
||||
:mood-range (new 'static 'mood-range :data (new 'static 'array float 4 0.0 1.0 0.0 1.0))
|
||||
:max-rain 1.0
|
||||
:fog-mult 1.0
|
||||
:ocean-alpha 1.0
|
||||
:extra-sound-bank #f
|
||||
)
|
||||
)
|
||||
|
||||
(#when PC_PORT
|
||||
(cons! *level-load-list* 'test-zone)
|
||||
)
|
||||
|
||||
@@ -291,6 +291,17 @@
|
||||
(cgo-file "wasall.gd" common-dep)
|
||||
)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Example Custom Level
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; Set up the build system to build the level geometry
|
||||
;; this path is relative to the custom_levels/jak2 folder
|
||||
;; it should point to the .jsonc file that specifies the level.
|
||||
(build-custom-level "test-zone")
|
||||
;; the DGO file
|
||||
(custom-level-cgo "TSZ.DGO" "test-zone/testzone.gd")
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ANIMATIONS
|
||||
;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
@@ -83,6 +83,17 @@
|
||||
)
|
||||
)
|
||||
|
||||
(defun custom-level-cgo (output-name desc-file-name)
|
||||
"Add a CGO with the given output name (in $OUT/iso) and input name (in custom_levels/jak2/)"
|
||||
(let ((out-name (string-append "$OUT/iso/" output-name)))
|
||||
(defstep :in (string-append "custom_levels/jak2/" desc-file-name)
|
||||
:tool 'dgo
|
||||
:out `(,out-name)
|
||||
)
|
||||
(set! *all-cgos* (cons out-name *all-cgos*))
|
||||
)
|
||||
)
|
||||
|
||||
(defun cgo (output-name desc-file-name)
|
||||
"Add a CGO with the given output name (in $OUT/iso) and input name (in goal_src/jak2/dgos)"
|
||||
(let ((out-name (string-append "$OUT/iso/" output-name)))
|
||||
@@ -124,6 +135,12 @@
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro build-custom-level (name)
|
||||
(let* ((path (string-append "custom_levels/jak2/" name "/" name ".jsonc")))
|
||||
`(defstep :in ,path
|
||||
:tool 'build-level2
|
||||
:out '(,(string-append "$OUT/obj/" name ".go")))))
|
||||
|
||||
(defmacro group (name &rest stuff)
|
||||
`(defstep :in ""
|
||||
:tool 'group
|
||||
|
||||
Reference in New Issue
Block a user