Compare commits

..
5 Commits
Author SHA1 Message Date
Leonid PershinandClaude Fable 5 35781a21ca Bump engine: pathfinding and collision detection modules
MrGameEng.Pathfinding (A*/Dijkstra/BFS + flow fields for crowds) and
MrGameEng.Collisions (spatial hash, pairs/queries/raycast) are now in
LittleSim.sln. Flow fields are the planned steering tool for villagers.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 13:40:09 +03:00
Leonid PershinandClaude Fable 5 e3ad22c4bd Regenerate atlases for the lowercase textures/ tree, fix region keys
New texture groups (ui, world, weather, damage, designations) packed into
31 atlases; directories are lowercase now, so scene code switches to the
new region keys (filenames keep their case).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 12:28:56 +03:00
Leonid PershinandClaude Fable 5 fa7f27642c Add TerrainScene: code-built tilemap terrain with pawns and props
Small seed-generated terrain rendered as a single Tilemap entity: water,
sand and mountains are tinted tiles, grass and forest use atlas textures.
Three wandering pawns and a few props (snowman, lamp, stool, trees) live
on the shared Y-sort layer (now in GameLayers, used by both scenes).
Console: 'terrain [seed]' from the world scene, 'regen'/'world' inside.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 10:36:27 +03:00
Leonid PershinandClaude Fable 5 56dd760a2c Bump engine: MrGameEng.Tilemaps module
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 10:24:48 +03:00
Leonid PershinandClaude Fable 5 3c777c53b8 Pack Textures/ into atlases and render the world from them
Engine bump brings MrGameEng.Atlases (atlas builder + runtime loader).
Textures/ (2747 images) is packed by MrGameEng.AtlasTool into 10 atlases
(93 pages) under Assets/Atlases, loaded through generated handles.
Beings now draw pawn bodies, forest cells grow trees (both Y-sorted),
and the dev console gains 'atlas [name] [filter]' for inspection.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 09:03:35 +03:00
4252 changed files with 33922 additions and 13 deletions
+13
View File
@@ -25,6 +25,19 @@ dotnet run --project src/LittleSim -c Release # measure perf in Release only
dotnet test LittleSim.sln # runs the engine test suites
```
## Texture atlases
Source images live in `textures/` (committed); the game only loads packed atlases from
`src/LittleSim/Assets/Atlases` (also committed — the asset generator emits
`GameAssets.Atlases.*` handles for them). After changing `textures/`, rebuild with:
```
dotnet run --project engine/tools/MrGameEng.AtlasTool -c Release -- textures src/LittleSim/Assets/Atlases --group-depth 2
```
Rebuilds are incremental (unchanged groups are skipped). Region keys are paths relative
to `textures/` without extension: `atlas.GetRegion("things/plant/treeoak/TreeOakA")`.
## Submodule workflow
Engine changes are committed **inside `engine/` first** (engine repo, its commit style),
+60
View File
@@ -39,6 +39,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MrGameEng.Graphics.Tests",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MrGameEng.Input.Tests", "engine\tests\MrGameEng.Input.Tests\MrGameEng.Input.Tests.csproj", "{E9B94072-798E-4E09-BD9E-1FE6165D7EA4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MrGameEng.Pathfinding", "engine\src\MrGameEng.Pathfinding\MrGameEng.Pathfinding.csproj", "{DC52F36D-2729-42DD-B1ED-B0D0CF95DC30}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MrGameEng.Collisions", "engine\src\MrGameEng.Collisions\MrGameEng.Collisions.csproj", "{9406DB4C-FABF-48FE-BEA7-25AD319D2172}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MrGameEng.Pathfinding.Tests", "engine\tests\MrGameEng.Pathfinding.Tests\MrGameEng.Pathfinding.Tests.csproj", "{47E5E756-64F9-4B5A-8EC3-B016745166C4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MrGameEng.Collisions.Tests", "engine\tests\MrGameEng.Collisions.Tests\MrGameEng.Collisions.Tests.csproj", "{B9161776-32FE-415E-9401-DC5BB87FC225}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -217,6 +225,54 @@ Global
{E9B94072-798E-4E09-BD9E-1FE6165D7EA4}.Release|x64.Build.0 = Release|Any CPU
{E9B94072-798E-4E09-BD9E-1FE6165D7EA4}.Release|x86.ActiveCfg = Release|Any CPU
{E9B94072-798E-4E09-BD9E-1FE6165D7EA4}.Release|x86.Build.0 = Release|Any CPU
{DC52F36D-2729-42DD-B1ED-B0D0CF95DC30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DC52F36D-2729-42DD-B1ED-B0D0CF95DC30}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC52F36D-2729-42DD-B1ED-B0D0CF95DC30}.Debug|x64.ActiveCfg = Debug|Any CPU
{DC52F36D-2729-42DD-B1ED-B0D0CF95DC30}.Debug|x64.Build.0 = Debug|Any CPU
{DC52F36D-2729-42DD-B1ED-B0D0CF95DC30}.Debug|x86.ActiveCfg = Debug|Any CPU
{DC52F36D-2729-42DD-B1ED-B0D0CF95DC30}.Debug|x86.Build.0 = Debug|Any CPU
{DC52F36D-2729-42DD-B1ED-B0D0CF95DC30}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DC52F36D-2729-42DD-B1ED-B0D0CF95DC30}.Release|Any CPU.Build.0 = Release|Any CPU
{DC52F36D-2729-42DD-B1ED-B0D0CF95DC30}.Release|x64.ActiveCfg = Release|Any CPU
{DC52F36D-2729-42DD-B1ED-B0D0CF95DC30}.Release|x64.Build.0 = Release|Any CPU
{DC52F36D-2729-42DD-B1ED-B0D0CF95DC30}.Release|x86.ActiveCfg = Release|Any CPU
{DC52F36D-2729-42DD-B1ED-B0D0CF95DC30}.Release|x86.Build.0 = Release|Any CPU
{9406DB4C-FABF-48FE-BEA7-25AD319D2172}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9406DB4C-FABF-48FE-BEA7-25AD319D2172}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9406DB4C-FABF-48FE-BEA7-25AD319D2172}.Debug|x64.ActiveCfg = Debug|Any CPU
{9406DB4C-FABF-48FE-BEA7-25AD319D2172}.Debug|x64.Build.0 = Debug|Any CPU
{9406DB4C-FABF-48FE-BEA7-25AD319D2172}.Debug|x86.ActiveCfg = Debug|Any CPU
{9406DB4C-FABF-48FE-BEA7-25AD319D2172}.Debug|x86.Build.0 = Debug|Any CPU
{9406DB4C-FABF-48FE-BEA7-25AD319D2172}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9406DB4C-FABF-48FE-BEA7-25AD319D2172}.Release|Any CPU.Build.0 = Release|Any CPU
{9406DB4C-FABF-48FE-BEA7-25AD319D2172}.Release|x64.ActiveCfg = Release|Any CPU
{9406DB4C-FABF-48FE-BEA7-25AD319D2172}.Release|x64.Build.0 = Release|Any CPU
{9406DB4C-FABF-48FE-BEA7-25AD319D2172}.Release|x86.ActiveCfg = Release|Any CPU
{9406DB4C-FABF-48FE-BEA7-25AD319D2172}.Release|x86.Build.0 = Release|Any CPU
{47E5E756-64F9-4B5A-8EC3-B016745166C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{47E5E756-64F9-4B5A-8EC3-B016745166C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{47E5E756-64F9-4B5A-8EC3-B016745166C4}.Debug|x64.ActiveCfg = Debug|Any CPU
{47E5E756-64F9-4B5A-8EC3-B016745166C4}.Debug|x64.Build.0 = Debug|Any CPU
{47E5E756-64F9-4B5A-8EC3-B016745166C4}.Debug|x86.ActiveCfg = Debug|Any CPU
{47E5E756-64F9-4B5A-8EC3-B016745166C4}.Debug|x86.Build.0 = Debug|Any CPU
{47E5E756-64F9-4B5A-8EC3-B016745166C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{47E5E756-64F9-4B5A-8EC3-B016745166C4}.Release|Any CPU.Build.0 = Release|Any CPU
{47E5E756-64F9-4B5A-8EC3-B016745166C4}.Release|x64.ActiveCfg = Release|Any CPU
{47E5E756-64F9-4B5A-8EC3-B016745166C4}.Release|x64.Build.0 = Release|Any CPU
{47E5E756-64F9-4B5A-8EC3-B016745166C4}.Release|x86.ActiveCfg = Release|Any CPU
{47E5E756-64F9-4B5A-8EC3-B016745166C4}.Release|x86.Build.0 = Release|Any CPU
{B9161776-32FE-415E-9401-DC5BB87FC225}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9161776-32FE-415E-9401-DC5BB87FC225}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9161776-32FE-415E-9401-DC5BB87FC225}.Debug|x64.ActiveCfg = Debug|Any CPU
{B9161776-32FE-415E-9401-DC5BB87FC225}.Debug|x64.Build.0 = Debug|Any CPU
{B9161776-32FE-415E-9401-DC5BB87FC225}.Debug|x86.ActiveCfg = Debug|Any CPU
{B9161776-32FE-415E-9401-DC5BB87FC225}.Debug|x86.Build.0 = Debug|Any CPU
{B9161776-32FE-415E-9401-DC5BB87FC225}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9161776-32FE-415E-9401-DC5BB87FC225}.Release|Any CPU.Build.0 = Release|Any CPU
{B9161776-32FE-415E-9401-DC5BB87FC225}.Release|x64.ActiveCfg = Release|Any CPU
{B9161776-32FE-415E-9401-DC5BB87FC225}.Release|x64.Build.0 = Release|Any CPU
{B9161776-32FE-415E-9401-DC5BB87FC225}.Release|x86.ActiveCfg = Release|Any CPU
{B9161776-32FE-415E-9401-DC5BB87FC225}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -238,5 +294,9 @@ Global
{A3C128F7-6CCD-46CD-B935-C30E15EC7E1C} = {CD3B5CE5-C23F-38B4-04AA-A303F94731A5}
{21B1878F-2532-4D48-95DD-1C7268DCF1D5} = {CD3B5CE5-C23F-38B4-04AA-A303F94731A5}
{E9B94072-798E-4E09-BD9E-1FE6165D7EA4} = {CD3B5CE5-C23F-38B4-04AA-A303F94731A5}
{DC52F36D-2729-42DD-B1ED-B0D0CF95DC30} = {F4A69A46-AF86-AB4E-7D23-4CCCB7B9A519}
{9406DB4C-FABF-48FE-BEA7-25AD319D2172} = {F4A69A46-AF86-AB4E-7D23-4CCCB7B9A519}
{47E5E756-64F9-4B5A-8EC3-B016745166C4} = {CD3B5CE5-C23F-38B4-04AA-A303F94731A5}
{B9161776-32FE-415E-9401-DC5BB87FC225} = {CD3B5CE5-C23F-38B4-04AA-A303F94731A5}
EndGlobalSection
EndGlobal
+1 -1
Submodule engine updated: d6f19b9119...a395e58458
+55
View File
@@ -0,0 +1,55 @@
{
"version": 1,
"name": "damage",
"pageSize": 2048,
"padding": 2,
"pages": [
{
"file": "damage.atlas.0.png",
"width": 1024,
"height": 256
}
],
"regions": [
{
"key": "damage/corner",
"page": 0,
"x": 2,
"y": 2,
"w": 128,
"h": 128
},
{
"key": "damage/edge",
"page": 0,
"x": 132,
"y": 2,
"w": 128,
"h": 128
},
{
"key": "damage/scratch1",
"page": 0,
"x": 262,
"y": 2,
"w": 128,
"h": 128
},
{
"key": "damage/scratch2",
"page": 0,
"x": 392,
"y": 2,
"w": 128,
"h": 128
},
{
"key": "damage/scratch3",
"page": 0,
"x": 522,
"y": 2,
"w": 128,
"h": 128
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

@@ -0,0 +1,143 @@
{
"version": 1,
"name": "designations",
"pageSize": 2048,
"padding": 2,
"pages": [
{
"file": "designations.atlas.0.png",
"width": 2048,
"height": 128
}
],
"regions": [
{
"key": "designations/cutplant",
"page": 0,
"x": 2,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "designations/deconstruct",
"page": 0,
"x": 68,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "designations/flick",
"page": 0,
"x": 134,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "designations/harvestplant",
"page": 0,
"x": 200,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "designations/haul",
"page": 0,
"x": 266,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "designations/hunt",
"page": 0,
"x": 332,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "designations/mine",
"page": 0,
"x": 398,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "designations/open",
"page": 0,
"x": 464,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "designations/plan",
"page": 0,
"x": 530,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "designations/rearmtrap",
"page": 0,
"x": 596,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "designations/removefloor",
"page": 0,
"x": 662,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "designations/slaughter",
"page": 0,
"x": 728,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "designations/smoothfloor",
"page": 0,
"x": 794,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "designations/strip",
"page": 0,
"x": 860,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "designations/tame",
"page": 0,
"x": 926,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "designations/uninstall",
"page": 0,
"x": 992,
"y": 2,
"w": 64,
"h": 64
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

+79
View File
@@ -0,0 +1,79 @@
{
"version": 1,
"name": "other",
"pageSize": 2048,
"padding": 2,
"pages": [
{
"file": "other.atlas.0.png",
"width": 2048,
"height": 2048
}
],
"regions": [
{
"key": "other/fogofwar",
"page": 0,
"x": 1034,
"y": 1028,
"w": 128,
"h": 128
},
{
"key": "other/fogofwardetail",
"page": 0,
"x": 1542,
"y": 2,
"w": 256,
"h": 256
},
{
"key": "other/noise",
"page": 0,
"x": 2,
"y": 1028,
"w": 256,
"h": 256
},
{
"key": "other/ripples",
"page": 0,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "other/roughalphaadd",
"page": 0,
"x": 260,
"y": 1028,
"w": 256,
"h": 256
},
{
"key": "other/shieldbubble",
"page": 0,
"x": 518,
"y": 1028,
"w": 256,
"h": 256
},
{
"key": "other/snow",
"page": 0,
"x": 1028,
"y": 2,
"w": 512,
"h": 512
},
{
"key": "other/snowmacro",
"page": 0,
"x": 776,
"y": 1028,
"w": 256,
"h": 256
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

@@ -0,0 +1,63 @@
{
"version": 1,
"name": "terrain.scatter",
"pageSize": 2048,
"padding": 2,
"pages": [
{
"file": "terrain.scatter.atlas.0.png",
"width": 2048,
"height": 512
}
],
"regions": [
{
"key": "terrain/scatter/debrisstonea",
"page": 0,
"x": 1034,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "terrain/scatter/debrisstoneb",
"page": 0,
"x": 1100,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "terrain/scatter/dirtsmeara",
"page": 0,
"x": 2,
"y": 2,
"w": 256,
"h": 256
},
{
"key": "terrain/scatter/dirtsmearb",
"page": 0,
"x": 260,
"y": 2,
"w": 256,
"h": 256
},
{
"key": "terrain/scatter/graysmeara",
"page": 0,
"x": 518,
"y": 2,
"w": 256,
"h": 256
},
{
"key": "terrain/scatter/graysmearb",
"page": 0,
"x": 776,
"y": 2,
"w": 256,
"h": 256
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

@@ -0,0 +1,331 @@
{
"version": 1,
"name": "terrain.surfaces",
"pageSize": 2048,
"padding": 2,
"pages": [
{
"file": "terrain.surfaces.atlas.0.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.1.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.2.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.3.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.4.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.5.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.6.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.7.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.8.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.9.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.10.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.11.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.12.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.13.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.14.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.15.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.16.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.17.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.18.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.19.png",
"width": 2048,
"height": 2048
},
{
"file": "terrain.surfaces.atlas.20.png",
"width": 2048,
"height": 2048
}
],
"regions": [
{
"key": "terrain/surfaces/Marsh",
"page": 20,
"x": 1542,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "terrain/surfaces/Marsh_bright",
"page": 20,
"x": 1608,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "terrain/surfaces/brokenasphalt",
"page": 0,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/burnedcarpet",
"page": 1,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/burnedwoodfloor",
"page": 2,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/carpet",
"page": 3,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/concrete",
"page": 20,
"x": 1028,
"y": 2,
"w": 512,
"h": 512
},
{
"key": "terrain/surfaces/flagstone",
"page": 4,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/genericfloortile",
"page": 5,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/gravel",
"page": 6,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/ice",
"page": 7,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/marshyterrain",
"page": 8,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/mossy",
"page": 9,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/mud",
"page": 10,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/packeddirt",
"page": 11,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/pavedtile",
"page": 12,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/roughhewnrock",
"page": 13,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/roughstone",
"page": 14,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/sand",
"page": 15,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/smoothstone",
"page": 16,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/soil",
"page": 17,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/soilrich",
"page": 18,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/tilestone",
"page": 19,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
},
{
"key": "terrain/surfaces/underwall",
"page": 20,
"x": 1806,
"y": 2,
"w": 1,
"h": 1
},
{
"key": "terrain/surfaces/waterdeepramp",
"page": 20,
"x": 1674,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "terrain/surfaces/watershallowramp",
"page": 20,
"x": 1740,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "terrain/surfaces/woodfloor",
"page": 20,
"x": 2,
"y": 2,
"w": 1024,
"h": 1024
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 890 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 540 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 843 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 901 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 654 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 959 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

@@ -0,0 +1,159 @@
{
"version": 1,
"name": "things.filth",
"pageSize": 2048,
"padding": 2,
"pages": [
{
"file": "things.filth.atlas.0.png",
"width": 2048,
"height": 256
}
],
"regions": [
{
"key": "things/filth/ash/asha",
"page": 0,
"x": 132,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/ash/ashb",
"page": 0,
"x": 198,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/ash/ashc",
"page": 0,
"x": 264,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/corpsebile/bilea",
"page": 0,
"x": 330,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/corpsebile/bileb",
"page": 0,
"x": 396,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/corpsebile/bilec",
"page": 0,
"x": 462,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/grainy/grainya",
"page": 0,
"x": 528,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/liquidfuel/liquidfuela",
"page": 0,
"x": 2,
"y": 2,
"w": 128,
"h": 128
},
{
"key": "things/filth/poolsoft/poolsofta",
"page": 0,
"x": 594,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/poolsoft/poolsoftb",
"page": 0,
"x": 660,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/poolsoft/poolsoftc",
"page": 0,
"x": 726,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/rubblebuilding/slagbitsa",
"page": 0,
"x": 792,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/rubblerock/rubblea",
"page": 0,
"x": 858,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/rubblesandbags/sandbagsa",
"page": 0,
"x": 924,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/rubbleslag/slagbitsa",
"page": 0,
"x": 990,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/spatter/spattera",
"page": 0,
"x": 1056,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/spatter/spatterb",
"page": 0,
"x": 1122,
"y": 2,
"w": 64,
"h": 64
},
{
"key": "things/filth/spatter/spatterc",
"page": 0,
"x": 1188,
"y": 2,
"w": 64,
"h": 64
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

@@ -0,0 +1,23 @@
{
"version": 1,
"name": "things.gas",
"pageSize": 2048,
"padding": 2,
"pages": [
{
"file": "things.gas.atlas.0.png",
"width": 256,
"height": 256
}
],
"regions": [
{
"key": "things/gas/puff",
"page": 0,
"x": 2,
"y": 2,
"w": 128,
"h": 128
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 419 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 KiB

@@ -0,0 +1,543 @@
{
"version": 1,
"name": "things.mote",
"pageSize": 2048,
"padding": 2,
"pages": [
{
"file": "things.mote.atlas.0.png",
"width": 2048,
"height": 512
}
],
"regions": [
{
"key": "things/mote/airpuff",
"page": 0,
"x": 1042,
"y": 260,
"w": 64,
"h": 64
},
{
"key": "things/mote/berserkbit",
"page": 0,
"x": 1108,
"y": 260,
"w": 64,
"h": 64
},
{
"key": "things/mote/blastdry",
"page": 0,
"x": 1174,
"y": 260,
"w": 64,
"h": 64
},
{
"key": "things/mote/blastemp",
"page": 0,
"x": 1240,
"y": 260,
"w": 64,
"h": 64
},
{
"key": "things/mote/blastextinguisher",
"page": 0,
"x": 1306,
"y": 260,
"w": 64,
"h": 64
},
{
"key": "things/mote/blastflame",
"page": 0,
"x": 1372,
"y": 260,
"w": 64,
"h": 64
},
{
"key": "things/mote/clean",
"page": 0,
"x": 1438,
"y": 260,
"w": 64,
"h": 64
},
{
"key": "things/mote/clearsnow",
"page": 0,
"x": 1504,
"y": 260,
"w": 64,
"h": 64
},
{
"key": "things/mote/colonistattacking",
"page": 0,
"x": 1570,
"y": 260,
"w": 64,
"h": 64
},
{
"key": "things/mote/colonistfleeing",
"page": 0,
"x": 776,
"y": 2,
"w": 128,
"h": 128
},
{
"key": "things/mote/cookbit",
"page": 0,
"x": 1636,
"y": 260,
"w": 64,
"h": 64
},
{
"key": "things/mote/drunkbubble",
"page": 0,
"x": 1702,
"y": 260,
"w": 64,
"h": 64
},
{
"key": "things/mote/dustpuff",
"page": 0,
"x": 906,
"y": 2,
"w": 128,
"h": 128
},
{
"key": "things/mote/electricalspark",
"page": 0,
"x": 1768,
"y": 260,
"w": 64,
"h": 64
},
{
"key": "things/mote/explosionflash",
"page": 0,
"x": 1036,
"y": 2,
"w": 128,
"h": 128
},
{
"key": "things/mote/feedbackattack",
"page": 0,
"x": 1166,
"y": 2,
"w": 128,
"h": 128
},
{
"key": "things/mote/feedbackequip",
"page": 0,
"x": 1296,
"y": 2,
"w": 128,
"h": 128
},
{
"key": "things/mote/feedbackgoto",
"page": 0,
"x": 1426,
"y": 2,
"w": 128,
"h": 128
},
{
"key": "things/mote/fireglow",
"page": 0,
"x": 2,
"y": 2,
"w": 256,
"h": 256
},
{
"key": "things/mote/foodbitmeat",
"page": 0,
"x": 1834,
"y": 260,
"w": 64,
"h": 64
},
{
"key": "things/mote/foodbitvegetarian",
"page": 0,
"x": 1900,
"y": 260,
"w": 64,
"h": 64
},
{
"key": "things/mote/footprint",
"page": 0,
"x": 1966,
"y": 260,
"w": 64,
"h": 64
},
{
"key": "things/mote/harvest",
"page": 0,
"x": 1556,
"y": 2,
"w": 128,
"h": 128
},
{
"key": "things/mote/healingcross",
"page": 0,
"x": 1686,
"y": 2,
"w": 128,
"h": 128
},
{
"key": "things/mote/heart",
"page": 0,
"x": 2,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/horseshoe",
"page": 0,
"x": 68,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/incapicon",
"page": 0,
"x": 1816,
"y": 2,
"w": 128,
"h": 128
},
{
"key": "things/mote/interactionarrow",
"page": 0,
"x": 134,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/lightningglow",
"page": 0,
"x": 260,
"y": 2,
"w": 256,
"h": 256
},
{
"key": "things/mote/manhunterbit",
"page": 0,
"x": 200,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/metapuff",
"page": 0,
"x": 2,
"y": 260,
"w": 128,
"h": 128
},
{
"key": "things/mote/microsparks",
"page": 0,
"x": 132,
"y": 260,
"w": 128,
"h": 128
},
{
"key": "things/mote/shotflash",
"page": 0,
"x": 518,
"y": 2,
"w": 256,
"h": 256
},
{
"key": "things/mote/shothit_dirt",
"page": 0,
"x": 262,
"y": 260,
"w": 128,
"h": 128
},
{
"key": "things/mote/shothit_spark",
"page": 0,
"x": 392,
"y": 260,
"w": 128,
"h": 128
},
{
"key": "things/mote/sleepz",
"page": 0,
"x": 266,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/smoke",
"page": 0,
"x": 522,
"y": 260,
"w": 128,
"h": 128
},
{
"key": "things/mote/sow",
"page": 0,
"x": 332,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/sparkflash",
"page": 0,
"x": 652,
"y": 260,
"w": 128,
"h": 128
},
{
"key": "things/mote/sparkthrown",
"page": 0,
"x": 1916,
"y": 390,
"w": 32,
"h": 32
},
{
"key": "things/mote/speech",
"page": 0,
"x": 782,
"y": 260,
"w": 128,
"h": 128
},
{
"key": "things/mote/speechsymbols/animalchat",
"page": 0,
"x": 398,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/speechsymbols/breakup",
"page": 0,
"x": 464,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/speechsymbols/buildrapport",
"page": 0,
"x": 530,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/speechsymbols/chitchat",
"page": 0,
"x": 596,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/speechsymbols/deeptalk",
"page": 0,
"x": 662,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/speechsymbols/insult",
"page": 0,
"x": 728,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/speechsymbols/kindwords",
"page": 0,
"x": 794,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/speechsymbols/marriageproposal",
"page": 0,
"x": 860,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/speechsymbols/nuzzle",
"page": 0,
"x": 926,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/speechsymbols/prisonerrecruit",
"page": 0,
"x": 992,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/speechsymbols/romance",
"page": 0,
"x": 1058,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/speechsymbols/slight",
"page": 0,
"x": 1124,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/speechsymbols/trainattempt",
"page": 0,
"x": 1190,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/stonebit",
"page": 0,
"x": 1256,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/stun",
"page": 0,
"x": 1322,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/temproof",
"page": 0,
"x": 1388,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/thought",
"page": 0,
"x": 912,
"y": 260,
"w": 128,
"h": 128
},
{
"key": "things/mote/thoughtsymbol/enemy",
"page": 0,
"x": 1454,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/thoughtsymbol/food",
"page": 0,
"x": 1520,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/thoughtsymbol/genericbad",
"page": 0,
"x": 1586,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/thoughtsymbol/genericgood",
"page": 0,
"x": 1652,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/thoughtsymbol/skull",
"page": 0,
"x": 1718,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/thoughtsymbol/sleepz",
"page": 0,
"x": 1784,
"y": 390,
"w": 64,
"h": 64
},
{
"key": "things/mote/transparent",
"page": 0,
"x": 1950,
"y": 390,
"w": 1,
"h": 1
},
{
"key": "things/mote/vomitbit",
"page": 0,
"x": 1850,
"y": 390,
"w": 64,
"h": 64
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 343 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 428 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 808 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 KiB

Some files were not shown because too many files have changed in this diff Show More