Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fd513f3bdb | ||
|
|
ebb15d32be | ||
|
|
53174f11f9 | ||
|
|
da923ae421 | ||
|
|
ef496bd971 | ||
|
|
3db0ed4457 | ||
|
|
0c6bebe8dc | ||
|
|
a8ccb3fae1 | ||
|
|
774874deb0 | ||
|
|
24afdef7cd | ||
|
|
f29cc7318a | ||
|
|
7a859c1e44 | ||
|
|
822bed0748 | ||
|
|
d7db02bafd | ||
|
|
b55473ae0b | ||
|
|
35d3b359eb | ||
|
|
b81a453b32 | ||
|
|
7a1261202c | ||
|
|
f0c118e6fa | ||
|
|
bc5a6abf53 | ||
|
|
4daeb0e15c | ||
|
|
b6403e8de5 | ||
|
|
0e8a195ddd | ||
|
|
80140434e7 | ||
|
|
fd3da8cb99 | ||
|
|
885af944c5 | ||
|
|
2e41815d3c | ||
|
|
125cdd0c74 | ||
|
|
5f206e03c8 | ||
|
|
fa77f4cee3 | ||
|
|
a02706ac8b | ||
|
|
2aef925286 | ||
|
|
8eba52353b | ||
|
|
15a4016407 | ||
|
|
2272d3a37a | ||
|
|
3a42c7958a | ||
|
|
dacc4a9909 | ||
|
|
771ff1f6cd | ||
|
|
24609d6c5c | ||
|
|
9d0dde38f9 | ||
|
|
b76a3eb1f3 | ||
|
|
a779533d61 | ||
|
|
bc6ad6f718 | ||
|
|
9bd5e7db33 | ||
|
|
5cc8e349a5 | ||
|
|
0046d526b0 | ||
|
|
fc9947b87f | ||
|
|
35aaa6c519 | ||
|
|
3195746189 | ||
|
|
d1d5679d14 | ||
|
|
ebb161f1f5 | ||
|
|
68be8e55ec | ||
|
|
5ed963b53d | ||
|
|
5e5ff835a9 | ||
|
|
f5d251c33b | ||
|
|
d186f66c2c | ||
|
|
da361a1452 | ||
|
|
a43ae21014 | ||
|
|
6749780356 | ||
|
|
1c49248b72 | ||
|
|
63a03ae632 | ||
|
|
a8bff31a7c | ||
|
|
793e87a203 | ||
|
|
642e0653b2 | ||
|
|
d26abcb9d5 | ||
|
|
a358d8ddbd | ||
|
|
f7c4d62234 | ||
|
|
06a49e09ba | ||
|
|
629baaaec3 | ||
|
|
932d195eb0 | ||
|
|
3e31a88f78 | ||
|
|
cba46642c6 | ||
|
|
8c84892250 | ||
|
|
d14da0e61f | ||
|
|
8bdc994b75 | ||
|
|
6a70d6de9f | ||
|
|
2523661c8f | ||
|
|
fa27308897 | ||
|
|
e58eb10d6d | ||
|
|
a29ea641ab | ||
|
|
28ff425c89 | ||
|
|
e8418f89e0 | ||
|
|
9ca09484a6 | ||
|
|
9291ef6572 | ||
|
|
6f8ab74d6b | ||
|
|
881e0ea1f6 | ||
|
|
6a6a1a52c7 | ||
|
|
62f4b857ef | ||
|
|
3b378e2b29 | ||
|
|
041447eaa4 | ||
|
|
a6b2b02930 | ||
|
|
b7811180ba | ||
|
|
2cbf1bb6e0 | ||
|
|
8890fa9e1f | ||
|
|
23f7cb03a6 | ||
|
|
486a440668 | ||
|
|
a717411edd | ||
|
|
5e862ceadc | ||
|
|
78e164fce4 | ||
|
|
c13b11c501 | ||
|
|
8921b9fd0c | ||
|
|
1d9fea28fe | ||
|
|
d0d5cb0e66 | ||
|
|
e25ccd02fd | ||
|
|
3635cebf25 | ||
|
|
cfbcdc236b | ||
|
|
7871d3930e | ||
|
|
932b457725 | ||
|
|
e9f99a0542 | ||
|
|
0d58da536c | ||
|
|
583acb9053 | ||
|
|
babb111b6f | ||
|
|
866e133aa9 | ||
|
|
170521aba6 | ||
|
|
c8882a3f6e | ||
|
|
5fce52e0ad | ||
|
|
0b708f1515 | ||
|
|
6e99fd0a8b | ||
|
|
1243b457be | ||
|
|
c910a16834 | ||
|
|
0ec1a2548a | ||
|
|
4ea8ab7b6d | ||
|
|
05465b791e | ||
|
|
9949096fba |
No files matched your search
@@ -8,8 +8,8 @@ dist/
|
|||||||
*.dylib
|
*.dylib
|
||||||
*.dll
|
*.dll
|
||||||
*.exe
|
*.exe
|
||||||
aee_2026
|
aee_arcade
|
||||||
_aee_2026
|
_aee_arcade
|
||||||
.vscode/
|
.vscode/
|
||||||
.idea/
|
.idea/
|
||||||
.cache/
|
.cache/
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
project(aee_2026 VERSION 0.1.0 LANGUAGES CXX)
|
project(aee_arcade VERSION 0.1.0 LANGUAGES CXX)
|
||||||
|
|
||||||
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||||
set(CMAKE_BUILD_TYPE Debug CACHE STRING "" FORCE)
|
set(CMAKE_BUILD_TYPE Debug CACHE STRING "" FORCE)
|
||||||
@@ -52,6 +52,7 @@ set(ENTITY_SOURCES_BASE
|
|||||||
source/game/entities/concrete/floor_trap.cpp
|
source/game/entities/concrete/floor_trap.cpp
|
||||||
source/game/entities/concrete/hole.cpp
|
source/game/entities/concrete/hole.cpp
|
||||||
source/game/entities/concrete/dust.cpp
|
source/game/entities/concrete/dust.cpp
|
||||||
|
source/game/entities/concrete/solid_props.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
# Entitats que criden directament símbols de Player (com WhipAttack via
|
# Entitats que criden directament símbols de Player (com WhipAttack via
|
||||||
@@ -64,6 +65,7 @@ set(ENTITY_SOURCES
|
|||||||
set(APP_SOURCES
|
set(APP_SOURCES
|
||||||
source/main.cpp
|
source/main.cpp
|
||||||
source/core/system/director.cpp
|
source/core/system/director.cpp
|
||||||
|
source/core/system/relaunch.cpp
|
||||||
source/core/audio/audio.cpp
|
source/core/audio/audio.cpp
|
||||||
source/core/audio/audio_adapter.cpp
|
source/core/audio/audio_adapter.cpp
|
||||||
source/core/audio/audio_effects.cpp
|
source/core/audio/audio_effects.cpp
|
||||||
@@ -73,13 +75,13 @@ set(APP_SOURCES
|
|||||||
source/core/ui/ui_config.cpp
|
source/core/ui/ui_config.cpp
|
||||||
source/core/input/key_config.cpp
|
source/core/input/key_config.cpp
|
||||||
source/core/input/global_inputs.cpp
|
source/core/input/global_inputs.cpp
|
||||||
source/core/input/input_state.cpp
|
|
||||||
source/core/input/gamepad_manager.cpp
|
source/core/input/gamepad_manager.cpp
|
||||||
source/core/input/gamepad_bindings.cpp
|
source/core/input/gamepad_bindings.cpp
|
||||||
source/core/input/define_buttons.cpp
|
source/core/input/define_buttons.cpp
|
||||||
source/core/input/mouse.cpp
|
source/core/input/mouse.cpp
|
||||||
source/core/rendering/screen.cpp
|
source/core/rendering/screen.cpp
|
||||||
source/core/rendering/canvas.cpp
|
source/core/rendering/canvas.cpp
|
||||||
|
source/core/rendering/lighting.cpp
|
||||||
source/core/rendering/notifier.cpp
|
source/core/rendering/notifier.cpp
|
||||||
source/core/rendering/render_info.cpp
|
source/core/rendering/render_info.cpp
|
||||||
source/core/rendering/gif.cpp
|
source/core/rendering/gif.cpp
|
||||||
@@ -94,6 +96,7 @@ set(APP_SOURCES
|
|||||||
source/core/rendering/sprite/animated_sprite_parser.cpp
|
source/core/rendering/sprite/animated_sprite_parser.cpp
|
||||||
source/core/rendering/effects/heat_haze.cpp
|
source/core/rendering/effects/heat_haze.cpp
|
||||||
source/core/rendering/effects/scan_reveal.cpp
|
source/core/rendering/effects/scan_reveal.cpp
|
||||||
|
source/core/rendering/effects/shadow.cpp
|
||||||
source/core/rendering/transitions/mosaic.cpp
|
source/core/rendering/transitions/mosaic.cpp
|
||||||
source/core/rendering/transitions/fade_to_black.cpp
|
source/core/rendering/transitions/fade_to_black.cpp
|
||||||
source/core/rendering/sdl3gpu/sdl3gpu_shader.cpp
|
source/core/rendering/sdl3gpu/sdl3gpu_shader.cpp
|
||||||
@@ -104,18 +107,22 @@ set(APP_SOURCES
|
|||||||
source/core/resources/resource_pack.cpp
|
source/core/resources/resource_pack.cpp
|
||||||
source/core/resources/palette_loader.cpp
|
source/core/resources/palette_loader.cpp
|
||||||
source/utils/easing.cpp
|
source/utils/easing.cpp
|
||||||
|
source/utils/log.cpp
|
||||||
source/utils/utils.cpp
|
source/utils/utils.cpp
|
||||||
source/game/debug_config.cpp
|
source/game/debug_config.cpp
|
||||||
|
source/game/gameplay_config.cpp
|
||||||
source/game/options.cpp
|
source/game/options.cpp
|
||||||
source/game/options_apply.cpp
|
source/game/options_apply.cpp
|
||||||
source/game/ui/service_menu.cpp
|
source/game/ui/service_menu.cpp
|
||||||
source/game/ui/hud.cpp
|
source/game/ui/hud.cpp
|
||||||
source/game/scenes/placeholder_input.cpp
|
source/game/scenes/placeholder_input.cpp
|
||||||
|
source/game/scenes/start_input.cpp
|
||||||
source/game/scenes/logo_scene.cpp
|
source/game/scenes/logo_scene.cpp
|
||||||
source/game/scenes/title_scene.cpp
|
source/game/scenes/title_scene.cpp
|
||||||
source/game/scenes/intro_scene.cpp
|
source/game/scenes/intro_scene.cpp
|
||||||
source/game/scenes/game_scene.cpp
|
source/game/scenes/game_scene.cpp
|
||||||
source/game/scenes/room_fsm.cpp
|
source/game/scenes/room_fsm.cpp
|
||||||
|
source/game/scenes/game_over_fsm.cpp
|
||||||
source/game/entities/player.cpp
|
source/game/entities/player.cpp
|
||||||
source/game/map/map.cpp
|
source/game/map/map.cpp
|
||||||
source/game/map/tilemap.cpp
|
source/game/map/tilemap.cpp
|
||||||
@@ -124,6 +131,7 @@ set(APP_SOURCES
|
|||||||
# al TilemapWriter. Només Debug.
|
# al TilemapWriter. Només Debug.
|
||||||
source/game/map/map_writer.cpp
|
source/game/map/map_writer.cpp
|
||||||
source/game/map/paint_layer.cpp
|
source/game/map/paint_layer.cpp
|
||||||
|
source/game/map/room_yaml.cpp
|
||||||
source/game/levels/level_manager.cpp
|
source/game/levels/level_manager.cpp
|
||||||
# Mòdul editor (només activa contingut en Debug via `#ifdef _DEBUG`).
|
# Mòdul editor (només activa contingut en Debug via `#ifdef _DEBUG`).
|
||||||
# En Release els fitxers compilen a object buit i l'enllaçador no
|
# En Release els fitxers compilen a object buit i l'enllaçador no
|
||||||
@@ -197,7 +205,7 @@ add_executable(${PROJECT_NAME} ${APP_SOURCES})
|
|||||||
set_source_files_properties(
|
set_source_files_properties(
|
||||||
source/external/stb_image_write_impl.cpp
|
source/external/stb_image_write_impl.cpp
|
||||||
source/external/stb_vorbis_impl.cpp
|
source/external/stb_vorbis_impl.cpp
|
||||||
PROPERTIES COMPILE_OPTIONS "-Wno-missing-field-initializers;-Wno-deprecated-declarations"
|
PROPERTIES COMPILE_OPTIONS "-Wno-missing-field-initializers;-Wno-deprecated-declarations;-Wno-tautological-compare"
|
||||||
)
|
)
|
||||||
|
|
||||||
if(NOT APPLE AND GLSLC_EXE)
|
if(NOT APPLE AND GLSLC_EXE)
|
||||||
@@ -218,8 +226,10 @@ target_link_libraries(${PROJECT_NAME} PRIVATE SDL3::SDL3)
|
|||||||
add_executable(pack_resources EXCLUDE_FROM_ALL
|
add_executable(pack_resources EXCLUDE_FROM_ALL
|
||||||
tools/pack_resources/pack_resources.cpp
|
tools/pack_resources/pack_resources.cpp
|
||||||
source/core/resources/resource_pack.cpp
|
source/core/resources/resource_pack.cpp
|
||||||
|
source/utils/log.cpp
|
||||||
)
|
)
|
||||||
target_include_directories(pack_resources PRIVATE "${CMAKE_SOURCE_DIR}/source")
|
target_include_directories(pack_resources PRIVATE "${CMAKE_SOURCE_DIR}/source")
|
||||||
|
target_link_libraries(pack_resources PRIVATE SDL3::SDL3)
|
||||||
target_compile_options(pack_resources PRIVATE -Wall -Wextra -Wpedantic)
|
target_compile_options(pack_resources PRIVATE -Wall -Wextra -Wpedantic)
|
||||||
|
|
||||||
# --- REGENERACIÓ AUTOMÀTICA DE build/resources.pack ---
|
# --- REGENERACIÓ AUTOMÀTICA DE build/resources.pack ---
|
||||||
@@ -361,9 +371,12 @@ if(BUILD_TESTS)
|
|||||||
add_executable(test_entities_smoke
|
add_executable(test_entities_smoke
|
||||||
tests/test_entities_smoke.cpp
|
tests/test_entities_smoke.cpp
|
||||||
tests/hole_player_stubs.cpp
|
tests/hole_player_stubs.cpp
|
||||||
|
tests/audio_cache_stubs.cpp
|
||||||
source/core/resources/resource_helper.cpp
|
source/core/resources/resource_helper.cpp
|
||||||
source/core/resources/resource_pack.cpp
|
source/core/resources/resource_pack.cpp
|
||||||
source/game/map/map.cpp
|
source/game/map/map.cpp
|
||||||
|
source/game/map/room_yaml.cpp
|
||||||
|
source/utils/log.cpp
|
||||||
${ENTITY_SOURCES_BASE}
|
${ENTITY_SOURCES_BASE}
|
||||||
)
|
)
|
||||||
target_include_directories(test_entities_smoke PRIVATE
|
target_include_directories(test_entities_smoke PRIVATE
|
||||||
@@ -389,9 +402,13 @@ if(BUILD_TESTS)
|
|||||||
tests/test_whip_attack.cpp
|
tests/test_whip_attack.cpp
|
||||||
tests/whip_attack_player_stubs.cpp
|
tests/whip_attack_player_stubs.cpp
|
||||||
tests/hole_player_stubs.cpp
|
tests/hole_player_stubs.cpp
|
||||||
|
tests/audio_cache_stubs.cpp
|
||||||
source/core/resources/resource_helper.cpp
|
source/core/resources/resource_helper.cpp
|
||||||
source/core/resources/resource_pack.cpp
|
source/core/resources/resource_pack.cpp
|
||||||
|
source/game/gameplay_config.cpp
|
||||||
source/game/map/map.cpp
|
source/game/map/map.cpp
|
||||||
|
source/game/map/room_yaml.cpp
|
||||||
|
source/utils/log.cpp
|
||||||
${ENTITY_SOURCES_BASE}
|
${ENTITY_SOURCES_BASE}
|
||||||
source/game/entities/concrete/whip_attack.cpp
|
source/game/entities/concrete/whip_attack.cpp
|
||||||
)
|
)
|
||||||
@@ -416,6 +433,7 @@ if(BUILD_TESTS)
|
|||||||
source/core/input/key_config.cpp
|
source/core/input/key_config.cpp
|
||||||
source/core/resources/resource_helper.cpp
|
source/core/resources/resource_helper.cpp
|
||||||
source/core/resources/resource_pack.cpp
|
source/core/resources/resource_pack.cpp
|
||||||
|
source/utils/log.cpp
|
||||||
)
|
)
|
||||||
target_include_directories(test_scene_flow PRIVATE
|
target_include_directories(test_scene_flow PRIVATE
|
||||||
"${CMAKE_SOURCE_DIR}/source"
|
"${CMAKE_SOURCE_DIR}/source"
|
||||||
@@ -455,6 +473,7 @@ if(BUILD_TESTS)
|
|||||||
source/core/resources/resource_helper.cpp
|
source/core/resources/resource_helper.cpp
|
||||||
source/core/resources/resource_pack.cpp
|
source/core/resources/resource_pack.cpp
|
||||||
source/utils/easing.cpp
|
source/utils/easing.cpp
|
||||||
|
source/utils/log.cpp
|
||||||
)
|
)
|
||||||
target_include_directories(test_game_fsm PRIVATE
|
target_include_directories(test_game_fsm PRIVATE
|
||||||
"${CMAKE_SOURCE_DIR}/source"
|
"${CMAKE_SOURCE_DIR}/source"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
PROJECT := aee_2026
|
PROJECT := aee_arcade
|
||||||
BUILDDIR := build
|
BUILDDIR := build
|
||||||
|
|
||||||
# Detecció de plataforma. En Windows CMake defaulteja a "NMake Makefiles"
|
# Detecció de plataforma. En Windows CMake defaulteja a "NMake Makefiles"
|
||||||
@@ -27,7 +27,14 @@ ifeq ($(OS),Windows_NT)
|
|||||||
else
|
else
|
||||||
NULDEV := /dev/null
|
NULDEV := /dev/null
|
||||||
JOBS ?= $(shell nproc 2>/dev/null || echo 4)
|
JOBS ?= $(shell nproc 2>/dev/null || echo 4)
|
||||||
|
# Si Ninja està al PATH, l'usem (més ràpid i paral·lelitza millor).
|
||||||
|
# Si no, deixem que CMake usi el generador per defecte (Unix Makefiles).
|
||||||
|
HAS_NINJA := $(shell ninja --version 2>/dev/null)
|
||||||
|
ifneq ($(HAS_NINJA),)
|
||||||
|
CMAKE_GEN := -G "Ninja"
|
||||||
|
else
|
||||||
CMAKE_GEN :=
|
CMAKE_GEN :=
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# VERSION (única font de veritat: source/utils/defines.hpp).
|
# VERSION (única font de veritat: source/utils/defines.hpp).
|
||||||
@@ -84,7 +91,7 @@ else
|
|||||||
MKDIR := mkdir -p
|
MKDIR := mkdir -p
|
||||||
endif
|
endif
|
||||||
|
|
||||||
.PHONY: all debug release _windows_release _macos_release _linux_release run run-debug clean rebuild show-version pack controllerdb format format-check tidy tidy-fix cppcheck hooks-install help
|
.PHONY: all debug release _windows-release _macos-release _linux-release run run-debug clean rebuild show-version pack controllerdb format format-check tidy tidy-fix cppcheck hooks-install help
|
||||||
|
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# COMPILACIÓ
|
# COMPILACIÓ
|
||||||
@@ -115,19 +122,19 @@ run-debug: debug
|
|||||||
# resultat a $(DIST_DIR)/.
|
# resultat a $(DIST_DIR)/.
|
||||||
release:
|
release:
|
||||||
ifeq ($(OS),Windows_NT)
|
ifeq ($(OS),Windows_NT)
|
||||||
@"$(MAKE)" _windows_release
|
@"$(MAKE)" _windows-release
|
||||||
else
|
else
|
||||||
ifeq ($(UNAME_S),Darwin)
|
ifeq ($(UNAME_S),Darwin)
|
||||||
@$(MAKE) _macos_release
|
@$(MAKE) _macos-release
|
||||||
else
|
else
|
||||||
@$(MAKE) _linux_release
|
@$(MAKE) _linux-release
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# RELEASE — Linux (.tar.gz)
|
# RELEASE — Linux (.tar.gz)
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
_linux_release:
|
_linux-release:
|
||||||
@echo "Creando release para Linux - Version: $(VERSION)"
|
@echo "Creando release para Linux - Version: $(VERSION)"
|
||||||
|
|
||||||
# Compila Release (genera shaders, resources.pack i binari)
|
# Compila Release (genera shaders, resources.pack i binari)
|
||||||
@@ -158,7 +165,7 @@ _linux_release:
|
|||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# RELEASE — Windows (.zip)
|
# RELEASE — Windows (.zip)
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
_windows_release:
|
_windows-release:
|
||||||
@echo off
|
@echo off
|
||||||
@echo Creando release para Windows - Version: $(VERSION)
|
@echo Creando release para Windows - Version: $(VERSION)
|
||||||
|
|
||||||
@@ -191,7 +198,7 @@ _windows_release:
|
|||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# RELEASE — macOS (.dmg per Intel + Apple Silicon)
|
# RELEASE — macOS (.dmg per Intel + Apple Silicon)
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
_macos_release:
|
_macos-release:
|
||||||
@echo "Creando release para macOS - Version: $(VERSION)"
|
@echo "Creando release para macOS - Version: $(VERSION)"
|
||||||
|
|
||||||
# Verificar/instal·lar create-dmg si cal
|
# Verificar/instal·lar create-dmg si cal
|
||||||
@@ -293,8 +300,14 @@ rebuild: clean all
|
|||||||
# Empaqueta data/ a $(BUILDDIR)/resources.pack (format AE26). Força un rebuild
|
# Empaqueta data/ a $(BUILDDIR)/resources.pack (format AE26). Força un rebuild
|
||||||
# del pack encara que res no hagi canviat dins data/. L'empaquetat també es fa
|
# del pack encara que res no hagi canviat dins data/. L'empaquetat també es fa
|
||||||
# automàticament a cada `make`/`make debug` via el target CMake `resource_pack`.
|
# automàticament a cada `make`/`make debug` via el target CMake `resource_pack`.
|
||||||
|
#
|
||||||
|
# NO passem `-DCMAKE_BUILD_TYPE`: així respectem el tipus ja configurat al
|
||||||
|
# `CMakeCache.txt` (Debug si vens de `make debug`, Release si vens de
|
||||||
|
# `make release`). Si forcéssim Release ací, el següent build de debug
|
||||||
|
# invalidaria la cache i recompilaria-ho tot. El binari `pack_resources`
|
||||||
|
# és una utilitat petita on el build type és irrellevant.
|
||||||
pack:
|
pack:
|
||||||
@cmake -S . -B $(BUILDDIR) $(CMAKE_GEN) -DCMAKE_BUILD_TYPE=Release $(CMAKE_DEFS)
|
@cmake -S . -B $(BUILDDIR) $(CMAKE_GEN) $(CMAKE_DEFS)
|
||||||
@cmake --build $(BUILDDIR) --target pack_resources
|
@cmake --build $(BUILDDIR) --target pack_resources
|
||||||
@./$(BUILDDIR)/pack_resources data $(BUILDDIR)/resources.pack
|
@./$(BUILDDIR)/pack_resources data $(BUILDDIR)/resources.pack
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,6 @@ picker:
|
|||||||
|
|
||||||
# Colors ARGB en hex. Accepta enter (0xFF2244FF) o cadena ("#FF2244FF").
|
# Colors ARGB en hex. Accepta enter (0xFF2244FF) o cadena ("#FF2244FF").
|
||||||
colors:
|
colors:
|
||||||
border: "0xFF2244FF" # vora 1 px que envolta canvas i picker
|
border: "0xFF6A86C8" # vora 1 px que envolta canvas i picker (blau suau)
|
||||||
picker_bg: "0xFF101824" # fons del picker
|
picker_bg: "0xFFC8C0D8" # fons del picker (lavanda clara)
|
||||||
picker_hover: "0xFFFFFFFF" # vora 1 px del tile sota el cursor
|
picker_hover: "0xFFFFFFFF" # vora 1 px del tile sota el cursor
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# AEE 2026 — Tecles d'UI (Global Inputs)
|
# AEE ARCADE — Tecles d'UI (Global Inputs)
|
||||||
#
|
#
|
||||||
# Mapeig id → codi SDL (el que reconeix SDL_GetScancodeFromName). Les tecles
|
# Mapeig id → codi SDL (el que reconeix SDL_GetScancodeFromName). Les tecles
|
||||||
# de moviment del jugador viuen a part (Defaults::KeysGame); ací només hi ha
|
# de moviment del jugador viuen a part (Defaults::KeysGame); ací només hi ha
|
||||||
@@ -35,9 +35,6 @@ keys:
|
|||||||
- id: toggle_render_info
|
- id: toggle_render_info
|
||||||
code: "F10"
|
code: "F10"
|
||||||
desc: "Cicle de l'overlay de debug: apagat / dalt / baix"
|
desc: "Cicle de l'overlay de debug: apagat / dalt / baix"
|
||||||
- id: pause
|
|
||||||
code: "F11"
|
|
||||||
desc: "Pausa el joc (o botó START del mando)"
|
|
||||||
- id: menu_toggle
|
- id: menu_toggle
|
||||||
code: "F12"
|
code: "F12"
|
||||||
desc: "Obri / tanca el menú de servei"
|
desc: "Obri / tanca el menú de servei"
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
# Configuració global del sistema d'il·luminació.
|
||||||
|
#
|
||||||
|
# Cada llum emissora (player, torxa, mòmia, ...) té un únic paràmetre
|
||||||
|
# propi: el radi en píxels. La forma de la llum dins d'aquest radi
|
||||||
|
# (els tres anells del gradient) viu en aquest fitxer perquè és una
|
||||||
|
# decisió de "feel" comuna a totes les entitats — així pots tocar la
|
||||||
|
# corba aquí sense haver de modificar 10 YAMLs.
|
||||||
|
#
|
||||||
|
# Forma del gradient (centre → vora):
|
||||||
|
# 0..inner_ratio del radi → inner_intensity (zona totalment il·luminada)
|
||||||
|
# inner_ratio..mid_ratio → mid_intensity (anell mig)
|
||||||
|
# mid_ratio..1.0 → outer_intensity (anell exterior)
|
||||||
|
# fora del radi → light_level de la sala
|
||||||
|
#
|
||||||
|
# Hi ha dues corbes paral·leles, una per mode, perquè la mateixa escala
|
||||||
|
# 0..1 vol dir coses molt diferents:
|
||||||
|
# `gradient` → subtractive: 1.0 = "no fosqueix" el píxel
|
||||||
|
# (l'emissor "trenca" una sala fosca).
|
||||||
|
# `gradient_additive` → additive: 1.0 = "afegeix el color sencer"
|
||||||
|
# (satura). Valors molt més baixos donen un
|
||||||
|
# halo cromàtic subtil sobre una sala normal.
|
||||||
|
gradient:
|
||||||
|
inner_ratio: 0.5
|
||||||
|
mid_ratio: 0.85
|
||||||
|
inner_intensity: 1.0
|
||||||
|
mid_intensity: 0.8
|
||||||
|
outer_intensity: 0.6
|
||||||
|
|
||||||
|
# Corba del mode additive. Valors petits a propòsit: només volem un
|
||||||
|
# toc de tint cromàtic prop de l'emissor — fora del nucli, la sala
|
||||||
|
# original ha de quedar pràcticament intacta. Si pugeu massa l'inner,
|
||||||
|
# els colors de l'emissor "inunden" la sala (additiu satura ràpid).
|
||||||
|
gradient_additive:
|
||||||
|
inner_ratio: 0.5
|
||||||
|
mid_ratio: 0.85
|
||||||
|
inner_intensity: 0.15
|
||||||
|
mid_intensity: 0.10
|
||||||
|
outer_intensity: 0.05
|
||||||
|
|
||||||
|
# Modulació del radi quan una entitat declara `flicker: true` al seu
|
||||||
|
# bloc `light:`. El radi efectiu per frame és:
|
||||||
|
# r_eff = r_base + (r_amp1·r_base)·sin(2π·f1·t + φ1) + (r_amp2·r_base)·sin(2π·f2·t + φ2)
|
||||||
|
# on (φ1, φ2) es deriven de la seed de l'emissor per a que cada
|
||||||
|
# antorxa balancegi en una fase diferent (sense estat per emissor).
|
||||||
|
# Les amplituds són **ràtios** sobre el radi base: així el feel del
|
||||||
|
# flicker és independent del radi (una torxa de 24 px oscil·la el
|
||||||
|
# mateix % que una de 40 px). Combinant dues sinusoides amb freqüències
|
||||||
|
# incommensurables s'obté un patró "fluid" que el ull llegeix com a
|
||||||
|
# foc; pujar `noise_*` aporta més inquietud, baixar-ho fa la flama
|
||||||
|
# més serena. Aquests són els defaults globals; cada tipus d'entitat
|
||||||
|
# (o cada spawn / sala) pot sobreescriure'ls al seu `light.flicker_params:`.
|
||||||
|
flicker:
|
||||||
|
wave_amplitude_ratio: 0.05 # 5% del radi (per a radi 40 → ±2 px, feel actual)
|
||||||
|
wave_frequency_hz: 3.0
|
||||||
|
noise_amplitude_ratio: 0.025 # 2.5% (per a radi 40 → ±1 px, feel actual)
|
||||||
|
noise_frequency_hz: 7.0
|
||||||
@@ -0,0 +1,164 @@
|
|||||||
|
# Tema de la UI: índexs de paleta, timings, fonts i flags visuals. Tota
|
||||||
|
# clau absent cau al valor compilat a Defaults::UI (veure defaults.hpp).
|
||||||
|
|
||||||
|
colors:
|
||||||
|
render_info_text: 58
|
||||||
|
render_info_shadow: 16
|
||||||
|
canvas_bg: 72
|
||||||
|
notification_text: 232
|
||||||
|
notification_bg: 64
|
||||||
|
exit_text: 71
|
||||||
|
exit_bg: 2
|
||||||
|
hud_bg: 9
|
||||||
|
hud_flash: 63
|
||||||
|
# Rètol de transició de sala (ROOM_INTRO i ROOM_OUTRO). Independents
|
||||||
|
# de notification_* perquè la fase i les notificacions són dos canals
|
||||||
|
# visuals distints: ací pots canviar el color del rètol sense tocar
|
||||||
|
# els missatges del HUD. Comparteix la família del CENTER del HUD
|
||||||
|
# (or sobre marró) perquè "Piràmide N / Sala N" sigui sempre daurat
|
||||||
|
# arreu del joc.
|
||||||
|
room_text: 55 # or brillant (#FFDA00, = hud_center.value)
|
||||||
|
room_text_outline: 10 # marró cremat (#482400, = hud_center.shadow)
|
||||||
|
|
||||||
|
# Tema actiu del menú de servei. Ha de coincidir amb una clau de
|
||||||
|
# `menu_themes`; si manca o no existeix, cada slot cau al default
|
||||||
|
# compilat a Defaults::UI (= tema "classic"). Canviar de tema requereix
|
||||||
|
# reiniciar el joc — la càrrega de paleta es fa només en arrencar.
|
||||||
|
menu_theme: egyptian
|
||||||
|
|
||||||
|
# Conjunts de colors del menú de servei. Cada tema defineix els 7 slots
|
||||||
|
# (sense prefix `menu_` perquè ja som dins del bloc del tema). Si manca
|
||||||
|
# alguna clau dins d'un tema, cau al default compilat. Per afegir un
|
||||||
|
# tema nou, només cal una nova entrada aquí i posar-ne el nom a
|
||||||
|
# `menu_theme`.
|
||||||
|
menu_themes:
|
||||||
|
# Tema històric (defaults compilats). Cian + verd llima + magenta —
|
||||||
|
# paleta arcade clàssica, freda i amb molt contrast.
|
||||||
|
classic:
|
||||||
|
bg: 2 # marró-vermell fosc (#480000)
|
||||||
|
border: 232 # cian brillant (#00B6FF)
|
||||||
|
title: 237 # lavanda (#B6B6FF)
|
||||||
|
title_outline: 64 # navy fosc (#0000AA) — halo fred del títol
|
||||||
|
label: 58 # verd llima (#48FF00)
|
||||||
|
label_outline: 17 # verd molt fosc (#244800) — bord same-family del label
|
||||||
|
value: 232 # cian brillant (#00B6FF) — coincideix amb el border
|
||||||
|
value_outline: 64 # navy fosc (#0000AA) — halo cian
|
||||||
|
cursor: 71 # magenta-vermell (#FF0055)
|
||||||
|
cursor_outline: 1 # granat fosc (#240000) — halo càlid del cursor
|
||||||
|
disabled: 16 # verd fosc (#004800)
|
||||||
|
# Tema "egípci": família or/ambre/marró coherent amb el HUD i el
|
||||||
|
# rètol de transició de sala (room_text). El bg comparteix to amb
|
||||||
|
# `room_text_outline` i `hud_center.shadow` perquè el menú "creixi"
|
||||||
|
# del mateix món visual que el joc.
|
||||||
|
egyptian:
|
||||||
|
bg: 10 # marró cremat (#482400)
|
||||||
|
border: 55 # or brillant (#FFDA00)
|
||||||
|
title: 127 # groc llimona viu (#FFFF55)
|
||||||
|
title_outline: 19 # oliva fosc (#6D4800) — halo càlid del groc
|
||||||
|
label: 47 # ambre (#FFB600)
|
||||||
|
label_outline: 11 # marró (#6D2400) — bord càlid del label
|
||||||
|
value: 191 # crema clar (#FFFFAA)
|
||||||
|
value_outline: 19 # oliva fosc (#6D4800) — recolza el crema
|
||||||
|
cursor: 23 # vermilló (#FF4800)
|
||||||
|
cursor_outline: 9 # marró molt fosc (#240000) — halo profund del cursor
|
||||||
|
disabled: 19 # oliva fosc (#6D4800)
|
||||||
|
|
||||||
|
timings:
|
||||||
|
notification_ms: 4000
|
||||||
|
exit_ms: 4000
|
||||||
|
|
||||||
|
fonts:
|
||||||
|
hud:
|
||||||
|
name: "8bithud"
|
||||||
|
gif: "data/fonts/8bithud.gif"
|
||||||
|
fnt: "data/fonts/8bithud.fnt"
|
||||||
|
kerning: 1
|
||||||
|
placeholder:
|
||||||
|
name: "ari-w9500-condensed-display"
|
||||||
|
gif: "data/fonts/ari-w9500-condensed-display.gif"
|
||||||
|
fnt: "data/fonts/ari-w9500-condensed-display.fnt"
|
||||||
|
kerning: 1
|
||||||
|
# Font del rètol de transició de sala (ROOM_INTRO i ROOM_OUTRO).
|
||||||
|
room_text:
|
||||||
|
name: "CaesarDressing-Regular"
|
||||||
|
gif: "data/fonts/CaesarDressing-Regular.gif"
|
||||||
|
fnt: "data/fonts/CaesarDressing-Regular.fnt"
|
||||||
|
kerning: 1
|
||||||
|
menu_title:
|
||||||
|
name: "ari-w9500-display"
|
||||||
|
gif: "data/fonts/ari-w9500-display.gif"
|
||||||
|
fnt: "data/fonts/ari-w9500-display.fnt"
|
||||||
|
kerning: 0
|
||||||
|
menu_items:
|
||||||
|
name: "ari-w9500-condensed-display"
|
||||||
|
gif: "data/fonts/ari-w9500-condensed-display.gif"
|
||||||
|
fnt: "data/fonts/ari-w9500-condensed-display.fnt"
|
||||||
|
kerning: 0
|
||||||
|
# Copyright de la TITLE: pixel-art estricte (Tiny5-Regular size 5,
|
||||||
|
# caixa 3×6 px) generat amb font-gen. Diferenciada de la `placeholder`
|
||||||
|
# que pinta el "press start" — així la jerarquia tipogràfica del peu
|
||||||
|
# queda neta.
|
||||||
|
copyright:
|
||||||
|
name: "Tiny5-Regular"
|
||||||
|
gif: "data/fonts/Tiny5-Regular.gif"
|
||||||
|
fnt: "data/fonts/Tiny5-Regular.fnt"
|
||||||
|
kerning: 1
|
||||||
|
|
||||||
|
hud:
|
||||||
|
bg_enabled: false
|
||||||
|
entry_ms: 800 # durada de l'animació d'entrada dels tres blocs
|
||||||
|
flash_ms: 250 # durada del flash quan un jugador rep un hit
|
||||||
|
shake_ms: 300 # durada del shake que acompanya el flash
|
||||||
|
# Parpadeig dels prompts inactius ("Polsa start..." / "Espera..."). Un
|
||||||
|
# únic temporitzador global al Hud sincronitza P1 i P2 i no es reinicia
|
||||||
|
# quan el text canvia entre CAN_JOIN i WAIT. cycle<=0 o ratio>=1 →
|
||||||
|
# sempre visible (disable trivial).
|
||||||
|
blink_cycle_ms: 1000 # durada del cicle complet
|
||||||
|
blink_visible_ratio: 0.8 # proporció del cicle visible (0..1)
|
||||||
|
|
||||||
|
# Famílies de color del HUD per bloc. Cada bloc té `label` (to apagat
|
||||||
|
# per etiquetes), `value` (to viu per a la xifra) i `shadow` (to fosc
|
||||||
|
# del mateix matís — efecte embossing 1 px a baix-dreta). Si manca un
|
||||||
|
# camp, cau al default compilat a `Defaults::UI`. El `colors.hud_flash`
|
||||||
|
# és comú a totes tres famílies.
|
||||||
|
hud_p1:
|
||||||
|
label: 7 # vermell pur
|
||||||
|
value: 183 # crema-préssec
|
||||||
|
shadow: 2 # vermell fosc
|
||||||
|
hud_center:
|
||||||
|
label: 29 # ambre cremat
|
||||||
|
value: 55 # or brillant
|
||||||
|
shadow: 10 # marró cremat
|
||||||
|
hud_p2:
|
||||||
|
label: 248 # cian pur
|
||||||
|
value: 253 # blau pàl·lid
|
||||||
|
shadow: 64 # blau marí
|
||||||
|
|
||||||
|
# Geometria del popup superior (Notifier). En píxels del canvas, llevat de
|
||||||
|
# slide_ms (durada en ms de l'animació d'entrada i d'eixida; constant
|
||||||
|
# independentment de la mida de la caixa). El padding vertical és asimètric a
|
||||||
|
# propòsit: padding_top > padding_bottom puja una mica el text dins la caixa.
|
||||||
|
# Corbes disponibles: linear, outQuad, inQuad, inOutQuad, outCubic, inCubic.
|
||||||
|
notifier:
|
||||||
|
padding_h: 6
|
||||||
|
padding_top: 4
|
||||||
|
padding_bottom: 3
|
||||||
|
line_gap: 1
|
||||||
|
margin_top: 3
|
||||||
|
border_px: 1
|
||||||
|
slide_ms: 300
|
||||||
|
slide_in_curve: outCubic
|
||||||
|
slide_out_curve: inCubic
|
||||||
|
|
||||||
|
# Sons del menú de servei. Els fitxers viuen a data/audio/sounds/. SELECT
|
||||||
|
# acompanya navegació (amunt/avall) i back; ACCEPT acompanya modificació
|
||||||
|
# d'opció (esquerra/dreta/retorn) o entrada a un submenú.
|
||||||
|
sounds:
|
||||||
|
menu_select: "menu_select.wav"
|
||||||
|
menu_accept: "menu_accept.wav"
|
||||||
|
# Disparat quan un jugador prem START a la TITLE (primera pulsació o
|
||||||
|
# la del segon jugador dins de la finestra de STARTING).
|
||||||
|
player_start: "player_start.wav"
|
||||||
|
# Soroll/scratch sincronitzat amb la fase SCAN de LogoScene (scanline
|
||||||
|
# reveal). Es dispara al constructor de l'escena.
|
||||||
|
logo_glitch: "glitch.wav"
|
||||||
|
After Width: | Height: | Size: 805 B |
@@ -0,0 +1,22 @@
|
|||||||
|
name: column
|
||||||
|
type: decoration
|
||||||
|
editable: true
|
||||||
|
# Sub-picker de frames a l'editor: 6 variants (atlas 2×3 de sub-sprites 16×32).
|
||||||
|
editable_variants: true
|
||||||
|
sprite:
|
||||||
|
path: column.gif
|
||||||
|
size: [16, 32]
|
||||||
|
# Ancoratge "feet": el tile [col, row] del spawn és la base de la columna.
|
||||||
|
# El sprite de 16×32 sobresurt 16 px cap amunt sense afectar col·lisió ni
|
||||||
|
# z-order (la caixa lògica és el tile inferior).
|
||||||
|
anchor: feet
|
||||||
|
tile_size: [1, 1]
|
||||||
|
collision:
|
||||||
|
size: [16, 16]
|
||||||
|
# Mur infranquejable al salt: el jugador no pot passar pel damunt.
|
||||||
|
height: 999
|
||||||
|
flags:
|
||||||
|
collides: true
|
||||||
|
interactable: false
|
||||||
|
animations:
|
||||||
|
default: { frames: [0], frame_ms: 1000, loop: false }
|
||||||
@@ -21,9 +21,9 @@ flags:
|
|||||||
collides: true
|
collides: true
|
||||||
interactable: true
|
interactable: true
|
||||||
animations:
|
animations:
|
||||||
closed: { frames: [1], fps: 1, loop: true }
|
closed: { frames: [1], frame_ms: 1000, loop: true }
|
||||||
opening: { frames: [0], fps: 6, loop: false }
|
opening: { frames: [0], frame_ms: 167, loop: false }
|
||||||
open: { frames: [0], fps: 1, loop: true }
|
open: { frames: [0], frame_ms: 1000, loop: true }
|
||||||
behaviour:
|
behaviour:
|
||||||
states: [CLOSED, OPENING, OPEN]
|
states: [CLOSED, OPENING, OPEN]
|
||||||
initial_state: CLOSED
|
initial_state: CLOSED
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 306 B After Width: | Height: | Size: 303 B |
@@ -16,7 +16,7 @@ flags:
|
|||||||
# apropiada via `setVariant` abans del primer tick.
|
# apropiada via `setVariant` abans del primer tick.
|
||||||
# jump: frames 0..6 (7 frames) → reproduït al despegue.
|
# jump: frames 0..6 (7 frames) → reproduït al despegue.
|
||||||
# land: frames 7..12 (6 frames) → reproduït a l'aterratge.
|
# land: frames 7..12 (6 frames) → reproduït a l'aterratge.
|
||||||
# fps: 10 = 100 ms per frame.
|
# frame_ms: 67 ≈ 15 fps (1000 / 67 ≈ 14.9 fps).
|
||||||
animations:
|
animations:
|
||||||
jump: { frames: [0, 1, 2, 3, 4, 5, 6], fps: 15, loop: false }
|
jump: { frames: [0, 1, 2, 3, 4, 5, 6], frame_ms: 67, loop: false }
|
||||||
land: { frames: [7, 8, 9, 10, 11, 12], fps: 15, loop: false }
|
land: { frames: [7, 8, 9, 10, 11, 12], frame_ms: 67, loop: false }
|
||||||
@@ -13,8 +13,8 @@ flags:
|
|||||||
collides: false
|
collides: false
|
||||||
interactable: false
|
interactable: false
|
||||||
animations:
|
animations:
|
||||||
inactive: { frames: [0], fps: 1, loop: true }
|
inactive: { frames: [0], frame_ms: 1000, loop: true }
|
||||||
active: { frames: [0], fps: 6, loop: true }
|
active: { frames: [0], frame_ms: 167, loop: true }
|
||||||
cycle:
|
cycle:
|
||||||
active_duration: 0.3
|
active_duration: 0.3
|
||||||
inactive_duration: 2.0
|
inactive_duration: 2.0
|
||||||
|
|||||||
@@ -22,6 +22,6 @@ flags:
|
|||||||
# lectura genèrica de flags.
|
# lectura genèrica de flags.
|
||||||
triggers_on_overlap: true
|
triggers_on_overlap: true
|
||||||
animations:
|
animations:
|
||||||
idle: { frames: [0], fps: 1, loop: true }
|
idle: { frames: [0], frame_ms: 1000, loop: true }
|
||||||
stats:
|
stats:
|
||||||
damage: 0
|
damage: 0
|
||||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.9 KiB |
@@ -32,14 +32,28 @@ flags:
|
|||||||
# no decideix flip per direcció (només selecciona quina animació mostrar).
|
# no decideix flip per direcció (només selecciona quina animació mostrar).
|
||||||
# La momia no té variants `stand_*` perquè mai no para.
|
# La momia no té variants `stand_*` perquè mai no para.
|
||||||
animations:
|
animations:
|
||||||
walk_south: { frames: [0, 1, 2, 3], fps: 8, loop: true }
|
walk_south: { frames: [0, 1, 2, 3], frame_ms: 125, loop: true }
|
||||||
walk_north: { frames: [4, 5, 6, 7], fps: 8, loop: true }
|
walk_north: { frames: [4, 5, 6, 7], frame_ms: 125, loop: true }
|
||||||
walk_east: { frames: [8, 9, 10, 11], fps: 8, loop: true }
|
walk_east: { frames: [8, 9, 10, 11], frame_ms: 125, loop: true }
|
||||||
walk_west: { frames: [8, 9, 10, 11], fps: 8, loop: true, flip_h: true }
|
walk_west: { frames: [8, 9, 10, 11], frame_ms: 125, loop: true, flip_h: true }
|
||||||
|
# Alçament: els 15 primers frames passen ràpid (125 ms cadascun) i el
|
||||||
|
# darrer aguanta 1 s perquè el jugador pugui veure la mòmia ja alçada
|
||||||
|
# abans que comenci a deambular. `frame_ms` accepta una llista per-frame
|
||||||
|
# que mapeja 1:1 contra `frames`.
|
||||||
|
raise:
|
||||||
|
frames: [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
|
||||||
|
frame_ms: [125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 1000]
|
||||||
|
loop: false
|
||||||
ai:
|
ai:
|
||||||
type: corridor_wanderer
|
type: corridor_wanderer
|
||||||
direction_choice: random
|
direction_choice: random
|
||||||
initial_direction: east
|
initial_direction: east
|
||||||
|
|
||||||
|
# Estat SPAWN: la mòmia s'instancia al pixel_rect_ inicial quan
|
||||||
|
# GameScene crida `spawnPendingActors()` (subfase text-exit de
|
||||||
|
# ROOM_INTRO, fase 4) amb l'animació `raise` activa. La duració del
|
||||||
|
# SPAWN la marca la pròpia animació (no-loop): al `completed()`,
|
||||||
|
# transita a ROAMING i comença a deambular.
|
||||||
stats:
|
stats:
|
||||||
speed: 30
|
speed: 30
|
||||||
damage: 1
|
damage: 1
|
||||||
@@ -58,3 +72,13 @@ hurt:
|
|||||||
duration_ms: 600
|
duration_ms: 600
|
||||||
speed: 60
|
speed: 60
|
||||||
whippable: true
|
whippable: true
|
||||||
|
# So opcional: basename del fitxer dins `data/audio/sounds/`. Es dispara
|
||||||
|
# un sol cop per fuetada quan la mòmia entra a HURT. Si manca, no sona.
|
||||||
|
sound: mummy_hurt.wav
|
||||||
|
|
||||||
|
# Halo tènue al voltant de la mòmia. Radi més curt que el del jugador
|
||||||
|
# perquè el rastre lumínic delati la seva posició sense "il·luminar
|
||||||
|
# la sala" — vol ser una pista visual a la foscor.
|
||||||
|
light:
|
||||||
|
radius: 24
|
||||||
|
flicker: true
|
||||||
@@ -30,20 +30,20 @@ animations:
|
|||||||
stun_east: { frames: [18] }
|
stun_east: { frames: [18] }
|
||||||
stun_west: { frames: [18], flip_h: true }
|
stun_west: { frames: [18], flip_h: true }
|
||||||
|
|
||||||
walk_south: { frames: [0, 1, 2, 3], frame_ms: 100 }
|
walk_south: { frames: [1, 2, 3, 0], frame_ms: 100 }
|
||||||
walk_north: { frames: [4, 5, 6, 7], frame_ms: 100 }
|
walk_north: { frames: [5, 6, 7, 4], frame_ms: 100 }
|
||||||
walk_east: { frames: [8, 9, 10, 11], frame_ms: 100 }
|
walk_east: { frames: [9, 10, 11, 8], frame_ms: 100 }
|
||||||
walk_west: { frames: [8, 9, 10, 11], frame_ms: 100, flip_h: true }
|
walk_west: { frames: [9, 10, 11, 8], frame_ms: 100, flip_h: true }
|
||||||
|
|
||||||
hurt_south: { frames: [0, 1, 2, 3], frame_ms: 100 }
|
hurt_south: { frames: [0, 1, 2, 3], frame_ms: 100 }
|
||||||
hurt_north: { frames: [4, 5, 6, 7], frame_ms: 100 }
|
hurt_north: { frames: [4, 5, 6, 7], frame_ms: 100 }
|
||||||
hurt_east: { frames: [8, 9, 10, 11], frame_ms: 100 }
|
hurt_east: { frames: [8, 9, 10, 11], frame_ms: 100 }
|
||||||
hurt_west: { frames: [8, 9, 10, 11], frame_ms: 100, flip_h: true }
|
hurt_west: { frames: [8, 9, 10, 11], frame_ms: 100, flip_h: true }
|
||||||
|
|
||||||
attack_south: { frames: [20, 21, 22, 23], frame_ms: 50 }
|
attack_south: { frames: [20, 21, 22, 23], frame_ms: 80 }
|
||||||
attack_north: { frames: [24, 25, 26, 27], frame_ms: 50 }
|
attack_north: { frames: [24, 25, 26, 27], frame_ms: 80 }
|
||||||
attack_east: { frames: [28, 29, 30, 31], frame_ms: 50 }
|
attack_east: { frames: [28, 29, 30, 31], frame_ms: 80 }
|
||||||
attack_west: { frames: [28, 29, 30, 31], frame_ms: 50, flip_h: true }
|
attack_west: { frames: [28, 29, 30, 31], frame_ms: 80, flip_h: true }
|
||||||
|
|
||||||
recover_south: { frames: [23] }
|
recover_south: { frames: [23] }
|
||||||
recover_north: { frames: [27] }
|
recover_north: { frames: [27] }
|
||||||
@@ -97,13 +97,10 @@ turn:
|
|||||||
south_to_north: west
|
south_to_north: west
|
||||||
|
|
||||||
# Salt vertical (px de z, no toca la posició al món).
|
# Salt vertical (px de z, no toca la posició al món).
|
||||||
# `shadow_y_offset`: puja la sombra per compensar la franja
|
|
||||||
# transparent sota els peus del sprite.
|
|
||||||
jump:
|
jump:
|
||||||
impulse: 200
|
impulse: 200
|
||||||
gravity: 600
|
gravity: 600
|
||||||
landing_stun_ms: 400
|
landing_stun_ms: 400
|
||||||
shadow_y_offset: 3
|
|
||||||
sound: jump.wav
|
sound: jump.wav
|
||||||
land_sound: land.wav
|
land_sound: land.wav
|
||||||
|
|
||||||
@@ -119,7 +116,7 @@ hurt:
|
|||||||
# recuperació en què la hitbox ja no fa dany.
|
# recuperació en què la hitbox ja no fa dany.
|
||||||
whip:
|
whip:
|
||||||
range_tiles: 3
|
range_tiles: 3
|
||||||
swing_ms: 200
|
swing_ms: 320
|
||||||
cooldown_ms: 200
|
cooldown_ms: 200
|
||||||
damage: 1
|
damage: 1
|
||||||
sound: whip.wav
|
sound: whip.wav
|
||||||
@@ -136,10 +133,18 @@ death:
|
|||||||
# poden ferir ni matar el jugador (els forats sí que el maten — la
|
# poden ferir ni matar el jugador (els forats sí que el maten — la
|
||||||
# caiguda no és dany convencional). Visualment es manifesta amb un
|
# caiguda no és dany convencional). Visualment es manifesta amb un
|
||||||
# parpadeig que alterna la paleta normal del sprite amb la paleta
|
# parpadeig que alterna la paleta normal del sprite amb la paleta
|
||||||
# `palette` (basename de `data/player/<name>.pal`) cada
|
# `palette` (basename de `data/entities/player/<name>.pal`) cada
|
||||||
# `blink_period_ms` ms. Si `duration_ms` és 0 (o el bloc manca), la
|
# `blink_period_ms` ms. Si `duration_ms` és 0 (o el bloc manca), la
|
||||||
# mecànica queda desactivada i el comportament és l'antic.
|
# mecànica queda desactivada i el comportament és l'antic.
|
||||||
immunity:
|
immunity:
|
||||||
duration_ms: 3000
|
duration_ms: 3000
|
||||||
blink_period_ms: 100
|
blink_period_ms: 100
|
||||||
palette: immune
|
palette: morcus_wash
|
||||||
|
|
||||||
|
# Llum emesa pel jugador. `radius` és el radi del cercle de llum
|
||||||
|
# en píxels del canvas; el gradient (3 anells: 1.0 / 0.9 / 0.8) viu
|
||||||
|
# a data/config/lighting.yaml i és compartit per tots els emissors.
|
||||||
|
# Omet el bloc per desactivar la llum d'aquest personatge.
|
||||||
|
light:
|
||||||
|
radius: 64
|
||||||
|
flicker: true
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
JASC-PAL
|
||||||
|
0100
|
||||||
|
16
|
||||||
|
0 0 0 255
|
||||||
|
150 133 88 255
|
||||||
|
253 233 185 255
|
||||||
|
237 215 165 255
|
||||||
|
214 193 145 255
|
||||||
|
255 252 208 255
|
||||||
|
252 234 189 255
|
||||||
|
239 222 176 255
|
||||||
|
175 190 128 255
|
||||||
|
173 175 115 255
|
||||||
|
159 159 104 255
|
||||||
|
246 211 157 255
|
||||||
|
229 192 139 255
|
||||||
|
213 177 127 255
|
||||||
|
243 226 184 255
|
||||||
|
0 0 0 255
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
JASC-PAL
|
||||||
|
0100
|
||||||
|
16
|
||||||
|
0 0 0 255
|
||||||
|
102 118 132 255
|
||||||
|
226 238 247 255
|
||||||
|
206 216 222 255
|
||||||
|
179 190 198 255
|
||||||
|
245 255 255 255
|
||||||
|
223 239 253 255
|
||||||
|
208 224 238 255
|
||||||
|
124 190 178 255
|
||||||
|
125 170 162 255
|
||||||
|
109 151 150 255
|
||||||
|
221 210 210 255
|
||||||
|
200 187 189 255
|
||||||
|
181 169 175 255
|
||||||
|
213 229 247 255
|
||||||
|
0 0 0 255
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
JASC-PAL
|
||||||
|
0100
|
||||||
|
16
|
||||||
|
0 0 0 255
|
||||||
|
190 190 190 255
|
||||||
|
255 255 255 255
|
||||||
|
255 248 239 255
|
||||||
|
239 233 226 255
|
||||||
|
255 255 255 255
|
||||||
|
255 255 255 255
|
||||||
|
254 254 254 255
|
||||||
|
184 244 213 255
|
||||||
|
193 229 202 255
|
||||||
|
184 216 198 255
|
||||||
|
255 242 225 255
|
||||||
|
255 228 213 255
|
||||||
|
251 216 207 255
|
||||||
|
255 255 255 255
|
||||||
|
0 0 0 255
|
||||||
@@ -30,20 +30,20 @@ animations:
|
|||||||
stun_east: { frames: [18] }
|
stun_east: { frames: [18] }
|
||||||
stun_west: { frames: [18], flip_h: true }
|
stun_west: { frames: [18], flip_h: true }
|
||||||
|
|
||||||
walk_south: { frames: [0, 1, 2, 3], frame_ms: 100 }
|
walk_south: { frames: [1, 2, 3, 0], frame_ms: 100 }
|
||||||
walk_north: { frames: [4, 5, 6, 7], frame_ms: 100 }
|
walk_north: { frames: [5, 6, 7, 4], frame_ms: 100 }
|
||||||
walk_east: { frames: [8, 9, 10, 11], frame_ms: 100 }
|
walk_east: { frames: [9, 10, 11, 8], frame_ms: 100 }
|
||||||
walk_west: { frames: [8, 9, 10, 11], frame_ms: 100, flip_h: true }
|
walk_west: { frames: [9, 10, 11, 8], frame_ms: 100, flip_h: true }
|
||||||
|
|
||||||
hurt_south: { frames: [0, 1, 2, 3], frame_ms: 100 }
|
hurt_south: { frames: [0, 1, 2, 3], frame_ms: 100 }
|
||||||
hurt_north: { frames: [4, 5, 6, 7], frame_ms: 100 }
|
hurt_north: { frames: [4, 5, 6, 7], frame_ms: 100 }
|
||||||
hurt_east: { frames: [8, 9, 10, 11], frame_ms: 100 }
|
hurt_east: { frames: [8, 9, 10, 11], frame_ms: 100 }
|
||||||
hurt_west: { frames: [8, 9, 10, 11], frame_ms: 100, flip_h: true }
|
hurt_west: { frames: [8, 9, 10, 11], frame_ms: 100, flip_h: true }
|
||||||
|
|
||||||
attack_south: { frames: [20, 21, 22, 23], frame_ms: 50 }
|
attack_south: { frames: [20, 21, 22, 23], frame_ms: 80 }
|
||||||
attack_north: { frames: [24, 25, 26, 27], frame_ms: 50 }
|
attack_north: { frames: [24, 25, 26, 27], frame_ms: 80 }
|
||||||
attack_east: { frames: [28, 29, 30, 31], frame_ms: 50 }
|
attack_east: { frames: [28, 29, 30, 31], frame_ms: 80 }
|
||||||
attack_west: { frames: [28, 29, 30, 31], frame_ms: 50, flip_h: true }
|
attack_west: { frames: [28, 29, 30, 31], frame_ms: 80, flip_h: true }
|
||||||
|
|
||||||
recover_south: { frames: [23] }
|
recover_south: { frames: [23] }
|
||||||
recover_north: { frames: [27] }
|
recover_north: { frames: [27] }
|
||||||
@@ -97,13 +97,10 @@ turn:
|
|||||||
south_to_north: west
|
south_to_north: west
|
||||||
|
|
||||||
# Salt vertical (px de z, no toca la posició al món).
|
# Salt vertical (px de z, no toca la posició al món).
|
||||||
# `shadow_y_offset`: puja la sombra per compensar la franja
|
|
||||||
# transparent sota els peus del sprite.
|
|
||||||
jump:
|
jump:
|
||||||
impulse: 200
|
impulse: 200
|
||||||
gravity: 600
|
gravity: 600
|
||||||
landing_stun_ms: 400
|
landing_stun_ms: 400
|
||||||
shadow_y_offset: 3
|
|
||||||
sound: jump.wav
|
sound: jump.wav
|
||||||
land_sound: land.wav
|
land_sound: land.wav
|
||||||
|
|
||||||
@@ -119,7 +116,7 @@ hurt:
|
|||||||
# recuperació en què la hitbox ja no fa dany.
|
# recuperació en què la hitbox ja no fa dany.
|
||||||
whip:
|
whip:
|
||||||
range_tiles: 3
|
range_tiles: 3
|
||||||
swing_ms: 200
|
swing_ms: 320
|
||||||
cooldown_ms: 200
|
cooldown_ms: 200
|
||||||
damage: 1
|
damage: 1
|
||||||
sound: whip.wav
|
sound: whip.wav
|
||||||
@@ -136,10 +133,18 @@ death:
|
|||||||
# poden ferir ni matar el jugador (els forats sí que el maten — la
|
# poden ferir ni matar el jugador (els forats sí que el maten — la
|
||||||
# caiguda no és dany convencional). Visualment es manifesta amb un
|
# caiguda no és dany convencional). Visualment es manifesta amb un
|
||||||
# parpadeig que alterna la paleta normal del sprite amb la paleta
|
# parpadeig que alterna la paleta normal del sprite amb la paleta
|
||||||
# `palette` (basename de `data/player/<name>.pal`) cada
|
# `palette` (basename de `data/entities/player/<name>.pal`) cada
|
||||||
# `blink_period_ms` ms. Si `duration_ms` és 0 (o el bloc manca), la
|
# `blink_period_ms` ms. Si `duration_ms` és 0 (o el bloc manca), la
|
||||||
# mecànica queda desactivada i el comportament és l'antic.
|
# mecànica queda desactivada i el comportament és l'antic.
|
||||||
immunity:
|
immunity:
|
||||||
duration_ms: 3000
|
duration_ms: 3000
|
||||||
blink_period_ms: 100
|
blink_period_ms: 100
|
||||||
palette: immune
|
palette: sam_wash
|
||||||
|
|
||||||
|
# Llum emesa pel jugador. `radius` és el radi del cercle de llum
|
||||||
|
# en píxels del canvas; el gradient (3 anells: 1.0 / 0.9 / 0.8) viu
|
||||||
|
# a data/config/lighting.yaml i és compartit per tots els emissors.
|
||||||
|
# Omet el bloc per desactivar la llum d'aquest personatge.
|
||||||
|
light:
|
||||||
|
radius: 64
|
||||||
|
flicker: true
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
JASC-PAL
|
||||||
|
0100
|
||||||
|
16
|
||||||
|
0 0 0 255
|
||||||
|
150 133 88 255
|
||||||
|
202 176 123 255
|
||||||
|
191 165 112 255
|
||||||
|
181 156 103 255
|
||||||
|
217 158 115 255
|
||||||
|
194 142 101 255
|
||||||
|
188 143 98 255
|
||||||
|
214 193 145 255
|
||||||
|
196 176 128 255
|
||||||
|
181 161 115 255
|
||||||
|
246 211 157 255
|
||||||
|
229 192 139 255
|
||||||
|
213 177 127 255
|
||||||
|
243 226 184 255
|
||||||
|
0 0 0 255
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
JASC-PAL
|
||||||
|
0100
|
||||||
|
16
|
||||||
|
0 0 0 255
|
||||||
|
102 118 132 255
|
||||||
|
166 169 171 255
|
||||||
|
152 156 158 255
|
||||||
|
140 144 147 255
|
||||||
|
191 144 160 255
|
||||||
|
161 125 146 255
|
||||||
|
152 127 142 255
|
||||||
|
179 190 198 255
|
||||||
|
157 168 179 255
|
||||||
|
139 151 164 255
|
||||||
|
221 210 210 255
|
||||||
|
200 187 189 255
|
||||||
|
181 169 175 255
|
||||||
|
213 229 247 255
|
||||||
|
0 0 0 255
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
JASC-PAL
|
||||||
|
0100
|
||||||
|
16
|
||||||
|
0 0 0 255
|
||||||
|
190 190 190 255
|
||||||
|
235 220 205 255
|
||||||
|
226 212 197 255
|
||||||
|
219 205 191 255
|
||||||
|
255 194 197 255
|
||||||
|
248 184 193 255
|
||||||
|
238 188 189 255
|
||||||
|
239 233 226 255
|
||||||
|
226 220 216 255
|
||||||
|
214 210 208 255
|
||||||
|
255 242 225 255
|
||||||
|
255 228 213 255
|
||||||
|
251 216 207 255
|
||||||
|
255 255 255 255
|
||||||
|
0 0 0 255
|
||||||
@@ -13,7 +13,7 @@ flags:
|
|||||||
collides: true
|
collides: true
|
||||||
interactable: false
|
interactable: false
|
||||||
animations:
|
animations:
|
||||||
roll: { frames: [0], fps: 10, loop: true }
|
roll: { frames: [0], frame_ms: 100, loop: true }
|
||||||
ai:
|
ai:
|
||||||
type: straight_line
|
type: straight_line
|
||||||
initial_direction: right
|
initial_direction: right
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 848 B After Width: | Height: | Size: 1.6 KiB |
@@ -19,12 +19,30 @@ flags:
|
|||||||
collides: true
|
collides: true
|
||||||
interactable: true
|
interactable: true
|
||||||
animations:
|
animations:
|
||||||
closed: { frames: [0], fps: 1, loop: true }
|
closed: { frames: [0], frame_ms: 1000, loop: true }
|
||||||
opening: { frames: [0], fps: 6, loop: false }
|
opening: { frames: [1, 2], frame_ms: 167, loop: false }
|
||||||
open: { frames: [0], fps: 1, loop: true }
|
open: { frames: [3], frame_ms: 1000, loop: true }
|
||||||
behaviour:
|
behaviour:
|
||||||
states: [CLOSED, OPENING, OPEN]
|
states: [CLOSED, OPENING, OPEN]
|
||||||
initial_state: CLOSED
|
initial_state: CLOSED
|
||||||
on_perimeter_complete: OPENING
|
on_perimeter_complete: OPENING
|
||||||
on_opening_end: OPEN
|
on_opening_end: OPEN
|
||||||
emits_event_on_open: sarcophagus_opened
|
emits_event_on_open: sarcophagus_opened
|
||||||
|
# Sons opcionals. `opening` es dispara un sol cop en la transició
|
||||||
|
# CLOSED → OPENING (quan el jugador completa el perímetre). Si la clau
|
||||||
|
# manca, no sona res. El basename val tant de clau al Resource::Cache
|
||||||
|
# com de path (`Defaults::Paths::AUDIO_SOUNDS_DIR + key`).
|
||||||
|
#
|
||||||
|
# `opening_pitch_spread`: variació uniforme del ratio de reproducció
|
||||||
|
# centrada a 1.0. Amb 0.05 cada obertura sona entre 0.95× i 1.05× la
|
||||||
|
# velocitat normal (puja/baixa també el to, efecte arcade clàssic).
|
||||||
|
# 0 ⇒ sempre 1.0 (sense variació).
|
||||||
|
sound:
|
||||||
|
opening: open_sarc.wav
|
||||||
|
opening_pitch_spread: 0.5
|
||||||
|
# Recompensa que rep el jugador que pinta el tile que tanca el perímetre
|
||||||
|
# (el GameScene la reparteix consumint `sarcophagus_opened`). Si es lleva
|
||||||
|
# aquest bloc o un dels camps, el camp absent val 0 i no s'aplica.
|
||||||
|
reward:
|
||||||
|
points: 100
|
||||||
|
treasures: 1
|
||||||
|
After Width: | Height: | Size: 98 B |
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1,22 @@
|
|||||||
|
name: stone
|
||||||
|
type: decoration
|
||||||
|
editable: true
|
||||||
|
# Sub-picker de frames a l'editor: ofereix una graella amb les 24 variants
|
||||||
|
# del atlas (6×4 sub-sprites 16×16) per escollir quina representa cada
|
||||||
|
# instància col·locada.
|
||||||
|
editable_variants: true
|
||||||
|
sprite:
|
||||||
|
path: stone.gif
|
||||||
|
size: [16, 16]
|
||||||
|
tile_size: [1, 1]
|
||||||
|
collision:
|
||||||
|
size: [16, 16]
|
||||||
|
# Mur infranquejable al salt: el jugador no la pot saltar per damunt.
|
||||||
|
height: 999
|
||||||
|
flags:
|
||||||
|
collides: true
|
||||||
|
interactable: false
|
||||||
|
# Animació "default" amb un sol frame: el spawn YAML pot sobreescriure-la
|
||||||
|
# via `frame: N` per fixar la variant escollida al editor.
|
||||||
|
animations:
|
||||||
|
default: { frames: [0], frame_ms: 1000, loop: false }
|
||||||
@@ -15,4 +15,19 @@ flags:
|
|||||||
# El torch.gif és un strip vertical 16x64 amb 4 frames apilats.
|
# El torch.gif és un strip vertical 16x64 amb 4 frames apilats.
|
||||||
# El render clipa cada frame per `anim.currentFrame()` × 16 píxels en Y.
|
# El render clipa cada frame per `anim.currentFrame()` × 16 píxels en Y.
|
||||||
animations:
|
animations:
|
||||||
idle: { frames: [0, 1, 2, 3], fps: 8, loop: true }
|
idle: { frames: [0, 1, 2, 3], frame_ms: 125, loop: true }
|
||||||
|
|
||||||
|
# Cercle de llum centrat a l'antorxa. El radi és en píxels del canvas;
|
||||||
|
# el gradient global (data/config/lighting.yaml) hi posa la forma (3
|
||||||
|
# anells). Amb `flicker: true` el radi efectiu oscil·la per frame
|
||||||
|
# (suma de dues sinusoides amb fase derivada de la posició) per a
|
||||||
|
# que el cercle "respiri" com una flama; els paràmetres del flicker
|
||||||
|
# també viuen al config global. `offset: [x, y]` desplaça el centre
|
||||||
|
# del cercle: la flama del sprite no està al centre del bounding box
|
||||||
|
# sinó cap a dalt, així que pujem la llum 4 px (Y creix cap avall)
|
||||||
|
# per a que el halo "neixi" de la flama, no del peu. Omet el bloc
|
||||||
|
# per fer una antorxa "apagada".
|
||||||
|
light:
|
||||||
|
radius: 40
|
||||||
|
flicker: true
|
||||||
|
offset: [0, -4]
|
||||||
@@ -13,8 +13,8 @@ flags:
|
|||||||
collides: false
|
collides: false
|
||||||
interactable: false
|
interactable: false
|
||||||
animations:
|
animations:
|
||||||
inactive: { frames: [0], fps: 1, loop: true }
|
inactive: { frames: [0], frame_ms: 1000, loop: true }
|
||||||
active: { frames: [0], fps: 6, loop: true }
|
active: { frames: [0], frame_ms: 167, loop: true }
|
||||||
cycle:
|
cycle:
|
||||||
active_duration: 0.5
|
active_duration: 0.5
|
||||||
inactive_duration: 1.5
|
inactive_duration: 1.5
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ sprites:
|
|||||||
# Animació compartida entre les 4 direccions: la seqüència de frames i les
|
# Animació compartida entre les 4 direccions: la seqüència de frames i les
|
||||||
# durades són idèntiques; només canvia quina surface/mida es clipa.
|
# durades són idèntiques; només canvia quina surface/mida es clipa.
|
||||||
# - `frames` : índex de tile dins l'spritesheet (graella deduïda).
|
# - `frames` : índex de tile dins l'spritesheet (graella deduïda).
|
||||||
# - `frame_ms` : durada uniforme per frame; 50 ms × 4 ≈ 200 ms swing.
|
# - `frame_ms` : durada uniforme per frame; 80 ms × 4 = 320 ms swing.
|
||||||
# - `loop: false` : el látigo viu una animació i mor (`markDead`).
|
# - `loop: false` : el látigo viu una animació i mor (`markDead`).
|
||||||
# - `active_frames` : valors dins de `frames` durant els quals la
|
# - `active_frames` : valors dins de `frames` durant els quals la
|
||||||
# hitbox aplica dany. Wind-up (0) i recovery (3) no
|
# hitbox aplica dany. Wind-up (0) i recovery (3) no
|
||||||
@@ -33,6 +33,6 @@ sprites:
|
|||||||
animations:
|
animations:
|
||||||
swing:
|
swing:
|
||||||
frames: [0, 1, 2, 3]
|
frames: [0, 1, 2, 3]
|
||||||
frame_ms: 50
|
frame_ms: 80
|
||||||
loop: false
|
loop: false
|
||||||
active_frames: [1, 2]
|
active_frames: [1, 2]
|
||||||
|
Before Width: | Height: | Size: 313 B After Width: | Height: | Size: 311 B |
|
Before Width: | Height: | Size: 378 B After Width: | Height: | Size: 363 B |
|
Before Width: | Height: | Size: 369 B After Width: | Height: | Size: 348 B |
|
Before Width: | Height: | Size: 313 B After Width: | Height: | Size: 327 B |
@@ -2,7 +2,7 @@
|
|||||||
# Generado con font_gen.py
|
# Generado con font_gen.py
|
||||||
|
|
||||||
box_width 12
|
box_width 12
|
||||||
box_height 14
|
box_height 13
|
||||||
columns 15
|
columns 15
|
||||||
|
|
||||||
# codepoint_decimal ancho_visual
|
# codepoint_decimal ancho_visual
|
||||||
@@ -105,8 +105,8 @@ columns 15
|
|||||||
193 8 # Á
|
193 8 # Á
|
||||||
200 7 # È
|
200 7 # È
|
||||||
201 7 # É
|
201 7 # É
|
||||||
204 4 # Ì
|
204 3 # Ì
|
||||||
205 4 # Í
|
205 3 # Í
|
||||||
210 9 # Ò
|
210 9 # Ò
|
||||||
211 9 # Ó
|
211 9 # Ó
|
||||||
217 7 # Ù
|
217 7 # Ù
|
||||||
@@ -117,8 +117,8 @@ columns 15
|
|||||||
225 7 # á
|
225 7 # á
|
||||||
232 7 # è
|
232 7 # è
|
||||||
233 7 # é
|
233 7 # é
|
||||||
236 4 # ì
|
236 3 # ì
|
||||||
237 4 # í
|
237 3 # í
|
||||||
242 7 # ò
|
242 7 # ò
|
||||||
243 7 # ó
|
243 7 # ó
|
||||||
249 7 # ù
|
249 7 # ù
|
||||||
@@ -127,7 +127,7 @@ columns 15
|
|||||||
231 7 # ç
|
231 7 # ç
|
||||||
161 3 # ¡
|
161 3 # ¡
|
||||||
191 7 # ¿
|
191 7 # ¿
|
||||||
171 10 # «
|
171 7 # «
|
||||||
187 10 # »
|
187 7 # »
|
||||||
183 3 # ·
|
183 3 # ·
|
||||||
169 10 # ©
|
169 10 # ©
|
||||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.3 KiB |
@@ -2,7 +2,7 @@
|
|||||||
# Generado con font_gen.py
|
# Generado con font_gen.py
|
||||||
|
|
||||||
box_width 12
|
box_width 12
|
||||||
box_height 14
|
box_height 13
|
||||||
columns 15
|
columns 15
|
||||||
|
|
||||||
# codepoint_decimal ancho_visual
|
# codepoint_decimal ancho_visual
|
||||||
@@ -105,8 +105,8 @@ columns 15
|
|||||||
193 9 # Á
|
193 9 # Á
|
||||||
200 8 # È
|
200 8 # È
|
||||||
201 8 # É
|
201 8 # É
|
||||||
204 4 # Ì
|
204 3 # Ì
|
||||||
205 4 # Í
|
205 3 # Í
|
||||||
210 10 # Ò
|
210 10 # Ò
|
||||||
211 10 # Ó
|
211 10 # Ó
|
||||||
217 8 # Ù
|
217 8 # Ù
|
||||||
@@ -117,8 +117,8 @@ columns 15
|
|||||||
225 8 # á
|
225 8 # á
|
||||||
232 8 # è
|
232 8 # è
|
||||||
233 8 # é
|
233 8 # é
|
||||||
236 4 # ì
|
236 3 # ì
|
||||||
237 4 # í
|
237 3 # í
|
||||||
242 8 # ò
|
242 8 # ò
|
||||||
243 8 # ó
|
243 8 # ó
|
||||||
249 8 # ù
|
249 8 # ù
|
||||||
@@ -127,7 +127,7 @@ columns 15
|
|||||||
231 8 # ç
|
231 8 # ç
|
||||||
161 3 # ¡
|
161 3 # ¡
|
||||||
191 8 # ¿
|
191 8 # ¿
|
||||||
171 10 # «
|
171 7 # «
|
||||||
187 10 # »
|
187 7 # »
|
||||||
183 3 # ·
|
183 3 # ·
|
||||||
169 10 # ©
|
169 10 # ©
|
||||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.4 KiB |
@@ -1,4 +1,4 @@
|
|||||||
# AEE 2026 — Català
|
# AEE ARCADE — Català
|
||||||
# lang: ca
|
# lang: ca
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
@@ -14,7 +14,7 @@ input:
|
|||||||
shader_off: "Shaders desactivats"
|
shader_off: "Shaders desactivats"
|
||||||
vsync_on: "VSync activat"
|
vsync_on: "VSync activat"
|
||||||
vsync_off: "VSync desactivat"
|
vsync_off: "VSync desactivat"
|
||||||
screenshot: "Captura"
|
screenshot: "Imatge {} guardada a {}"
|
||||||
shader: "Shader"
|
shader: "Shader"
|
||||||
preset: "Preset"
|
preset: "Preset"
|
||||||
scaling_disabled: "Escalat sense"
|
scaling_disabled: "Escalat sense"
|
||||||
@@ -23,7 +23,6 @@ input:
|
|||||||
scaling_overscan: "Escalat overscan"
|
scaling_overscan: "Escalat overscan"
|
||||||
scaling_integer: "Escalat enter"
|
scaling_integer: "Escalat enter"
|
||||||
press_again_exit: "Prem una altra volta per eixir"
|
press_again_exit: "Prem una altra volta per eixir"
|
||||||
paused: "Pausa"
|
|
||||||
editor_on: "Editor ON"
|
editor_on: "Editor ON"
|
||||||
editor_off: "Editor OFF"
|
editor_off: "Editor OFF"
|
||||||
editor_save_error: "Editor: error guardant el mapa"
|
editor_save_error: "Editor: error guardant el mapa"
|
||||||
@@ -38,6 +37,13 @@ hud:
|
|||||||
treasures: "Tres"
|
treasures: "Tres"
|
||||||
pyramid: "Piramide"
|
pyramid: "Piramide"
|
||||||
room: "Sala"
|
room: "Sala"
|
||||||
|
# Prompts mostrats al bloc d'un slot inactiu (en lloc dels zeros)
|
||||||
|
# quan un jugador encara no ha pulsat START o ha esgotat vides.
|
||||||
|
# Dues línies per fer-los caber al bloc lateral (~106 px).
|
||||||
|
join_prompt_can_join_l1: "Polsa start"
|
||||||
|
join_prompt_can_join_l2: "per jugar"
|
||||||
|
join_prompt_wait_l1: "Espera"
|
||||||
|
join_prompt_wait_l2: "per jugar"
|
||||||
|
|
||||||
# Textos de l'escena TITLE.
|
# Textos de l'escena TITLE.
|
||||||
title:
|
title:
|
||||||
@@ -53,6 +59,12 @@ game:
|
|||||||
room_intro_room: "Sala {r}"
|
room_intro_room: "Sala {r}"
|
||||||
room_complete_line1: "Fase"
|
room_complete_line1: "Fase"
|
||||||
room_complete_line2: "Completada"
|
room_complete_line2: "Completada"
|
||||||
|
# Rètol del game over (sub-FSM de la GameScene). El countdown es
|
||||||
|
# pinta com a segona línia (un enter) durant la fase 1 de
|
||||||
|
# CONTINUE_PROMPT — només cal traduir el rètol superior.
|
||||||
|
continue_prompt: "Continuar?"
|
||||||
|
game_over_line1: "Fi del"
|
||||||
|
game_over_line2: "Joc"
|
||||||
|
|
||||||
menu:
|
menu:
|
||||||
titles:
|
titles:
|
||||||
@@ -62,6 +74,7 @@ menu:
|
|||||||
controls: "Controls"
|
controls: "Controls"
|
||||||
keyboard: "Teclat"
|
keyboard: "Teclat"
|
||||||
gamepad: "Comandament"
|
gamepad: "Comandament"
|
||||||
|
tweaks: "Jugabilitat"
|
||||||
system: "Sistema"
|
system: "Sistema"
|
||||||
labels:
|
labels:
|
||||||
player_1: "Jugador 1"
|
player_1: "Jugador 1"
|
||||||
@@ -73,6 +86,7 @@ menu:
|
|||||||
controls_submenu: "Controls"
|
controls_submenu: "Controls"
|
||||||
keyboard_submenu: "Teclat"
|
keyboard_submenu: "Teclat"
|
||||||
gamepad_submenu: "Comandament"
|
gamepad_submenu: "Comandament"
|
||||||
|
tweaks_submenu: "Jugabilitat"
|
||||||
system_submenu: "Sistema"
|
system_submenu: "Sistema"
|
||||||
move_up: "Amunt"
|
move_up: "Amunt"
|
||||||
move_down: "Avall"
|
move_down: "Avall"
|
||||||
@@ -101,6 +115,9 @@ menu:
|
|||||||
music_volume: "Volum música"
|
music_volume: "Volum música"
|
||||||
sounds: "Sons"
|
sounds: "Sons"
|
||||||
sounds_volume: "Volum sons"
|
sounds_volume: "Volum sons"
|
||||||
|
whip_pierces_walls: "Látec travessa sarcs"
|
||||||
|
friendly_fire: "Foc amic"
|
||||||
|
players_collide: "Col·lisió entre jugadors"
|
||||||
restart: "Reiniciar"
|
restart: "Reiniciar"
|
||||||
exit_game: "Eixir del joc"
|
exit_game: "Eixir del joc"
|
||||||
values:
|
values:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# AEE 2026 — English
|
# AEE ARCADE — English
|
||||||
# lang: en
|
# lang: en
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
@@ -14,7 +14,7 @@ input:
|
|||||||
shader_off: "Shaders off"
|
shader_off: "Shaders off"
|
||||||
vsync_on: "VSync on"
|
vsync_on: "VSync on"
|
||||||
vsync_off: "VSync off"
|
vsync_off: "VSync off"
|
||||||
screenshot: "Screenshot"
|
screenshot: "Image {} saved at {}"
|
||||||
shader: "Shader"
|
shader: "Shader"
|
||||||
preset: "Preset"
|
preset: "Preset"
|
||||||
scaling_disabled: "Scaling off"
|
scaling_disabled: "Scaling off"
|
||||||
@@ -23,7 +23,6 @@ input:
|
|||||||
scaling_overscan: "Scaling overscan"
|
scaling_overscan: "Scaling overscan"
|
||||||
scaling_integer: "Scaling integer"
|
scaling_integer: "Scaling integer"
|
||||||
press_again_exit: "Press again to exit"
|
press_again_exit: "Press again to exit"
|
||||||
paused: "Paused"
|
|
||||||
editor_on: "Editor ON"
|
editor_on: "Editor ON"
|
||||||
editor_off: "Editor OFF"
|
editor_off: "Editor OFF"
|
||||||
editor_save_error: "Editor: map save failed"
|
editor_save_error: "Editor: map save failed"
|
||||||
@@ -38,6 +37,13 @@ hud:
|
|||||||
treasures: "Tre"
|
treasures: "Tre"
|
||||||
pyramid: "Pyramid"
|
pyramid: "Pyramid"
|
||||||
room: "Room"
|
room: "Room"
|
||||||
|
# Prompts shown in an inactive slot's block (instead of zeros) while
|
||||||
|
# a player hasn't pressed START yet or has run out of lives. Two
|
||||||
|
# short lines so they fit in the side block (~106 px wide).
|
||||||
|
join_prompt_can_join_l1: "Press start"
|
||||||
|
join_prompt_can_join_l2: "to play"
|
||||||
|
join_prompt_wait_l1: "Please"
|
||||||
|
join_prompt_wait_l2: "wait"
|
||||||
|
|
||||||
# Texts of the TITLE scene.
|
# Texts of the TITLE scene.
|
||||||
title:
|
title:
|
||||||
@@ -52,6 +58,12 @@ game:
|
|||||||
room_intro_room: "Room {r}"
|
room_intro_room: "Room {r}"
|
||||||
room_complete_line1: "Stage"
|
room_complete_line1: "Stage"
|
||||||
room_complete_line2: "Complete"
|
room_complete_line2: "Complete"
|
||||||
|
# Game over labels (sub-FSM in GameScene). The countdown is drawn as
|
||||||
|
# a numeric second line during CONTINUE_PROMPT phase 1, so only the
|
||||||
|
# top label needs translation.
|
||||||
|
continue_prompt: "Continue?"
|
||||||
|
game_over_line1: "Game"
|
||||||
|
game_over_line2: "Over"
|
||||||
|
|
||||||
menu:
|
menu:
|
||||||
titles:
|
titles:
|
||||||
@@ -61,6 +73,7 @@ menu:
|
|||||||
controls: "Controls"
|
controls: "Controls"
|
||||||
keyboard: "Keyboard"
|
keyboard: "Keyboard"
|
||||||
gamepad: "Gamepad"
|
gamepad: "Gamepad"
|
||||||
|
tweaks: "Gameplay"
|
||||||
system: "System"
|
system: "System"
|
||||||
labels:
|
labels:
|
||||||
player_1: "Player 1"
|
player_1: "Player 1"
|
||||||
@@ -72,6 +85,7 @@ menu:
|
|||||||
controls_submenu: "Controls"
|
controls_submenu: "Controls"
|
||||||
keyboard_submenu: "Keyboard"
|
keyboard_submenu: "Keyboard"
|
||||||
gamepad_submenu: "Gamepad"
|
gamepad_submenu: "Gamepad"
|
||||||
|
tweaks_submenu: "Gameplay"
|
||||||
system_submenu: "System"
|
system_submenu: "System"
|
||||||
move_up: "Up"
|
move_up: "Up"
|
||||||
move_down: "Down"
|
move_down: "Down"
|
||||||
@@ -100,6 +114,9 @@ menu:
|
|||||||
music_volume: "Music volume"
|
music_volume: "Music volume"
|
||||||
sounds: "Sounds"
|
sounds: "Sounds"
|
||||||
sounds_volume: "Sound volume"
|
sounds_volume: "Sound volume"
|
||||||
|
whip_pierces_walls: "Whip pierces sarcs"
|
||||||
|
friendly_fire: "Friendly fire"
|
||||||
|
players_collide: "Player collision"
|
||||||
restart: "Restart"
|
restart: "Restart"
|
||||||
exit_game: "Exit game"
|
exit_game: "Exit game"
|
||||||
values:
|
values:
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
# Configuració compartida per totes les sales de la piràmide 1. Cada sala
|
||||||
|
# (r1..r6) hereta aquests camps via el merge recursiu de `RoomYaml::loadMerged`:
|
||||||
|
# el YAML de sala només declara el que canvia (room, geometry, data, entities,
|
||||||
|
# i opcionalment overrides puntuals de `lighting`).
|
||||||
|
|
||||||
|
pyramid: 1
|
||||||
|
tileset: data/tilesets/pyramid_1.gif
|
||||||
|
tile_size: 16
|
||||||
|
origin: [-8, 0]
|
||||||
|
|
||||||
|
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
||||||
|
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
||||||
|
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
||||||
|
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
||||||
|
# per desactivar el pintat per a aquest jugador.
|
||||||
|
player1_paint_tile: 0
|
||||||
|
player2_paint_tile: 1
|
||||||
|
|
||||||
|
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
||||||
|
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
||||||
|
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
||||||
|
# s'anul·len (sense push, sense moviment).
|
||||||
|
push_factor: 0.30
|
||||||
|
|
||||||
|
# Il·luminació per defecte: additive amb halos càlids subtils a les
|
||||||
|
# antorxes. Les sales que vulguin l'estil "fosc amb forats" (subtractive)
|
||||||
|
# poden redeclarar `lighting:` sencer; el merge no fusiona "additive"
|
||||||
|
# amb "subtractive", la sala guanya.
|
||||||
|
lighting:
|
||||||
|
mode: additive
|
||||||
|
level: 1.0
|
||||||
|
emitters:
|
||||||
|
torches:
|
||||||
|
radius: 23
|
||||||
|
color: [255, 170, 60]
|
||||||
|
flicker_params:
|
||||||
|
wave_amplitude_ratio: 0.04
|
||||||
|
wave_frequency_hz: 3.0
|
||||||
|
noise_amplitude_ratio: 0.025
|
||||||
|
noise_frequency_hz: 0
|
||||||
|
players: false
|
||||||
|
mummies: false
|
||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_1.gif.
|
room: 2
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 1
|
|
||||||
room: 1
|
|
||||||
tileset: data/tilesets/pyramid_1.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
@@ -82,6 +53,8 @@ data:
|
|||||||
# d'obertura (262/263). La momia al corredor central. L'antorxa al costat
|
# d'obertura (262/263). La momia al corredor central. L'antorxa al costat
|
||||||
# superior esquerre per verificar render d'una entitat decorativa.
|
# superior esquerre per verificar render d'una entitat decorativa.
|
||||||
entities:
|
entities:
|
||||||
|
- type: torch
|
||||||
|
position: [4, 2]
|
||||||
- type: torch
|
- type: torch
|
||||||
position: [8, 2]
|
position: [8, 2]
|
||||||
- type: torch
|
- type: torch
|
||||||
@@ -128,8 +101,8 @@ entities:
|
|||||||
sarc_position: [2, 4]
|
sarc_position: [2, 4]
|
||||||
- type: sarcophagus
|
- type: sarcophagus
|
||||||
sarc_position: [3, 4]
|
sarc_position: [3, 4]
|
||||||
- type: torch
|
|
||||||
position: [4, 2]
|
|
||||||
- type: door
|
- type: door
|
||||||
- type: mummy
|
- type: mummy
|
||||||
position: [10, 11]
|
position: [10, 7]
|
||||||
|
- type: mummy
|
||||||
|
position: [7, 9]
|
||||||
@@ -1,33 +1,42 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_1.gif.
|
room: 1
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
# Il·luminació de la sala. Bloc opcional; si manca, la sala queda
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
# totalment il·luminada (1.0) i tots els tipus d'entitat emeten amb els
|
||||||
|
# valors declarats al seu YAML de tipus (comportament històric).
|
||||||
#
|
#
|
||||||
# Format del tilemap:
|
# level → atenuació base de la sala (0..1). 1.0 = res
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
# d'efecte, 0.0 = negre fora del radi dels emissors.
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
# El gradient dels emissors viu a
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
# data/config/lighting.yaml.
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
# emitters.<tipus> → override per tipus d'entitat. Tres formes:
|
||||||
|
# false → apaga el tipus
|
||||||
pyramid: 1
|
# true → defaults del tipus
|
||||||
room: 2
|
# { radius: N, flicker: B } → camps presents
|
||||||
tileset: data/tilesets/pyramid_1.gif
|
# sobreescriuen el
|
||||||
tile_size: 16
|
# default; els
|
||||||
origin: [-8, 0]
|
# absents cauen al
|
||||||
|
# default del tipus.
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
# Plural per llegir-se natural ("totes les momies de la sala"). Per a
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
# casos particulars, un spawn pot dur el seu propi `light:` (mateixes
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
# formes) que té prioritat sobre l'override de sala. La forma antiga
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
# (`light_level:` plà a l'arrel) també segueix sent vàlida per
|
||||||
# per desactivar el pintat per a aquest jugador.
|
# retrocompatibilitat.
|
||||||
player1_paint_tile: 0
|
lighting:
|
||||||
player2_paint_tile: 1
|
# Sala fosca de proves. La piràmide declara additive per defecte; aquí
|
||||||
|
# tornem a subtractive perquè volem la dinàmica "negre amb forats de
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
# llum". `level: 0.15` és l'atenuació base de la sala fora dels emissors.
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
mode: subtractive
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
level: 0.15
|
||||||
# s'anul·len (sense push, sense moviment).
|
emitters:
|
||||||
push_factor: 0.30
|
players: true
|
||||||
|
torches:
|
||||||
|
radius: 40
|
||||||
|
color: [255, 170, 60]
|
||||||
|
flicker_params:
|
||||||
|
wave_amplitude_ratio: 0.05
|
||||||
|
wave_frequency_hz: 3.0
|
||||||
|
noise_amplitude_ratio: 0.025
|
||||||
|
noise_frequency_hz: 7.0
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
@@ -82,16 +91,12 @@ data:
|
|||||||
# d'obertura (262/263). La momia al corredor central. L'antorxa al costat
|
# d'obertura (262/263). La momia al corredor central. L'antorxa al costat
|
||||||
# superior esquerre per verificar render d'una entitat decorativa.
|
# superior esquerre per verificar render d'una entitat decorativa.
|
||||||
entities:
|
entities:
|
||||||
- type: torch
|
|
||||||
position: [4, 2]
|
|
||||||
- type: torch
|
- type: torch
|
||||||
position: [8, 2]
|
position: [8, 2]
|
||||||
- type: torch
|
- type: torch
|
||||||
position: [12, 2]
|
position: [12, 2]
|
||||||
- type: torch
|
- type: torch
|
||||||
position: [16, 2]
|
position: [16, 2]
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [0, 0]
|
|
||||||
- type: sarcophagus
|
- type: sarcophagus
|
||||||
sarc_position: [1, 0]
|
sarc_position: [1, 0]
|
||||||
- type: sarcophagus
|
- type: sarcophagus
|
||||||
@@ -118,8 +123,6 @@ entities:
|
|||||||
sarc_position: [0, 3]
|
sarc_position: [0, 3]
|
||||||
- type: sarcophagus
|
- type: sarcophagus
|
||||||
sarc_position: [1, 3]
|
sarc_position: [1, 3]
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [2, 3]
|
|
||||||
- type: sarcophagus
|
- type: sarcophagus
|
||||||
sarc_position: [3, 3]
|
sarc_position: [3, 3]
|
||||||
- type: sarcophagus
|
- type: sarcophagus
|
||||||
@@ -130,11 +133,33 @@ entities:
|
|||||||
sarc_position: [2, 4]
|
sarc_position: [2, 4]
|
||||||
- type: sarcophagus
|
- type: sarcophagus
|
||||||
sarc_position: [3, 4]
|
sarc_position: [3, 4]
|
||||||
|
- type: torch
|
||||||
|
position: [4, 2]
|
||||||
- type: door
|
- type: door
|
||||||
# Sense `position`: la porta sempre viu al mur trasser. La columna
|
- type: column
|
||||||
# transitable la dicta `geometry.door_col`; el render i la caixa
|
position: [3, 4]
|
||||||
# de col·lisió es deriven d'aquesta dada al loadFromLevel.
|
frame: 2
|
||||||
|
- type: stone
|
||||||
|
position: [5, 4]
|
||||||
|
frame: 16
|
||||||
|
- type: stone
|
||||||
|
position: [4, 4]
|
||||||
|
frame: 19
|
||||||
|
- type: column
|
||||||
|
position: [13, 10]
|
||||||
|
frame: 4
|
||||||
|
- type: stone
|
||||||
|
position: [12, 10]
|
||||||
|
frame: 13
|
||||||
|
- type: stone
|
||||||
|
position: [11, 10]
|
||||||
|
frame: 23
|
||||||
|
- type: hole
|
||||||
|
position: [5, 9]
|
||||||
|
- type: hole
|
||||||
|
position: [9, 11]
|
||||||
|
- type: stone
|
||||||
|
position: [10, 10]
|
||||||
|
frame: 18
|
||||||
- type: mummy
|
- type: mummy
|
||||||
position: [10, 7]
|
position: [10, 13]
|
||||||
- type: mummy
|
|
||||||
position: [7, 9]
|
|
||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_1.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 1
|
|
||||||
room: 3
|
room: 3
|
||||||
tileset: data/tilesets/pyramid_1.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_1.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 1
|
|
||||||
room: 4
|
room: 4
|
||||||
tileset: data/tilesets/pyramid_1.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_1.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 1
|
|
||||||
room: 5
|
room: 5
|
||||||
tileset: data/tilesets/pyramid_1.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_1.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 1
|
|
||||||
room: 6
|
room: 6
|
||||||
tileset: data/tilesets/pyramid_1.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
# Configuració compartida per totes les sales de la piràmide 2. Cada sala
|
||||||
|
# (r1..r6) hereta aquests camps via el merge recursiu de `RoomYaml::loadMerged`:
|
||||||
|
# el YAML de sala només declara el que canvia (room, geometry, data, entities,
|
||||||
|
# i opcionalment overrides puntuals de `lighting`).
|
||||||
|
|
||||||
|
pyramid: 2
|
||||||
|
tileset: data/tilesets/pyramid_2.gif
|
||||||
|
tile_size: 16
|
||||||
|
origin: [-8, 0]
|
||||||
|
|
||||||
|
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
||||||
|
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
||||||
|
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
||||||
|
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
||||||
|
# per desactivar el pintat per a aquest jugador.
|
||||||
|
player1_paint_tile: 0
|
||||||
|
player2_paint_tile: 1
|
||||||
|
|
||||||
|
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
||||||
|
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
||||||
|
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
||||||
|
# s'anul·len (sense push, sense moviment).
|
||||||
|
push_factor: 0.30
|
||||||
|
|
||||||
|
# Il·luminació per defecte: additive amb halos càlids subtils a les
|
||||||
|
# antorxes. Les sales que vulguin l'estil "fosc amb forats" (subtractive)
|
||||||
|
# poden redeclarar `lighting:` sencer; el merge no fusiona "additive"
|
||||||
|
# amb "subtractive", la sala guanya.
|
||||||
|
lighting:
|
||||||
|
mode: additive
|
||||||
|
level: 1.0
|
||||||
|
emitters:
|
||||||
|
torches:
|
||||||
|
radius: 23
|
||||||
|
color: [255, 170, 60]
|
||||||
|
flicker_params:
|
||||||
|
wave_amplitude_ratio: 0.04
|
||||||
|
wave_frequency_hz: 3.0
|
||||||
|
noise_amplitude_ratio: 0.025
|
||||||
|
noise_frequency_hz: 0
|
||||||
|
players: false
|
||||||
|
mummies: false
|
||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_2.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 2
|
|
||||||
room: 1
|
room: 1
|
||||||
tileset: data/tilesets/pyramid_2.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_2.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 2
|
|
||||||
room: 2
|
room: 2
|
||||||
tileset: data/tilesets/pyramid_2.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_2.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 2
|
|
||||||
room: 3
|
room: 3
|
||||||
tileset: data/tilesets/pyramid_2.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_2.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 2
|
|
||||||
room: 4
|
room: 4
|
||||||
tileset: data/tilesets/pyramid_2.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_2.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 2
|
|
||||||
room: 5
|
room: 5
|
||||||
tileset: data/tilesets/pyramid_2.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_2.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 2
|
|
||||||
room: 6
|
room: 6
|
||||||
tileset: data/tilesets/pyramid_2.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
# Configuració compartida per totes les sales de la piràmide 3. Cada sala
|
||||||
|
# (r1..r6) hereta aquests camps via el merge recursiu de `RoomYaml::loadMerged`:
|
||||||
|
# el YAML de sala només declara el que canvia (room, geometry, data, entities,
|
||||||
|
# i opcionalment overrides puntuals de `lighting`).
|
||||||
|
|
||||||
|
pyramid: 3
|
||||||
|
tileset: data/tilesets/pyramid_3.gif
|
||||||
|
tile_size: 16
|
||||||
|
origin: [-8, 0]
|
||||||
|
|
||||||
|
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
||||||
|
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
||||||
|
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
||||||
|
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
||||||
|
# per desactivar el pintat per a aquest jugador.
|
||||||
|
player1_paint_tile: 0
|
||||||
|
player2_paint_tile: 1
|
||||||
|
|
||||||
|
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
||||||
|
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
||||||
|
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
||||||
|
# s'anul·len (sense push, sense moviment).
|
||||||
|
push_factor: 0.30
|
||||||
|
|
||||||
|
# Il·luminació per defecte: additive amb halos càlids subtils a les
|
||||||
|
# antorxes. Les sales que vulguin l'estil "fosc amb forats" (subtractive)
|
||||||
|
# poden redeclarar `lighting:` sencer; el merge no fusiona "additive"
|
||||||
|
# amb "subtractive", la sala guanya.
|
||||||
|
lighting:
|
||||||
|
mode: additive
|
||||||
|
level: 1.0
|
||||||
|
emitters:
|
||||||
|
torches:
|
||||||
|
radius: 23
|
||||||
|
color: [255, 170, 60]
|
||||||
|
flicker_params:
|
||||||
|
wave_amplitude_ratio: 0.04
|
||||||
|
wave_frequency_hz: 3.0
|
||||||
|
noise_amplitude_ratio: 0.025
|
||||||
|
noise_frequency_hz: 0
|
||||||
|
players: false
|
||||||
|
mummies: false
|
||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_3.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 3
|
|
||||||
room: 1
|
room: 1
|
||||||
tileset: data/tilesets/pyramid_3.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_3.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 3
|
|
||||||
room: 2
|
room: 2
|
||||||
tileset: data/tilesets/pyramid_3.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_3.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 3
|
|
||||||
room: 3
|
room: 3
|
||||||
tileset: data/tilesets/pyramid_3.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_3.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 3
|
|
||||||
room: 4
|
room: 4
|
||||||
tileset: data/tilesets/pyramid_3.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_3.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 3
|
|
||||||
room: 5
|
room: 5
|
||||||
tileset: data/tilesets/pyramid_3.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_3.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 3
|
|
||||||
room: 6
|
room: 6
|
||||||
tileset: data/tilesets/pyramid_3.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
# Configuració compartida per totes les sales de la piràmide 4. Cada sala
|
||||||
|
# (r1..r6) hereta aquests camps via el merge recursiu de `RoomYaml::loadMerged`:
|
||||||
|
# el YAML de sala només declara el que canvia (room, geometry, data, entities,
|
||||||
|
# i opcionalment overrides puntuals de `lighting`).
|
||||||
|
|
||||||
|
pyramid: 4
|
||||||
|
tileset: data/tilesets/pyramid_4.gif
|
||||||
|
tile_size: 16
|
||||||
|
origin: [-8, 0]
|
||||||
|
|
||||||
|
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
||||||
|
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
||||||
|
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
||||||
|
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
||||||
|
# per desactivar el pintat per a aquest jugador.
|
||||||
|
player1_paint_tile: 0
|
||||||
|
player2_paint_tile: 1
|
||||||
|
|
||||||
|
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
||||||
|
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
||||||
|
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
||||||
|
# s'anul·len (sense push, sense moviment).
|
||||||
|
push_factor: 0.30
|
||||||
|
|
||||||
|
# Il·luminació per defecte: additive amb halos càlids subtils a les
|
||||||
|
# antorxes. Les sales que vulguin l'estil "fosc amb forats" (subtractive)
|
||||||
|
# poden redeclarar `lighting:` sencer; el merge no fusiona "additive"
|
||||||
|
# amb "subtractive", la sala guanya.
|
||||||
|
lighting:
|
||||||
|
mode: additive
|
||||||
|
level: 1.0
|
||||||
|
emitters:
|
||||||
|
torches:
|
||||||
|
radius: 23
|
||||||
|
color: [255, 170, 60]
|
||||||
|
flicker_params:
|
||||||
|
wave_amplitude_ratio: 0.04
|
||||||
|
wave_frequency_hz: 3.0
|
||||||
|
noise_amplitude_ratio: 0.025
|
||||||
|
noise_frequency_hz: 0
|
||||||
|
players: false
|
||||||
|
mummies: false
|
||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_4.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 4
|
|
||||||
room: 1
|
room: 1
|
||||||
tileset: data/tilesets/pyramid_4.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_4.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 4
|
|
||||||
room: 2
|
room: 2
|
||||||
tileset: data/tilesets/pyramid_4.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_4.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 4
|
|
||||||
room: 3
|
room: 3
|
||||||
tileset: data/tilesets/pyramid_4.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_4.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 4
|
|
||||||
room: 4
|
room: 4
|
||||||
tileset: data/tilesets/pyramid_4.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_4.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 4
|
|
||||||
room: 5
|
room: 5
|
||||||
tileset: data/tilesets/pyramid_4.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_4.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 4
|
|
||||||
room: 6
|
room: 6
|
||||||
tileset: data/tilesets/pyramid_4.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
# Configuració compartida per totes les sales de la piràmide 5. Cada sala
|
||||||
|
# (r1..r6) hereta aquests camps via el merge recursiu de `RoomYaml::loadMerged`:
|
||||||
|
# el YAML de sala només declara el que canvia (room, geometry, data, entities,
|
||||||
|
# i opcionalment overrides puntuals de `lighting`).
|
||||||
|
|
||||||
|
pyramid: 5
|
||||||
|
tileset: data/tilesets/pyramid_5.gif
|
||||||
|
tile_size: 16
|
||||||
|
origin: [-8, 0]
|
||||||
|
|
||||||
|
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
||||||
|
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
||||||
|
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
||||||
|
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
||||||
|
# per desactivar el pintat per a aquest jugador.
|
||||||
|
player1_paint_tile: 0
|
||||||
|
player2_paint_tile: 1
|
||||||
|
|
||||||
|
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
||||||
|
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
||||||
|
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
||||||
|
# s'anul·len (sense push, sense moviment).
|
||||||
|
push_factor: 0.30
|
||||||
|
|
||||||
|
# Il·luminació per defecte: additive amb halos càlids subtils a les
|
||||||
|
# antorxes. Les sales que vulguin l'estil "fosc amb forats" (subtractive)
|
||||||
|
# poden redeclarar `lighting:` sencer; el merge no fusiona "additive"
|
||||||
|
# amb "subtractive", la sala guanya.
|
||||||
|
lighting:
|
||||||
|
mode: additive
|
||||||
|
level: 1.0
|
||||||
|
emitters:
|
||||||
|
torches:
|
||||||
|
radius: 23
|
||||||
|
color: [255, 170, 60]
|
||||||
|
flicker_params:
|
||||||
|
wave_amplitude_ratio: 0.04
|
||||||
|
wave_frequency_hz: 3.0
|
||||||
|
noise_amplitude_ratio: 0.025
|
||||||
|
noise_frequency_hz: 0
|
||||||
|
players: false
|
||||||
|
mummies: false
|
||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_5.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 5
|
|
||||||
room: 1
|
room: 1
|
||||||
tileset: data/tilesets/pyramid_5.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_5.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 5
|
|
||||||
room: 2
|
room: 2
|
||||||
tileset: data/tilesets/pyramid_5.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_5.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 5
|
|
||||||
room: 3
|
room: 3
|
||||||
tileset: data/tilesets/pyramid_5.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_5.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 5
|
|
||||||
room: 4
|
room: 4
|
||||||
tileset: data/tilesets/pyramid_5.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_5.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 5
|
|
||||||
room: 5
|
room: 5
|
||||||
tileset: data/tilesets/pyramid_5.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,33 +1,4 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre pyramid_5.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
pyramid: 5
|
|
||||||
room: 6
|
room: 6
|
||||||
tileset: data/tilesets/pyramid_5.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
||||||
|
|||||||
@@ -1,138 +0,0 @@
|
|||||||
# Mapa de la piràmide: graella 21×15 de tiles 16×16 sobre tomb.gif.
|
|
||||||
# Overscan horitzontal: 8 px per banda (les parets laterals ocupen 2 tiles
|
|
||||||
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
|
|
||||||
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
|
|
||||||
#
|
|
||||||
# Format del tilemap:
|
|
||||||
# `data` és una llista de files; cada fila és una llista d'índexs del
|
|
||||||
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
|
|
||||||
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
|
|
||||||
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
|
|
||||||
|
|
||||||
tileset: data/tilesets/tomb.gif
|
|
||||||
tile_size: 16
|
|
||||||
origin: [-8, 0]
|
|
||||||
|
|
||||||
# Índex de tile amb què cada jugador deixa rastre en trepitjar un sòl
|
|
||||||
# pintable. Un índex per jugador perquè a multijugador local el recorregut
|
|
||||||
# es distingeix a simple vista. Provisional fins que l'art del pintat
|
|
||||||
# estigui definit; canviar aquí l'índex és tot el que cal. Omet el camp
|
|
||||||
# per desactivar el pintat per a aquest jugador.
|
|
||||||
player1_paint_tile: 0
|
|
||||||
player2_paint_tile: 1
|
|
||||||
|
|
||||||
# Física del contacte entre jugadors. Quan un jugador està quiet i l'altre
|
|
||||||
# el topa, el segon l'empenta a aquesta fracció de la velocitat normal (i
|
|
||||||
# ell mateix es ralentitza per mantenir el grup). En head-on, ambdós
|
|
||||||
# s'anul·len (sense push, sense moviment).
|
|
||||||
push_factor: 0.30
|
|
||||||
|
|
||||||
# Geometria lògica de la piràmide (separada del render visual del tileset).
|
|
||||||
# La graella de sarcòfags, el pitch entre ells i les amplades dels murs
|
|
||||||
# decideixen els límits del jugador i les seues caixes de col·lisió. Abans
|
|
||||||
# vivien com a `static constexpr` a map.hpp; ara cada piràmide pot definir
|
|
||||||
# la seua pròpia forma sense recompilar.
|
|
||||||
geometry:
|
|
||||||
grid_cols: 4
|
|
||||||
grid_rows: 5
|
|
||||||
sarc_w: 48
|
|
||||||
sarc_h: 16
|
|
||||||
pitch_x: 64
|
|
||||||
pitch_y: 32
|
|
||||||
hud_h: 24
|
|
||||||
back_wall_h: 24
|
|
||||||
side_wall_w: 24
|
|
||||||
# Columna central del tile transitable de la porta. La porta es renderitza
|
|
||||||
# com a sprite 48×32 (3 tiles d'amplada) centrat sobre aquesta columna; els
|
|
||||||
# 16 px centrals (just aquesta columna) són el "forat" del mur trasser per
|
|
||||||
# on el jugador surt de la sala. Les 2 columnes flanquejants segueixen sent
|
|
||||||
# mur visible. El spawn dels jugadors també s'alinea amb aquesta columna.
|
|
||||||
door_col: 10
|
|
||||||
|
|
||||||
data:
|
|
||||||
- [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
|
||||||
- [ 1, 91,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, 92, 1]
|
|
||||||
- [ 1, 98,113,113, 95,113, 94,113,113,113,113,113,113,113, 94,113,102,113,113, 96, 1]
|
|
||||||
- [ 1, 98, 8, 8, 6, 8, 17, 8, 10, 8, 17, 8, 8, 8, 17, 8, 8, 8, 8, 96, 1]
|
|
||||||
- [ 1, 98, 8, 2, 2, 2, 8, 2, 2, 2, 8, 2, 2, 2, 8, 2, 2, 2, 8, 96, 1]
|
|
||||||
- [ 1, 98, 17, 8, 9, 2, 8, 10, 8, 8, 8, 8, 10, 8, 8, 26, 8, 8, 17, 96, 1]
|
|
||||||
- [ 1, 98, 8, 2, 2, 2, 2, 2, 2, 2, 8, 2, 2, 2, 8, 2, 2, 2, 8, 96, 1]
|
|
||||||
- [ 1, 98, 17, 8, 8, 26, 8, 8, 9, 8, 8, 8, 8, 8, 10, 8, 6, 8, 17, 96, 1]
|
|
||||||
- [ 1, 98, 8, 2, 2, 2, 8, 2, 2, 2, 8, 2, 2, 2, 8, 2, 2, 2, 8, 96, 1]
|
|
||||||
- [ 1, 98, 17, 8, 10, 8, 8, 8, 2, 8, 8, 8, 9, 8, 8, 8, 10, 8, 17, 96, 1]
|
|
||||||
- [ 1, 98, 8, 2, 2, 2, 8, 2, 2, 2, 6, 2, 2, 2, 8, 2, 2, 2, 8, 96, 1]
|
|
||||||
- [ 1, 98, 17, 8, 10, 8, 8, 10, 2, 8, 8, 26, 8, 8, 8, 8, 10, 8, 17, 96, 1]
|
|
||||||
- [ 1, 98, 8, 2, 2, 2, 8, 2, 2, 2, 8, 2, 2, 2, 8, 2, 2, 2, 8, 96, 1]
|
|
||||||
- [ 1, 98, 8, 10, 6, 6, 17, 8, 8, 8, 17, 8, 9, 8, 17, 8, 2, 8, 8, 96, 1]
|
|
||||||
- [ 1, 99, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,100, 1]
|
|
||||||
|
|
||||||
# Spawns d'entitats per a aquest nivell. Es llegeixen des de
|
|
||||||
# EntityManager::loadFromLevel al GameScene. Convencions:
|
|
||||||
# - sarcophagus → `sarc_position: [sarc_col, sarc_row]` en la graella de
|
|
||||||
# sarcòfags (4×5). EntityManager calcula el rect píxel via
|
|
||||||
# Map::getSarcRect i l'ancoratge de tile per al perímetre.
|
|
||||||
# - la resta (torch, door, mummy, rolling_rock, wall_trap, floor_trap)
|
|
||||||
# → `position: [tile_col, tile_row]` en coordenades del tilemap
|
|
||||||
# (origen `[-8, 0]` per defecte). Pixel = tile*16 + tilemap_origin.
|
|
||||||
#
|
|
||||||
# Dos sarcòfags en cantonades oposades → perímetres aïllats (cap tile en
|
|
||||||
# comú). La porta va al centre inferior, on el tilemap té els tiles
|
|
||||||
# d'obertura (262/263). La momia al corredor central. L'antorxa al costat
|
|
||||||
# superior esquerre per verificar render d'una entitat decorativa.
|
|
||||||
entities:
|
|
||||||
- type: torch
|
|
||||||
position: [4, 2]
|
|
||||||
- type: torch
|
|
||||||
position: [8, 2]
|
|
||||||
- type: torch
|
|
||||||
position: [12, 2]
|
|
||||||
- type: torch
|
|
||||||
position: [16, 2]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [0, 0]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [1, 0]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [2, 0]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [3, 0]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [0, 1]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [1, 1]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [2, 1]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [3, 1]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [0, 2]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [1, 2]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [2, 2]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [3, 2]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [0, 3]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [1, 3]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [2, 3]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [3, 3]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [0, 4]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [1, 4]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [2, 4]
|
|
||||||
- type: sarcophagus
|
|
||||||
sarc_position: [3, 4]
|
|
||||||
- type: door
|
|
||||||
# Sense `position`: la porta sempre viu al mur trasser. La columna
|
|
||||||
# transitable la dicta `geometry.door_col`; el render i la caixa
|
|
||||||
# de col·lisió es deriven d'aquesta dada al loadFromLevel.
|
|
||||||
- type: mummy
|
|
||||||
position: [10, 7]
|
|
||||||
- type: mummy
|
|
||||||
position: [7, 9]
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
JASC-PAL
|
|
||||||
0100
|
|
||||||
32
|
|
||||||
0 0 0
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||
217 217 217
|
|
||||||