jeremyshannon / exile Goto Github PK
View Code? Open in Web Editor NEWThis project forked from dokimicu/exile
This repo is parked, moved to codeberg.org
Home Page: https://codeberg.org/Mantar/Exile
License: GNU General Public License v3.0
This project forked from dokimicu/exile
This repo is parked, moved to codeberg.org
Home Page: https://codeberg.org/Mantar/Exile
License: GNU General Public License v3.0
It's me again...
I was getting bored of the map and ended up making some new biomes:
https://github.com/DokimiCU/exile_experiments
This squeezes more variety out of existing content, plus adds a few things to make it work aesthetically. Makes easy places a bit easier, and adds very hostile barren lands for advanced players.
I would turn this into a proper pull request but have already spent more time on it than I intended (follow the instructions, it's an easy copy past job)
(I haven't been following forums etc as you might have guessed, and will now likely disappear again! I might occassionally drop some stuff into this experiments repo, but you wont likely be seeing much of me. Such is life! Good to see this project still going.)
Transporter pads cannot have their destinations changed, even if the destination no longer exists. You have to break the pad, wipe the key, then re-name it and re-link all other pads that point at it.
It should be possible to wipe the destination of a placed pad. Perhaps by clicking with the defunct destination key? That would prevent accidental erasure.
Double doors are created in the doors mod by turning the door 90 degrees and setting it to its closed state when you open it, and uses the open state for closed. In other words, when you open both sides of a double door, the right one may be in the open state, but the left one is technically closed, codewise. This makes barring the second door impossible as is.
Possible solutions include flipping the door upside down instead, or adding a second door type that opens in the other direction. Either will need new handling code to bar correctly.
When you use fire sticks all the way to breaking and they make that breaking sound, everyone in the server (on a server) can hear it. I didn't know what it was until now, and I though somebody kept breaking a bone XD.
Cave drips are supposed to disappear when they hit the ground, but I've noticed them collecting on top of people's bones, leading to the weird outcome that you can drop bones in a cave to make a crude water collection system, and then just lick the water up off the bones. (Ewww!)
This needs fixing, and the code should probably be examined to see if any other nodes might prevent the drips disappearing.
In multiplayer, lag sometimes mounts and the hud will stop updating your condition. This can lead to sudden death when it suddenly updates and you find out you've been unknowingly freezing and exhausted for a while.
A telltale sign that this is happening is when you switch between items in your hotbar and the name of the item doesn't appear, the workaround being to get someplace warm and lay down until lag subsides.
Reducing lag would help alleviate the problem, but a proper fix would likely be to move some of the code to client-side.
While digging through heat transfer stuff I noticed that mods/climate/temperature.lua:381 in climate.heat_transfer() causes heatable nodes to only check the y-coords below them for heat transfer, preventing heat exchange between nodes of the same height. This leads to odd behaviour like a 2-deep, 1-high kiln not heating the rear nodes at all (too far away for the fire to heat via climate.air_temp_source()) whereas a 2-deep, 2-high kiln can heat the rear ones due to having heatable nodes on different y-coords.
Changing the -
to a +
on that line so it checks a 3x3x3 area matches the logic in climate.air_temp_source() and makes both kilns behave the same so it seems to be a typo.
Adzes are an important stone-age tool, but new players can be confused if they try to cut a maraka tree and the adze does nothing.
Add one or both of A) a tooltip that explains the adze is used to cut softwood trees B) differing sound effects for a hardwood vs softwood tree
An adze should probably have a different sound than an axe, as it's used to essentially peel away bits of the tree at a time, rather than cut a chunk out:
https://www.youtube.com/watch?v=ZXUsItu74LU
Hatches allow temperature to flow through when they're open, but doors do not.
They'll have to be rewritten into separate open/closed objects to allow them to have different groups.
This is another major area of game play that needs adding.
Currently game play turns back into regular build and mine Minetest game once you've solved the basic survival challenges. That's not great.
My inspiration here is Rimworld - something that will throw various challenges at you, and give a sense of narrative. Unfortunately Rimworld (2d limited world) and Exile (3d open world) are so different I could never figure how to do this (plus the coding was beyond me).
So... ideas on what this would look like, how to do it? (this is by far the biggest feature I'd like to see)
It was reported that a player with a full inventory can't get out of bed if objects are floating on top of it.
This can be worked around by logging out and back in, but it still would be nice to not trap the player like that.
We could overrride the space bar to add a "jump out of bed" function. Perhaps another option would be that if you try to take an object but your inventory is full, we could knock the object about a node away. That way the trapped player could just shove the objects aside and get up.
Reports have come up that players sometimes end up sliding uncontrollably when hurt:
https://forum.minetest.net/viewtopic.php?p=392695#p392695
Testing would probably involve nerfing the spider's damage to a low, non-zero value and letting one whale on the player until the glitch happens.
This might be related to the standing-in-bed bug, which seems to be fixed by runs' player api.
Straightforward, if you place a stack of two or more ash/ash blocks one will be lost no matter what you place it on. Probably caused by on_place_fert having an improper check for what it's placed on.
We currently have code to visually alert the player of dangerously cold temperatures by applying a frost overlay around the edges of his screen, but dangerously hot temperatures have no indicator as yet.
I could find no overlay under a suitable license that would adequately represent heat. A heat haze effect would be best, but would likely require shaders; barring that, perhaps a wet screen around the edges to represent sweating would get the desired idea across.
I created the Design Guide document to help give some unity to future development if and when I left the project.
My hope was to avoid any "design by committee" issues, and allow there to be something to refer to in discussions and when making design decisions. A kind of design "Constitution".
Now that I have passed the project on I've noticed other things I would probably add to that list, for the sake of clarity and keeping consistent with a vision that was mostly in my own head:
I'm not sure how useful people find this. I'm hoping making these design choices explicit will allow Exile to maintain a unified design even if it passes through several hands.
People might want to suggest other design choices that are important to them that could be added.
This issue is a summary of various discussions and my own observations. I hope it would be useful to discuss and document this problem so it can be fixed.
So basically, the main problem here is that survival in Exile is too hard in the beginning, and too easy at the end. This is caused be multiple things, and is partially intentional, since survival becoming easier is part of the focus of the current system of progression. The main problem here lies with the main survival mechanics of hunger and thirst. In the beginning it is very hard to replenish hunger and thirst, unless you already know what you are doing, and figuring out what to do is hard due to these constraints. New players need to be able to randomly stumble into strategies to do that, but due to the fact that they are on a countdown to death each time means that they will probably quit, dying at the beginning with no sign of improvement can be very frustrating. This is true for the tangkal fruits (they are so high up the player might not notice them, and small tress where they are easily accessible are very rare) and for water (digging puddle holes to get it is not intuitive at all to most people). In contrast, at the end once you have a big enough anperla farm set up and more than 10 water pots, you have to never worry about those mechanics ever again. The end of the game switches theme completely, since at that point you can do little other than just build decorative structures or go explore the ancient city, which has similar problems (as a beginner it's too hard to stumble into anything interesting, and once you have everything there is nothing to do). These are the main things that I noticed, feel free to add more.
Possible solutions (obviously more careful thought has to be put into these, this section is just brainstorming):
Our player model has an animation for crouching down and creeping along when sneaking.
It merely needs to be enabled under the right conditions in player_api.
Bonus points if we can halve the height of the player's collision box so players can creep through single-node holes.
Eventually more animals will get added. Seeing as I done animals in a unique way, this deserves some explanation.
My "ecological" style of running animals was a proof of concept. (That's why there's so few species right now). I've shown it can work, within limits. Now the code needs tidying up. After that the number of species can be expanded.
Things to consider:
When a player enters a bed, his controls should be disabled and the "lying down" animation played.
The animation starts, but controls are not disabled, allowing players to run in place on top of the bed, and this means most of the time, players instantly stand up when entering a bed.
This bug originates somewhere in our player_api, because replacing it with Runs' player_api resolves it. It may be an obscure interaction with the multiskin model mod, but I have yet to test removing that. We don't use any of its features at the moment, so it's worth looking into whether dropping it will fix this.
It just displays the warning message.
The "_wet" name is not being kept when wet agricultural soil gets subjected to digging or depletion/erosion. Instead the dry version is substituted.
2021-09-28 15:52:52: ERROR[Main]: ServerError: AsyncErr: ServerThread::run Lua: Runtime error from mod 'tech' in callback node_on_timer(): ... Support/minetest/games/exile/mods/tech/plant_crafts.lua:167: attempt to compare number with nil
2021-09-28 15:52:52: ERROR[Main]: stack traceback:
2021-09-28 15:52:52: ERROR[Main]: ... Support/minetest/games/exile/mods/tech/plant_crafts.lua:167: in function <... Support/minetest/games/exile/mods/tech/plant_crafts.lua:145>
The reason for this crash seems to be that there is a wrong number of arguments when calling "bake_bread" in the timer function:
minetest.register_node("tech:anperla_tuber_peeled", {
description = "Peeled Anperla Tuber",
...
on_timer = function(pos, elapsed)
--self, finished product, length, heat
return bake_bread(pos, "tech:anperla_tuber_peeled", "tech:anperla_tuber_cooked", 7, 100)
end,
})
Should be:
minetest.register_node("tech:anperla_tuber_peeled", {
description = "Peeled Anperla Tuber",
...
on_timer = function(pos, elapsed)
--self, finished product, length, heat
return bake_bread(pos, "tech:anperla_tuber_peeled", "tech:anperla_tuber_cooked", "tech:anperla_tuber_burned" 7, 100)
end,
Although needs to be a definition for burned anperla tubers
Perhaps related to #35, when there's significant lag and you're in bed, moving the camera locally can result in the server trying to put your view back, and then your view begin violently moving between the new and old positions until the lag resolves.
This is happening on MT5.4.0, perhaps a result of the physics changes being done when a player is in bed?
Perhaps it's not related to #35 -- the hud can update well before the camera stops doing the hippy hippy shake-shake with all of its might.
Weather is supposed to be saved and reloaded on a restart, but it sometimes changes dramatically when doing so.
I suspect it may be ignoring the loaded weather and just setting up like new each time, but that's just a guess; I haven't pored over the code in detail or anything yet.
Various niggly little areas make Exile difficult to mod. Ideally Exile should be easy to mod.
A couple of things I noticed
No doubt many more exist!
Currently the food meta in Exile is mostly dependent on baking maraka bread and cooking anperla, as these both give you in 24 hunger and 14 energy points a piece while allowing massive batches of them to be harvested.
In comparison, cooked meat from small birds and small fish give 10/2, and Sakramos (which is a gigantic shark-like creatue) only gives 30/6. This makes hunting and animal husbandry vastly inferior and more time-consuming than harvesting or farming. The only 'farm' animal of any value currently is the Gundu as their eggs add 10 thirst and 40 hunger points and they reproduce at a fairly fast rate.
My suggestion is to reduce bread and anperla to 5/1 and add items that would be a combination of the above ingredients such as meat sandwhiches or anperla salads that would have 10/2 or 24/14 or higher values depending on complexity. This would ensure all mechanics of the game are used roughly evenly.
Pictograms were the first form of writing, and each symbol represented a concrete thing which is resembled, and only over time did they come to be more abstract.
Our graffiti has some very good symbols like tree, and sun, and feet, some decent ones like lines and circles, suitable for drawing crude images, but there's no good symbol for fire, or water, or other things players care about, and there's a fair bit of space used up by things like four slightly different variants of a spiral.
Better, less abstract pictograms are needed, and more of them.
Related, i'd like to add chalk, which is basically just soft limestone, and allow players to use that or a split piece of charcoal to make tally marks, 1-5, or maybe four sets per node for 1-20.
Glass bottles should behave more or less the same as clay water pots, but they don't yet because some functions are not available. Rainwater collection is currently handled by a local function in tech/pottery, of all places.
This should be moved, ideally to liquid_store, made part of the liquid_store namespace, and applied to the glass bottles.
Hello,
Thank you for keeping this alive :)
I got this error while trying to bake peeled anperla tuber near a fire block on natural gravel (inside a cave)
AsyncErr: ServerThreead::run Lua Runtime error from mod 'tech' in callback node_on_timer(): ....4.1-win64\bin..\games\exile\mods\tech/plant_crafts.lua:169:attempt to compare number with nil
stack traceback:
....4.1-win64\bin..\games\exile\mods\tech/plant_crafts.lua:169: in function <....4.1-[...]/plant_crafts.lua:145>
Looking at the code, it seems "temp" revert to "nil" between the not nil test and the test with temp < fire_temp.
I know nothing about lua, but it looks like temp is updated by another thread between the 2 tests which trigger the error. I assume locking this portion of code would prevent this.
I retried multiple times: come back in the game, letting it run few seconds, planting new peeled anperla and causing new crashes.
Cheers
When the player gets below -12, the sound effects for wind, rain, etc. get sharply cut off. Minetest provides a function to fade sound playback, so we could use that to fade out as you go down, and fade in as you go back up.
I consider this the third major area of missing content, alongside a Storyteller and finishing the Underground City. By which I mean, features which will significantly alter the nature of this game.
Role playing...
The core element here is "Soft-perma death". New life = new character.
Currently this is limited to aesthetics ( a narrative snippet) and has no direct gameplay relevance. Many people do seem to naturally build a graveyard for their dead, so even this little snippet is going a long way, but we can expand on this. The role playing can become a major game feature.
The uniqueness of your character could become a significant factor in how you actually play.
Some possibilities:
The aesthetics side can also be expanded e.g:
These specific ideas are suggestions only. Basically anything that makes the character meaningfully unique belongs here.
That person's death should matter. They should feel like someone. The game should feel different when played with a different character. I want you to get attached and mourn them when they die, and have you next five characters die building a giant pyramid to honour the greatness of your first character.
New life. New character. Watching them die should hurt.
Character death is also an excellent opportunity to encourage the player to reflect on what just happened. Personally I have learned things about the way I make decisions by playing Exile, but that only happens if I stop and reflect. This should be encouraged.
e.g. on the death screen you could be given a time out. You can save stats about the character who just died, write down their lifestory (e.g. how they died), and have this information saved somewhere you can read it again (or even export it to share with friends.)
Expanding this role-playing element will be a significant improvement to the game.
We have list of block with mortar that can't be cracked by iron pickaxe.
bricks_and_mortar.lua
local list = {
{"limestone", "Limestone", 3},
{"ironstone", "Ironstone", 3},
{"granite", "Granite", 1},
{"basalt", "Basalt", 2},
{"gneiss", "Gneiss", 1},
{"jade", "Jade", 1},
}
All values except 2 and 3 can't be cracked ... it look like value 1 shall be most soft but the fact it doesn't work. I didn't understand how work configuration of iron pickaxe so I can't create correct PR.
So it require to be fixed by fix material value or pickaxe settings.
Getting an underground mushroom-related crash. Doesn't look like 'duration' is defined previously. Log:
2021-09-26 19:25:21: ERROR[Main]: ServerError: AsyncErr: ServerThread::run Lua: Runtime error from mod 'nodes_nature' in callback node_on_timer(): ...netest/bin/../games/Exile/mods/nodes_nature/life.lua:138: attempt to perform arithmetic on global 'duration' (a nil value)
2021-09-26 19:25:21: ERROR[Main]: stack traceback:
2021-09-26 19:25:21: ERROR[Main]: ...netest/bin/../games/Exile/mods/nodes_nature/life.lua:138: in function 'grow_seed'
2021-09-26 19:25:21: ERROR[Main]: ...netest/bin/../games/Exile/mods/nodes_nature/life.lua:368: in function <...netest/bin/../games/Exile/mods/nodes_nature/life.lua:361>
Exile/mods/nodes_nature/life.lua
Lines 135 to 138 in 3076d47
I happened to look in the mod storage and saw a bunch of binary data. I think this is because the entire bed_rest
variable, functions and all, is serialized. The functions do not need to be serialized.
Hi, in mods/nodes_nature/moisture_spread.lua
at line 48
the game is deleting the node instead of changing
it from wet to dry.
I noticed tiles in my garden are disappearing
Drinking should be done with a right click, yet if you're holding a full liquid store (clay water pot with freshwater for example) you will drink a water node when left clicking on it.
Reports also say it can sometimes remove the node without drinking it if thirst is 100%, destroying the water.
Currently hot air nodes interact with each other and their environment by using a "temp =" metadata string.
Metadata access is relatively slow, however, and invisible nodes like hot air have no use for the param2 field. We could set param2type to "none" and use it to store the node's temperature instead of metadata. This should allow much faster performance on air node manipulation and permit us to run more often and/or more widely, improving, for example, temperature leveling inside buildings.
The code would need to be able to deal with "temp" metadata on some things where param2 is used for the node's facing, but those are corner cases.
Antiq ladders are currently a bit unwieldy to use. It's possible to walk through them and fall off, they need a narrow collision box to prevent that.
In addition, they should leverage the code from wooden ladders that allows you to right click on a ladder to build another on top of it, though AQ can build both ways and should probably try to build up first, and then try building down by one if there's a non-empty node above.
Under some circumstances (lag?) a bed's marker will remain after a player gets up, and if the player lays down again he can claim multiple beds.
The code needs to prevent claiming more than one bed, but it's also supposed to remove the marker as soon as you get up.
On a related note, markers should be able to time out and get removed after a configurable delay, perhaps 7 IRL days, lest multiplayer servers get filled with lingering beds of long-gone players. Admins can still remove the beds with protection_bypass privs, but it might be nice to let server owners set up the markers to be taken off automatically.
So discussion about space stations doesn't derail other threads...
We have two empty areas of the map. Players can reach them, but don't live long (extreme temp ~650oC/-150oC). Currently there's no reason to go there, other than to give yourself an absurd super-challenge.
Possibilities:
As of v0.3.0 as distributed on Minetest ContentDB, this game requires the naturalslopeslib
dependency, but does not include it. Failing to install it causes a broken game (terrain does not generate). This problem has been reported by multiple users on IRC/Discord and they need to be told to install the dependency manually each time to resolve this.
Normally a Game for Minetest should be self-sufficient and include everything necessary to bootstrap the basic experience without any additional mods. There is apparently a weird exception where a mod within a game is allowed to have a hard dependency and if that dependency fails then that mod just doesn't load, to allow games to have effectively optional dependencies. However, this is probably mainly just an obscure footgun for game developers. Minetest's Content Browser clearly does not automatically install the external dependency and can't be relied on for help here at this time.
The sanest way to resolve this is probably to just include naturalslopeslib
directly in the game distribution. I haven't been able to find a working git repo for it to use as a submodule, but maybe unzipping the CDB download directly into Exile's mods dir makes the most sense. The mod is licensed as "LGPLv2.1 or later" (https://forum.minetest.net/viewtopic.php?t=18140) so it should be fine to include in an LGPLv3 game (IANAL).
I witnessed this one myself, at DanS' volcano outpost on the LoC server. At an altitude of 450,heavy rain particle effects came right through a solid-node (non-slab) roof as if it wasn't there. Returning to ground level, a solid-node roof stopped the rain entirely from coming through.
Something in particle display is affected by altitude, perhaps?
The city is currently one of the biggest features that needs improvement.
It lacks dynamism (e.g. surface has changing weather).
It's grindy and repetitive.
The main roadblock I faced:
The original code (geomoria etc) had the ability to add decorations. I could never get this to work. Fixing this will allow adding decorations (e.g dead bodies, loot), plus mobs inside structures (spawn eggs), and maybe some stuff to add dynamism??
Lore, and the kind of features that might belong down there:
This is what I had in my head...
The city is an ancient highly advanced civilization that destroyed itself. All the modern cultures of the world trace their ancestry to this city. So the question is... what happened?
I never settled on an answer to that, and like the idea of keeping it ambiguous, but this is where I was heading...
Some kind of failed transhumanist revolution took place. Everyone who didn't join in was massacred by the those who did join. Some people escaped, exiled from the city. Those who joined gained superhuman powers, but ultimately the technology failed - the city was destroyed... perhaps some still remain, husks, lurking in the dark...
Possible features:
Anyway, that's where I would have taken it.
You all may have other ideas. But this is an area that needs improving.
When a player is dead and the formspec informing them of it is up, pressing the arrow keys causes them to respawn without closing the formspec.
Stats are reset after closing the formspec, but this is still odd. Is it a bug in our formspec code, or a deeper engine bug?
ABMs are a significant source of multiplayer lag, and nodes_nature/moisture_spread.lua in particular defines like four or five separate ABMs for water nodes. This should be rewritten to use only one or perhaps two, if we keep source and flowing nodes on separate ABMs.
This is rather a feature request than an actual issue.
Can we cook or bake the animal eggs?
The raw eggs have rather high chances of getting either food poisoning or parasites
and I was hoping fire exposure might diminish those chances (by a lot, hopefully).
People can still get the health problems if they confuse right click (place to bake) with the left click (eat).
Thank you
It's possible to plant seeds in an already planted square, destroying the existing plant. We should probably check and only plant a seed if the node above the soil is air.
When smelting multiple iron mix nodes, the nodes in the -X and -Z directions (west and south) heat faster and reach higher temperatures than the others. Not if this effect also occurs during cooking or firing pottery but those processes don't last as long so it may just be less obvious.
For a small underpowered smelter (three iron mix nodes and one charcoal block) the effect is most obvious: The node with the lowest X or Z coordinate heats the most, reaching 1800 C and smelting, while the middle node gets to around 1300 C and the opposite node stays at 1100 C. Once the hot node is finished smelting the other two heat up more, though the middle node is still hotter. Here's a screenshot where I extinguished the fires after the first node smelted and removed the top layer, north is up:
I've reproduced this on 0.3.3 and whatever branch is running on the Land of Catastrophe server currently (I'm m0dus there). I noticed from mods/climate/temperature.lua:482 in climate.air_temp_source(), the function iterates over the nearby heatable or air nodes - from some logging the ordering of the list is consistent with lower-coordinate nodes first so it hits the southwest nodes first. Then at line 510 a passed-in function parameter is modified each time the loop hits a heatable node: "temp_effect" is effectively scaled down with each pass through, starving the later nodes of heat.
A quick hack to lines 510 and 513 to declare and use a new local variable indeed leads to far more even heating, though I'm not familiar enough to know if that gives a reasonable heating rate. I don't have the repo cloned right now so you'll have to forgive the lack of PR, though I'm enjoying the game a lot so I might figure it out c:
Salty wet nodes are created on mapgen, but a report suggested they do not interact correctly with moisture flowing through soil?
Possible improvement; Evaporating salt water should leave salty dry nodes behind, and fresh water should become salty when moving through salty nodes, and remove the salt when they move into a non-salty neighbor.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.