c4beeae38f
Top-down twin-stick bullet-hell, Godot 4.7, server-authoritative dedicated server with client-side prediction. Clients send input only; the server resolves every hit for both players and enemies (no PvP). - SimWorld: whole simulation as plain RefCounted objects (no nodes, no physics server), ~0.24ms/tick at peak load -- runs headless for free and drives 78 tests in under a second - BulletPool: struct-of-arrays bullet storage, replicated as spawn/despawn events rather than per-tick state - Emitter framework (Ring/AimedSpread/WallGap/ArcSweep) shared by trash enemies and bosses -- a new boss is data in src/content/content.gd, no simulation changes - The Warden of the Fold: stationary 4-phase boss built entirely on that format - Lobby hub with a portal into on-demand dungeon instances; one process hosts the hub plus every concurrent dungeon - Emergency escape: 3s server-owned channel, cancelled by damage - tools/check.sh, test.sh (GUT), smoke.sh (real server + bot clients over ENet), bench.gd; git hooks wired to the same scripts - docs/ARCHITECTURE.md, NETCODE.md, WORKFLOW.md, ROADMAP.md
71 lines
1.1 KiB
GDScript
71 lines
1.1 KiB
GDScript
var _are_equal = false
|
|
var are_equal = false :
|
|
get:
|
|
return get_are_equal()
|
|
set(val):
|
|
set_are_equal(val)
|
|
|
|
var _summary = null
|
|
var summary = null :
|
|
get:
|
|
return get_summary()
|
|
set(val):
|
|
set_summary(val)
|
|
|
|
var _max_differences = 30
|
|
var max_differences = 30 :
|
|
get:
|
|
return get_max_differences()
|
|
set(val):
|
|
set_max_differences(val)
|
|
|
|
var _differences = {}
|
|
var differences :
|
|
get:
|
|
return get_differences()
|
|
set(val):
|
|
set_differences(val)
|
|
|
|
func _block_set(which, val):
|
|
push_error(str('cannot set ', which, ', value [', val, '] ignored.'))
|
|
|
|
func _to_string():
|
|
return str(get_summary()) # could be null, gotta str it.
|
|
|
|
func get_are_equal():
|
|
return _are_equal
|
|
|
|
func set_are_equal(r_eq):
|
|
_are_equal = r_eq
|
|
|
|
func get_summary():
|
|
return _summary
|
|
|
|
func set_summary(smry):
|
|
_summary = smry
|
|
|
|
func get_total_count():
|
|
pass
|
|
|
|
func get_different_count():
|
|
pass
|
|
|
|
func get_short_summary():
|
|
return summary
|
|
|
|
func get_max_differences():
|
|
return _max_differences
|
|
|
|
func set_max_differences(max_diff):
|
|
_max_differences = max_diff
|
|
|
|
func get_differences():
|
|
return _differences
|
|
|
|
func set_differences(diffs):
|
|
_block_set('differences', diffs)
|
|
|
|
func get_brackets():
|
|
return null
|
|
|