mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 12:21:52 +09:00
48
work_files/GameDesign/BACKEND_DESIGN.md
Normal file
48
work_files/GameDesign/BACKEND_DESIGN.md
Normal file
@@ -0,0 +1,48 @@
|
||||
The game has elements that are:
|
||||
|
||||
- Actors
|
||||
- Controller
|
||||
- AI
|
||||
- JInput (Provided by LWJGL)
|
||||
- Factioning
|
||||
- Scheduler
|
||||
- Physics solver (simple, AABB-oriented)
|
||||
- _TODO: sprite assembler (character--avatar--maker)_
|
||||
- Imagefont
|
||||
- Font drawer
|
||||
- Hangul character assembler (aka JOHAB)
|
||||
- Sprite animator (really simple one)
|
||||
- De/serialiser
|
||||
- Concurrency helper (really simple one)
|
||||
- Tiles
|
||||
- Tile property database
|
||||
- Items
|
||||
- Item property database
|
||||
- _TODO: Material system_
|
||||
- Map drawer
|
||||
- Map camera
|
||||
- Map drawer
|
||||
- Lightmap renderer
|
||||
- Map generator
|
||||
- Utilises Joise Modular Noise Generator
|
||||
- Additional noise filters
|
||||
- Real estate
|
||||
- The registry (a book that records the current owner of tiles on the map. Owner can be a single NPC or faction)
|
||||
- Utility
|
||||
- Internationalisation
|
||||
- Language pack
|
||||
|
||||
The elements are connected like:
|
||||
|
||||
- Actors
|
||||
- Controller ← AI, Player Input
|
||||
- AI ← Factioning, Scheduler
|
||||
- class "Actor"
|
||||
- class "ActorWithBody"
|
||||
with properties like (AIControlled, Factionable, Luminous, Visible, etc.)
|
||||
- class "NPCIntelligentBase"
|
||||
- (NPCs that has AI and can be interacted)
|
||||
- (fixtures, player)
|
||||
- (any of the invisible actors)
|
||||
|
||||
|
||||
14
work_files/GameDesign/ECONOMY.md
Normal file
14
work_files/GameDesign/ECONOMY.md
Normal file
@@ -0,0 +1,14 @@
|
||||
## Economy ##
|
||||
|
||||
Ref. How EVE Online's economy works and controlled
|
||||
|
||||
* Mobs/People can be killed, and they drop resources: THEY PRINTS MONEY.
|
||||
* If players die, some of (50 %?) their items are lost, forcing them to spend their money and resources.
|
||||
* Items break, also forcing them to spend money (see below:)
|
||||
|
||||
### Resource management ###
|
||||
|
||||
* Tools/Weapons have durability
|
||||
- And NOTHING IS INDESTRUCTIBLE (just cooldown time if they are "endgame" items, but not the weapon with highest damage -- see how Master Sword works in Zelda BotW)
|
||||
- Relevant UIs are completed, so no turning back --Torvald, 2017-04-22
|
||||
|
||||
32
work_files/GameDesign/ENVIRON.md
Normal file
32
work_files/GameDesign/ENVIRON.md
Normal file
@@ -0,0 +1,32 @@
|
||||
## Atmosphere ##
|
||||
|
||||
* Serene (not all serene of course)
|
||||
* There's living village, abandoned/crumbling settlement and lone shacks on the mountainside
|
||||
* History, much like one in the _Dwarf Fortress_, decaying of the settlement is simulated by the very method, but 1-2 will be forced. The amount is dependent on the size of the map
|
||||
* Reference: _Legend of Zelda: Breath of the Wild Trailer_ (the trailer came much after this game but the video will help you to get a grip)
|
||||
|
||||
## Colour overlay ##
|
||||
|
||||
Colour overlay is set to 6 500 K as untouched. The value must be
|
||||
|
||||
* Increased when:
|
||||
- Overcast (~ 7 000 K)
|
||||
- Freezing area (~ 7 500 K)
|
||||
|
||||
* Decreased when:
|
||||
- Tropical area (~ 5 500 K)
|
||||
|
||||
|
||||
## Sunlight ##
|
||||
|
||||
Sunlight of the midday must have colour temperature of 5 700 K.
|
||||
|
||||
|
||||
## Weather effects ##
|
||||
|
||||
* Wind
|
||||
- Blows away sands/snows
|
||||
- Tilts raindrops/snowfall
|
||||
|
||||
* Precipitation
|
||||
- Rain, snow
|
||||
46
work_files/GameDesign/MISC_FEATURES.md
Normal file
46
work_files/GameDesign/MISC_FEATURES.md
Normal file
@@ -0,0 +1,46 @@
|
||||
## Gadgets ##
|
||||
|
||||
### Looms for custom pattern ###
|
||||
|
||||
- Players can create their own décors (hang on wall), dresses.
|
||||
- Two looms (16 palette mode, 64 palette mode)
|
||||
- __IMPLEMENTED__ — see net.torvald.terrarum.gameactors.DecodeTapestry
|
||||
|
||||
|
||||
### Music making ###
|
||||
|
||||
- Automated glockenspiel thingy
|
||||
- Single tile can hold 48 notes, single track
|
||||
- Work like Modtracker, incl. physical arrangements
|
||||
|
||||
Arrangements in the map
|
||||
Time →→→→
|
||||
voice 1 → □□□□□□□□□□□□□□□□...
|
||||
voice 2 → □□□□□□□□□□□□□□□□...
|
||||
↑ played simultaneously along the X-axis
|
||||
|
||||
- Each tracker head and body are connected by placing tracks adjacent to each other or connecting them with wire.
|
||||
Connect two or more tracker head to play the array of trackers play simultaneously (multi-tracking)
|
||||
|
||||
- Serialisation
|
||||
|
||||
<actorid>.json
|
||||
{
|
||||
notes = [arr<key: Int>(64)], // 64 notes per track
|
||||
speed = 120
|
||||
}
|
||||
|
||||
- key: C1-D6 (63 keys)
|
||||
- speed: in BPM
|
||||
- tuning: A440
|
||||
|
||||
|
||||
## Aimhack ##
|
||||
|
||||
- Include a valid way of obtaining Aimhack (possessed weapon shit?)
|
||||
- Implement it on ```<item>.primaryUse(gc, delta)```
|
||||
|
||||
|
||||
## Computers ##
|
||||
|
||||
Instead of single box with bunch of parts, make computers occupy several blocks -- processor unit, core memory unit, storage unit (RAMAC!), I/O unit, etc., like old PDPs. Powerful computer == more space. Plus portable units like TRS-80 Model 100.
|
||||
162
work_files/GameDesign/MISC_MECHNANICS.md
Normal file
162
work_files/GameDesign/MISC_MECHNANICS.md
Normal file
@@ -0,0 +1,162 @@
|
||||
|
||||
## Weapon tier ##
|
||||
|
||||
Natural / Common Stone -> Copper -> Iron -> Silver -> Titanium
|
||||
Forging --------------> Steel --------^
|
||||
Exotic ('elven') Glass Aurichalcum
|
||||
Special (something 'adamant') ??? (Use material spec of CNT, tensile strength 180 GPa)
|
||||
|
||||
* Metal graphics
|
||||
- Gold: Hue 43, low Saturation
|
||||
- Aurichalcum: Hue 43, mid-high Saturation
|
||||
- Copper: Hue 33,
|
||||
- Copper rust: Hue 160
|
||||
- Iron rust: Hue 21
|
||||
|
||||
|
||||
## Size variation ##
|
||||
|
||||
Race base weapon/tool size <- 10 [kg]
|
||||
Size tolerance <- (50% * str/1000), or say, 20%
|
||||
|
||||
If the size is bigger than tolerable, weapon speed severely slows down, tools become unusable
|
||||
if use time >* 0.75 second, the weapon/tool cannot be equipped.
|
||||
Small weapons/tools gains no (dis)advantage
|
||||
|
||||
When drawing: scale by (craftedWeaponSize / baseWeaponSize)
|
||||
|
||||
Crafted tool/weapon size is dependent to the baseRaceMass.
|
||||
|
||||
|
||||
## Gemstone tier ##
|
||||
|
||||
Topaz -> R·G·B -> Diamond·Amethyst
|
||||
|
||||
Gemstones go elemental?! (pretty generic but otherwise there are no motivations to willingly collect them...)
|
||||
|
||||
- Ruby: grants fire resist
|
||||
- Sapphire: grants cold resist
|
||||
- Amethyst or **Topaz**: grants shock resist
|
||||
- *two left boy!*
|
||||
|
||||
|
||||
## Colouring ##
|
||||
|
||||
Artificial: Use 4096
|
||||
|
||||
* Colouring of potion
|
||||
- Randomised, roguelike fashion
|
||||
- Choose Col(RGB) from set of finite cards:
|
||||
255, 255, 128, 128, 0, 0
|
||||
- MULTIPLY blend chosen colour with white texture
|
||||
|
||||
|
||||
### Colour keys ###
|
||||
|
||||
Things are colour-keyed so that players would get the idea by just a glance.
|
||||
|
||||
- Amber: Inactivated, TBA??
|
||||
- Cyan-blue: Activated, Energy weapon?
|
||||
- Purple: Magic
|
||||
- Application: spell tomes/scrolls written with Magic Description Language
|
||||
- Phosphor Green:
|
||||
- Cherry red (#F04): Health (using this to help with deuterans)
|
||||
|
||||
|
||||
NOTE: cyan is a tricky colour for deuterans; will be inextinguishable between greys!
|
||||
|
||||
|
||||
## Roguelike identity ##
|
||||
|
||||
* Randomised things
|
||||
- E.g. potion
|
||||
Lime-coloured potion
|
||||
First play: "Potion (???)"
|
||||
After drank: "Potion (Healing)" is revealed.
|
||||
|
||||
Second (new) play: "Potion (???)"
|
||||
After drank: "Potion (Neurotoxin)" is revealed.
|
||||
|
||||
|
||||
## Making sprite ##
|
||||
|
||||
* Layers
|
||||
- (Optional) Glow
|
||||
- (Optional) Hair foreground
|
||||
- Right arm dress
|
||||
- Right arm body
|
||||
- Dress
|
||||
- Boots
|
||||
- Body
|
||||
- (Optional) Hair accessory
|
||||
- Hair
|
||||
- Head
|
||||
- Left arm dress
|
||||
- Left arm body
|
||||
- (Optional) SFX
|
||||
|
||||
* Size
|
||||
- Regular sprite 'height' (hitbox height) : 40 px
|
||||
- Apparent height may vary
|
||||
|
||||
|
||||
## Chargen ##
|
||||
|
||||
* Select hair, colours, then compile them into single spritesheet
|
||||
|
||||
* NO gender distinction, but have masculine/neutral/feminine looks (in clothing, hairstyles, etc.)
|
||||
|
||||
* Colour: 4096 colours (12-bit 0x000 - 0xFFF)
|
||||
|
||||
* Base mass: 60 kg
|
||||
|
||||
|
||||
## Food/Potion dose ##
|
||||
|
||||
Scale ^ 3 ^ (3/4) == (ThisWgt / TargetWgt) ^ (3/4)
|
||||
|
||||
|
||||
## (De)serialisation ##
|
||||
|
||||
see SAVE_FORMAT.md
|
||||
|
||||
|
||||
## Actor as universal tool ##
|
||||
|
||||
* Utility tiles that have states (e.g. noteblock) are implemented using Actor.
|
||||
|
||||
|
||||
## NPC Killing ##
|
||||
|
||||
* AI:
|
||||
Attacked first: Warn player to not attack
|
||||
Attacked second: The NPC becomes hostile until player sheathe the weapon
|
||||
Attacked thrice: All the NPCs within the same faction become hostile until the player is away
|
||||
|
||||
|
||||
## Ownership of lands ##
|
||||
|
||||
* Codex of Real Estate → assign owner to the tiles → copy the information to the NPC instance
|
||||
|
||||
|
||||
## Health and magic point ##
|
||||
|
||||
* Works like Ampere in electronics.
|
||||
- Health: Regen per time
|
||||
- Magic: Out power per time
|
||||
- "I somewhat doubt this now..." --Torvald, 2017-03-12
|
||||
- "It won't work." --Torvald, 2017-04-22
|
||||
|
||||
|
||||
|
||||
## Civilisation ##
|
||||
|
||||
Based on _Millénaire_ Minecraft mod, they have limited resources, have ruler (one of those: town-ruler, country-ruler). Players can either help them or force their way into the head position, or even eliminating them.
|
||||
|
||||
Villages can be either independent or part of larger country (_Dwarf Fortress_)
|
||||
|
||||
|
||||
## Level of technology ##
|
||||
|
||||
Anything goes as long as it does not exceed TL11 of GURPS. Although the universe has the existence of traditional sorcery, the laws of physics of the universe itself is same as we know it. Simply put: NO FUCKING PERPETUAL MOTION AND PERFECT PROPHECY
|
||||
|
||||
Reference in New Issue
Block a user