lingdev
↓ 0 downloadsLingDev: a Godot / Unity-style game editor written in Ling. 2-D and 3-D scenes, Flash-style timeline and cutscenes, HUDs over 3-D, Ling scripting, audio / music / MIDI, builds for Windows, Linux, macOS, web, Raspberry Pi and LingOS. Ships with Ling Agent (an N64-style spy FPS), Ling Breaker (a 3-D breakout) and Moko's Picture Book (a kawaii storybook platformer).
Keywords game-engine, editor, 3d, 2d, cutscene, timeline, ling, lingos, raspberry-pi
lingfu install lingdevCode / Files (136)
ling/demo_ssz.ling
# demo_ssz.ling - the scenes of projects/SoulSymphonyZH, the 2019 Soul Symphony (Panda3D) ported to
# Ling in `soul` mode (rt_soul.ling). The assets are imported by the project's tools/ssz_import.py
# from ../soul-symphony-zh; this builds the LingDev project around them: the title, the hub
# (level00, the ball dropped in to roll around and collect spinning notes) and the other six
# original levels, joined by portals.
fn ssz_root() { return p_join(st_get("app_root", "."), "projects/SoulSymphonyZH") }
fn demo_ssz_open() {
if file_exists(p_join(ssz_root(), "lingdev.toml")) { return project_open_path(p_join(ssz_root(), "lingdev.toml")) }
return demo_ssz_build()
}
fn ssz_levels() { return ["level00", "level01", "level02", "level03", "level04", "level05", "map00"] }
fn ssz_scene_of(lv) {
if lv == "level00" { return "scenes/hub.lscene" }
return "scenes/" + lv + ".lscene"
}
fn demo_ssz_build() {
if !file_exists(p_join(ssz_root(), "assets/levels/level00.ltm")) {
status("Soul Symphony (2019): run tools/ssz_import.py in projects/SoulSymphonyZH first (needs ../soul-symphony-zh and Panda3D)")
return false
}
bind dir = p_join(st_get("app_root", "."), "projects")
if !proj_create(dir, "SoulSymphonyZH", 0.0, 1280.0, 720.0) { return false }
plat_delete(p_join(proj_root(), "scenes/level.lscene"))
proj_remove_scene("scenes/level.lscene")
st_set("proj_title", "灵魂交响乐 Soul Symphony (2019)")
st_set("proj_author", "Ling Lin")
bind warps = ""
bind lv = ssz_levels()
bind i = 0.0
while i < len(lv) {
if i > 0.0 { bind warps = warps + "," }
bind warps = warps + ssz_scene_of(list_get(lv, i))
bind i = i + 1.0
}
# title
sc_new("Title", "3d")
st_lclear("undo")
st_lclear("redo")
sel_clear()
sc_set("bg", c_rgb(0.0, 0.0, 0.0))
sc_set("ex", "mode=soul;screen=title;next=scenes/hub.lscene;blur=0.4")
save_scene(p_join(proj_root(), "scenes/title.lscene"))
# levels
bind i = 0.0
while i < len(lv) {
bind name = list_get(lv, i)
bind title = name
if name == "level00" { bind title = "Hub (level00)" }
sc_new(title, "3d")
st_lclear("undo")
st_lclear("redo")
sel_clear()
sc_set("bg", c_rgb(0.0, 0.0, 0.0))
bind ex = "mode=soul;level=" + name + ";warps=" + warps + ";blur=0.55"
if name == "level00" { bind ex = ex + ";hub=1" }
sc_set("ex", ex)
bind lvn = nd_add("empty", "Level " + name, 0.0)
nd_set(lvn, "tag", "level")
nd_set(lvn, "ex", "src=assets/levels/" + name + ".ltm")
save_scene(p_join(proj_root(), ssz_scene_of(name)))
bind i = i + 1.0
}
st_set("proj_start", "scenes/title.lscene")
proj_save()
gen_write_all()
assets_mark_stale()
open_scene(p_join(proj_root(), "scenes/hub.lscene"))
status("Built Soul Symphony (2019): title, hub and 6 levels. F5 plays from the title.")
return true
}