feat: bigger characters (16 sub-bodies), wider terminal viewport

- Entity: 16 sub-bodies (was 7), radius 0.7 (was 0.4), full humanoid
  shape: head, shoulders, torso, arms, hips, legs, feet
- Terminal: viewport up to 250x80 (was 120x50), uses full terminal size
- Camera: uses renderer viewport dimensions instead of hardcoded values
- Physics: constraint correction clamped to 0.5 cells max, 8 substeps
  (was 4), gravity 0.04 (was 0.08), collision pass after each constraint
  iteration to prevent tunneling with larger bodies
- Player: move_speed 0.3, jump_force 1.2 for bigger body
- Spawn: 6 cells above surface (was 4) for taller body
This commit is contained in:
Emil
2026-06-20 21:27:11 +03:00
parent 7f4b1dde5e
commit 9fe7137e45
8 changed files with 349 additions and 316 deletions
+249 -271
View File
@@ -1,12 +1,12 @@
=== Verbatim Headless Run: 120 ticks ===
=== Verbatim Headless Run: 30 ticks ===
World: 250x250
Player start: (125.0, 242.4)
Camera: (85, 230)
Player start: (125.0, 240.7)
Camera: (85, 228)
=== Tick 0 (initial state) ===
Camera (85, 230):
9 0 1 2 3 4 5 6
28
29
30
31
32
@@ -14,14 +14,14 @@ Camera: (85, 230)
34
35
36
37
38
39
40
41 @
42 @@
43 @@ """""""""""""
44""" @ "":::::::::::::"""
37 @
38 @@
39 @ @@
40 @ @ @ @
41 @ @
42
43 @ @ """""""""""""
44""" @ @ "":::::::::::::"""
45:::""" """::::::::::::::::::""
46::::::"" "":::::::::::::::::::::::"""
47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""
@@ -30,14 +30,101 @@ Camera: (85, 230)
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(125.0,240.7) bodies=16/16 on_fire=false"
Entities: 1
=== Tick 3 ===
33
34
35
36
37
38
39
40
41
42
43 @ """""""""""""
44""" @@@ "":::::::::::::"""
45:::""" @ @ """::::::::::::::::::""
46::::::"" @@@@@"":::::::::::::::::::::::"""
47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(125.0,242.4) bodies=7/7 on_fire=false"
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(125.2,245.7) bodies=16/16 on_fire=false"
Entities: 1
Alive entities: Player(hp=100, pos=(125.2155, 245.7384))
=== Tick 6 ===
33
34
35
36
37
38
39
40
41
42
43 @@ """""""""""""
44""" @ @@ "":::::::::::::"""
45:::""" @ """::::::::::::::::::""
46::::::"" @@@@@"":::::::::::::::::::::::"""
47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(125.1,245.6) bodies=16/16 on_fire=false"
Entities: 1
Alive entities: Player(hp=100, pos=(125.12183, 245.58759))
=== Tick 9 ===
33
34
35
36
37
38
39
40
41
42
43" @@ """""""""""""
44:""" @ @ @ "":::::::::::::"""
45::::""" @ """::::::::::::::::::""
46:::::::"" @@@@ "":::::::::::::::::::::::"""
47:::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(125.0,245.6) bodies=16/16 on_fire=false"
Entities: 1
Alive entities: Player(hp=100, pos=(124.960976, 245.61632))
=== Tick 12 ===
Camera (87, 234):
9 0 1 2 3 4 5 6
33
34
35
36
@@ -47,11 +134,11 @@ Entities: 1
40
41
42
43 """""""""""""
44" "":::::::::::::"""
45:""" @@ """::::::::::::::::::""
46::::"" @@"":::::::::::::::::::::::"""
47::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""""
43" @@ """""""""""""
44:""" @@ @ "":::::::::::::"""
45::::""" @ """::::::::::::::::::""
46:::::::"" @@@@ "":::::::::::::::::::::::"""
47:::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
@@ -62,14 +149,102 @@ Entities: 1
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
58????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(127.1,246.4) bodies=7/7 on_fire=false"
Player: "Player hp=100.0/100.0 pos=(124.9,245.6) bodies=16/16 on_fire=false"
Entities: 1
Alive entities: Player(hp=100, pos=(127.054695, 246.36816))
Alive entities: Player(hp=100, pos=(124.91231, 245.6163))
=== Tick 15 ===
33
34
35
36
37
38
39
40
41
42
43" @@ """""""""""""
44:""" @ @ @ "":::::::::::::"""
45::::""" @ """::::::::::::::::::""
46:::::::"" @@@@ "":::::::::::::::::::::::"""
47:::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(124.9,245.6) bodies=16/16 on_fire=false"
Entities: 1
Alive entities: Player(hp=100, pos=(124.94001, 245.61577))
=== Tick 18 ===
33
34
35
36
37
38
39
40
41
42
43" @@ """""""""""""
44:""" @ @ @ "":::::::::::::"""
45::::""" @ """::::::::::::::::::""
46:::::::"" @@@@ "":::::::::::::::::::::::"""
47:::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(125.0,245.6) bodies=16/16 on_fire=false"
Entities: 1
Alive entities: Player(hp=100, pos=(124.97533, 245.61575))
=== Tick 21 ===
33
34
35
36
37
38
39
40
41
42
43" @@ """""""""""""
44:""" @ @ @ "":::::::::::::"""
45::::""" @ """::::::::::::::::::""
46:::::::"" @@@@ "":::::::::::::::::::::::"""
47:::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(125.0,245.6) bodies=16/16 on_fire=false"
Entities: 1
Alive entities: Player(hp=100, pos=(124.99407, 245.61584))
=== Tick 24 ===
Camera (86, 234):
9 0 1 2 3 4 5 6
33
34
35
36
@@ -79,11 +254,11 @@ Alive entities: Player(hp=100, pos=(127.054695, 246.36816))
40
41
42
43 """""""""""""
44"" "":::::::::::::"""
45::""" @@ """::::::::::::::::::""
46:::::"" @@@"":::::::::::::::::::::::"""
47:::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""""
43 @@ """""""""""""
44""" @ @ @ "":::::::::::::"""
45:::""" @ """::::::::::::::::::""
46::::::"" @@@@ "":::::::::::::::::::::::"""
47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
@@ -94,14 +269,12 @@ Alive entities: Player(hp=100, pos=(127.054695, 246.36816))
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
58????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(126.6,246.4) bodies=7/7 on_fire=false"
Player: "Player hp=100.0/100.0 pos=(125.0,245.6) bodies=16/16 on_fire=false"
Entities: 1
Alive entities: Player(hp=100, pos=(126.642654, 246.37305))
Alive entities: Player(hp=100, pos=(125.003, 245.61584))
=== Tick 36 ===
Camera (86, 234):
9 0 1 2 3 4 5 6
=== Tick 27 ===
33
34
35
36
@@ -109,13 +282,13 @@ Alive entities: Player(hp=100, pos=(126.642654, 246.37305))
38
39
40
41 g
42 ggg
43 """""""g"""""
44"" "":::::::::::::"""
45::""" @@ """::::::::::::::::::""
46:::::"" @@@"":::::::::::::::::::::::"""
47:::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""""
41
42
43 @@ """""""""""""
44""" @ @ @ "":::::::::::::"""
45:::""" @ """::::::::::::::::::""
46::::::"" @@@@ "":::::::::::::::::::::::"""
47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
@@ -126,232 +299,37 @@ Alive entities: Player(hp=100, pos=(126.642654, 246.37305))
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
58????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(126.9,246.4) bodies=7/7 on_fire=false"
Player: "Player hp=100.0/100.0 pos=(125.0,245.6) bodies=16/16 on_fire=false"
Entities: 1
Alive entities: Player(hp=100, pos=(125.00714, 245.61584))
=== Tick 30 ===
33
34
35
36
37
38
39 g
40 gg
41 g gg
42 g g g g
43 g g @@ """""""""""""
44""" @ @ @ "":::::::::::::"""
45:::""" g g @ """::::::::::::::::::""
46::::::"" g g @@@@ "":::::::::::::::::::::::"""
47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(125.0,245.6) bodies=16/16 on_fire=false"
Entities: 2
Alive entities: Player(hp=100, pos=(126.91838, 246.3771)), Goblin(hp=40, pos=(141.79904, 242.62468))
=== Tick 48 ===
Camera (86, 234):
9 0 1 2 3 4 5 6
34
35
36
37
38
39
40
41 g
42 ggg
43 """"""g""""""
44"" "":::::::::::::"""
45::""" @@ """::::::::::::::::::""
46:::::"" @@@"":::::::::::::::::::::::"""
47:::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
58????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(126.9,246.4) bodies=7/7 on_fire=false"
Entities: 2
Alive entities: Player(hp=100, pos=(126.92547, 246.37007)), Goblin(hp=40, pos=(141.31493, 242.59508))
=== Tick 60 ===
Camera (86, 234):
9 0 1 2 3 4 5 6
34
35
36
37 g
38 gg
39 gg
40 g
41 g
42 ggg
43 """"""g""""""
44"" "":::::::::::::"""
45::""" @@ """::::::::::::::::::""
46:::::"" @@@"":::::::::::::::::::::::"""
47:::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
58????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(126.9,246.4) bodies=7/7 on_fire=false"
Entities: 3
Alive entities: Player(hp=100, pos=(126.89856, 246.37102)), Goblin(hp=40, pos=(141.50412, 242.62273)), Goblin(hp=40, pos=(141.0, 238.42857))
=== Tick 72 ===
Camera (86, 234):
9 0 1 2 3 4 5 6
34
35
36
37
38
39
40
41 gg
42 ggg
43 """"""gg"""""
44"" "":::::::::::::"""
45::""" @@ """::::::::::::::::::""
46:::::"" @@@"":::::::::::::::::::::::"""
47:::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
58????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(126.9,246.4) bodies=7/7 on_fire=false"
Entities: 3
Alive entities: Player(hp=100, pos=(126.88849, 246.36723)), Goblin(hp=40, pos=(141.31738, 242.59448)), Goblin(hp=40, pos=(141.5151, 242.62154))
=== Tick 84 ===
Camera (86, 234):
9 0 1 2 3 4 5 6
34
35
36
37
38
39
40
41 gg
42 ggg
43 """""""g"""""
44"" "":::::::::::::"""
45::""" @@ """::::::::::::::::::""
46:::::"" @@@"":::::::::::::::::::::::"""
47:::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
58????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(126.9,246.4) bodies=7/7 on_fire=false"
Entities: 3
Alive entities: Player(hp=100, pos=(126.884605, 246.3688)), Goblin(hp=40, pos=(141.57698, 242.61453)), Goblin(hp=40, pos=(141.43205, 242.62611))
=== Tick 96 ===
Camera (86, 234):
9 0 1 2 3 4 5 6
34
35
36
37
38
39
40
41 gg
42 ggg
43 """"""gg"""""
44"" "":::::::::::::"""
45::""" @@ """::::::::::::::::::""
46:::::"" @@@"":::::::::::::::::::::::"""
47:::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
58????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(126.9,246.4) bodies=7/7 on_fire=false"
Entities: 4
Alive entities: Player(hp=100, pos=(126.883316, 246.37033)), Goblin(hp=40, pos=(141.46056, 242.62148)), Goblin(hp=40, pos=(141.5288, 242.61539)), Goblin(hp=40, pos=(141.79904, 242.62468))
=== Tick 108 ===
Camera (86, 234):
9 0 1 2 3 4 5 6
34
35
36
37
38
39
40
41 g
42 ggg
43 """"""gg"""""
44"" "":::::::::::::"""
45::""" @@ """::::::::::::::::::""
46:::::"" @@@"":::::::::::::::::::::::"""
47:::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
58????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(126.9,246.4) bodies=7/7 on_fire=false"
Entities: 4
Alive entities: Player(hp=100, pos=(126.882866, 246.37112)), Goblin(hp=40, pos=(141.4156, 242.61002)), Goblin(hp=40, pos=(141.47725, 242.62231)), Goblin(hp=40, pos=(141.31493, 242.59508))
=== Tick 120 ===
Camera (86, 234):
9 0 1 2 3 4 5 6
34
35
36
37
38
39
40
41 gg
42 ggg
43 """"""gg"""""
44"" "":::::::::::::"""
45::""" @@ """::::::::::::::::::""
46:::::"" @@@"":::::::::::::::::::::::"""
47:::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
58????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(126.9,246.4) bodies=7/7 on_fire=false"
Entities: 4
Alive entities: Player(hp=100, pos=(126.88255, 246.37636)), Goblin(hp=40, pos=(141.61978, 242.61577)), Goblin(hp=40, pos=(141.36923, 242.5867)), Goblin(hp=40, pos=(141.50412, 242.62273))
Alive entities: Player(hp=100, pos=(125.009735, 245.61584)), Goblin(hp=40, pos=(110.0, 242.69376))