more
44
crash.patch
|
|
@ -1,44 +0,0 @@
|
||||||
diff --git a/src/tiles.rs b/src/tiles.rs
|
|
||||||
index 4b6288e..5e62b95 100644
|
|
||||||
--- a/src/tiles.rs
|
|
||||||
+++ b/src/tiles.rs
|
|
||||||
@@ -52,6 +52,7 @@ impl Bg {
|
|
||||||
h: 0,
|
|
||||||
},
|
|
||||||
layer: (),
|
|
||||||
+ blend_graphic: String::new(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -76,6 +77,7 @@ impl Mid {
|
|
||||||
h: 32,
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
+ blend_graphic: String::new(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -92,6 +94,7 @@ impl Fg {
|
|
||||||
h: 0,
|
|
||||||
},
|
|
||||||
layer: (),
|
|
||||||
+ blend_graphic: String::new(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -145,6 +148,7 @@ where
|
|
||||||
pub graphic_name: String,
|
|
||||||
pub tex_rect: IntRect,
|
|
||||||
pub layer: Layer::SpecificDef,
|
|
||||||
+ pub blend_graphic: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Inspect, Default, Serialize, Deserialize)]
|
|
||||||
@@ -179,6 +183,7 @@ where
|
|
||||||
graphic_name: Default::default(),
|
|
||||||
tex_rect: Default::default(),
|
|
||||||
layer: Layer::SpecificDef::default(),
|
|
||||||
+ blend_graphic: String::new(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
Tile
|
|
||||||
|
|
||||||
9 bits bg
|
|
||||||
9 bits mid
|
|
||||||
9 bits fg 32 bits
|
|
||||||
3 bits slope
|
|
||||||
2 bits fg state (0: fg has ore, 1: bg has ore, 2: both have ores)
|
|
||||||
|
|
||||||
5 bits liquid type
|
|
||||||
6 bits paint 16 bits
|
|
||||||
5 bits reserved
|
|
||||||
|
|
@ -1,82 +0,0 @@
|
||||||
# Premise
|
|
||||||
|
|
||||||
- Evil source at bottom of playable map
|
|
||||||
- Evil is surging upwards
|
|
||||||
- Player is the one tasked with going to the bottom and destroying evil source
|
|
||||||
- Very long way to bottom
|
|
||||||
- Going deeper = main source progression
|
|
||||||
- Barriers to going deeper, gotta craft gear, etc. to be able to go deeper
|
|
||||||
- Tower defense elements, have to craft and set up defensive structures
|
|
||||||
|
|
||||||
# Details
|
|
||||||
|
|
||||||
## Timing
|
|
||||||
Timing is tick based.
|
|
||||||
Every frame is considered a tick.
|
|
||||||
The game is locked at 60 fps to simplify implementation.
|
|
||||||
|
|
||||||
## Scale
|
|
||||||
Player character is slightly below 1.5 m height.
|
|
||||||
1 meter = 2 blocks.
|
|
||||||
1 block = 0.5 meters.
|
|
||||||
Player character is about 3 blocks high. (slightly less so they fit comfortably)
|
|
||||||
|
|
||||||
## Map Size
|
|
||||||
|
|
||||||
World is roughly 100,000x100,000 blocks large.
|
|
||||||
I've done some measurements and I believe it's large enough that it should convey
|
|
||||||
the scale of digging very deep, which is what the game is about.
|
|
||||||
Layer below 30 km is the mantle (after which the game is named).
|
|
||||||
The evil source is at about 35 km.
|
|
||||||
The final goal is the evil source, so player is expected to mine about 35 km deep to beat the game.
|
|
||||||
1 meter = two tiles. 35 km = 70,000 tiles deep.
|
|
||||||
There could be some post-endgame content from 35-40 kms deep.
|
|
||||||
Very unbreakable bottom or lava lake or whatever is at 80,000 blocks (40 km) deep.
|
|
||||||
|
|
||||||
## Biomes
|
|
||||||
Only a few surface biomes
|
|
||||||
- At center is forest biome
|
|
||||||
- On one side:
|
|
||||||
- Jungle
|
|
||||||
- Desert
|
|
||||||
- On other side:
|
|
||||||
- Longer stretch of forest biome than other side
|
|
||||||
- Ice biome
|
|
||||||
|
|
||||||
All other biome variety should come from going deeper.
|
|
||||||
Progressively more difficult variants of each biome as you go down.
|
|
||||||
30 km is mantle level, at which point no ice or sand or such reaches.
|
|
||||||
It's all mantle level specific biomes all the way horizontally.
|
|
||||||
|
|
||||||
## Number of stuff
|
|
||||||
|
|
||||||
- At least 50 ore types + 50 gem/etc. types. Copper/Coal could be an ore-gem/etc. pair for example.
|
|
||||||
- On average, one new pair every 750 meters, up to 37 kilometers.
|
|
||||||
The last stretch of 3 km to the bottom is a "buffer zone" of no new content, just more of the same.
|
|
||||||
- The rate of new pairs could start out quicker, for example every 300 meters or so,
|
|
||||||
to make early-game less boring, but gradually become less frequent, up to a kilometer gap.
|
|
||||||
- At least 50 stone types
|
|
||||||
- Maybe background tiles and other stuff, like different break overlay animations
|
|
||||||
|
|
||||||
|
|
||||||
# Multiplayer
|
|
||||||
|
|
||||||
Multiplayer adds a lot of complexity, so I'm going to develop the prototype of the game without
|
|
||||||
any multiplayer support.
|
|
||||||
But if people like the general idea, they can help create a multiplayer version eventually.
|
|
||||||
|
|
||||||
# Crafting
|
|
||||||
|
|
||||||
- You need a workstation to be able to craft anything.
|
|
||||||
This incentivizes building bases and retreating to them, instead of the "nomad"
|
|
||||||
lifetyle many games of this kind allow.
|
|
||||||
|
|
||||||
- Most stations don't have inventory items that can be pre-crafted and placed.
|
|
||||||
Instead, they have to be constructed on the spot, taking construction time.
|
|
||||||
This discourages building makeshift crafting areas in the middle of nowhere.
|
|
||||||
|
|
||||||
# Supported platforms
|
|
||||||
- Windows
|
|
||||||
- Linux
|
|
||||||
|
|
||||||
Other platforms can be supported if community helps support them.
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
Various random ideas that aren't (yet) part of the design
|
|
||||||
|
|
||||||
- Character is 1.5 blocks tall
|
|
||||||
- Can crawl to fit inside 1 block tall gaps
|
|
||||||
|
|
||||||
|
|
||||||
- Multiple tile layers.
|
|
||||||
- Back layer
|
|
||||||
- Wall layer
|
|
||||||
- Ore/misc insert layer
|
|
||||||
|
|
||||||
- No world hopping.
|
|
||||||
Characters are worlds are linked together, like in Minecraft.
|
|
||||||
|
|
||||||
- No respawn after quit&save. Player character continues where it left off.
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
Game has different worlds you can generate.
|
|
||||||
Each world has its own folder.
|
|
||||||
Each folder has:
|
|
||||||
- Player file (player.dat)
|
|
||||||
- Subfolder for regions (regions/)
|
|
||||||
|
|
||||||
Each region subfolder has:
|
|
||||||
x.y.rgn files for each chunk, where x and y are the region coordinates.
|
|
||||||
|
|
||||||
# Regions
|
|
||||||
A region stores multiple chunks in a single file for more optimized storage.
|
|
||||||
Current plan is to store 8 chunks in a region, in other words, 1024*1024 blocks.
|
|
||||||
Around one million blocks, compressed with zstd compression.
|
|
||||||
|
Before Width: | Height: | Size: 746 B |
|
Before Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 962 B |
|
Before Width: | Height: | Size: 7 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 694 B |
|
Before Width: | Height: | Size: 355 B |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |