A new subgame for Minetest

Alex Yst ae168cddd9 Remove characters from the README.txt file that Gogs chockes on 5 years ago
menu d6ef459262 Begin with a minimalistic and unplayable base 5 years ago
mods 4c86cedbba Add palette description emulation 5 years ago
LICENSE d6ef459262 Begin with a minimalistic and unplayable base 5 years ago
README.txt ae168cddd9 Remove characters from the README.txt file that Gogs chockes on 5 years ago
game.conf d6ef459262 Begin with a minimalistic and unplayable base 5 years ago

README.txt

-=-=- DEVELOPMENT -=-=-

Development of this game operates on a few basic principles. I felt it
was necessary to outline these in case other developers want to get on
board or even just submit pull requests. No code will be accepted into
this subgame if it doesn't meet the standards laid out here.

-=- No monolithic base mod -=-

Minetest Game's "default" mod has a tendency to absorb other mods when
their features are added to Minetest Game. For example, pieces of
"moreores" and "conifers" were added to Minetest Game, and instead of
retaining their separate mod status, they were lumped into "default".
Likewise, "default" contains the basic things all mods depend on, such
as sound files. That means that nearly every mod designed for Minetest
Game has to depend on the presence of the ores, the trees, the map
generators, a multitude of player-craftable items, et cetera just to
use the same sounds everything else is using. Furthermore, server
administrators can't remove, for example, desert biomes, without
removing everything depended on by every other mod. It's utterly
ridiculous.

In Palette Game, we have no monolithic base mod. Anything even
resembling a base mod is kept as minimalistic as feasible, so mods can
depend on only what they actually need, and administrators can remove
what they don't want. This results in a bit of a layered system. For
example, one mod adds the basic sounds every mod will probably want
access to as well as the images required by non-mod parts of the game
(such as the life heart and player sprites). Another adds the base
nodes (and nodes those nodes depend on) used by the bare-minimum map
generator. Other mods can build off of that to create actual biomes,
and each biome has its own mod.

For the most part, we'll try to keep any mod included here from
becoming monolithic, but in some cases, it might be unavoidable, such
as when a paletted node has each of its versions act as a significantly
different item. For example, a mod that introduces a palette-based
sapling might need to define 256 types of log, one for each tree
species, if each log has a significantly-different texture. (The
currently-planned tree mod will only need to define 32 log nodes
though.)

-=- Clean dependencies -=-

A while back, I filed a pull request to fix an issue where Minetest
Game's "default" was using nodes from "flowers", even though it is
"flowers" that depends on "default". The mapgen issue caused errors to
be thrown by "default" any time "flowers" was not installed. The pull
request was rejected on the grounds that the developers, at the time,
wanted to keep all mapgen related stuff together in the same file. So
why have "flowers" be a separate mod if both mods require the other to
function properly? Later, this issue was actually fixed, but now
there's a new problem: the schematics in "default" include mushrooms
from "flowers". Again, these two mods have become entangled.

In Palette Game, we keep our dependencies clean. If a mod doesn't have
an actual dependency on another mod, it won't assume that mod exists
and try to use its features. Administrators can remove any mod they
like, along with the mods that depend on it, and there will be no
errors.

-=- Heavy use of palettes -=-

Palette Game makes heavy use of palettes, hence its name. Not
everything needs to have a palette, but if multiple nodes have
basically the same texture, they will be combined into one node
definition and use a shared palette.

-=- Pseudonamespaces in media file names -=-

The Minetest API documentation recommends media files have names in the
format "{modname}_{some description}.{extension}". This is to avoid
filename clashes. However, a mod called "x" could want to add a texture
called "y_z", and a mod called "x_y" could want to add a texture called
"z". Both mods would call their texture "x_y_z.png". Underscores cannot
both be valid characters for use in mod names *and* be used as a
namespace separator. A different character is needed as a separator.
The obvious choice is the colon, due to its use in delimiting
namespaces elsewhere in Minetest, but it isn't handled correctly in
texture names. Instead, Palette Game uses a dash to delimit the
pseudonamespace, as dashes both are handled correctly in texture names
and are disallowed in mod names. Media files in Palette Game, except
where the engine requires a specific name be used (such as
"crack_anylength.png"), are in the format
"{modname}-{description}.{extension}".

-=- Namespaces -=-

Speaking of namespaces, namespaces are actually used correctly in item
names in this game. This point is one of the reasons this game is being
created instead of my continuing work modding Minetest Game.
Specifically, the Minetest Game "stairs" mod shoves all stairs and
slabs into the "stairs" namespace, directly negating the benefits of
each mod having its own namespace. Different mods using the "stairs"
API that happen to choose the same name for their stairs will find that
one mod's stairs overwrite the other mod's. In this game, library-type
mods that help define nodes are only allowed if such libraries put the
defined nodes in the correct namespaces instead of absorbing those
nodes into their own namespaces.

-=- This is a complete game -=-

I mean, development isn't finished and we're always trying to make the
subgame better, but this game isn't designed with modding being the one
and only use case. For example, Minetest Game has a nasty habit of
defining items that are utterly and completely useless, in hopes that
some mod will give them purpose. For example, the vessels mod was like
this originally, defining vessels for mods to use that had no function
on their own. Thankfully, the developers accepted a pull request I put
in to make the vessels placeable as nodes, giving them purpose on their
own. Mods could still use them, but they were no longer dependent on
mods to even be worth having in the game. Another example of this is
mese crystal fragments. Originally, mese crystals were defined to be
breakable into fragments, but there was no way to reassemble those
fragments and no use for the fragments themselves. My pull request to
make the fragments craftable back into full mese crystals was rejected.
In other words, a new player could accidentally discover the mese
fragment recipe, break their mese crystals, and ruin them with no hope
of getting them back. Seriously? Thankfully, my exact solution was
later implemented in Minetest Game independently of my pull request.
Without these two fixes though, these items are rendered pointless in
worlds that either are unmodded or that don't happen to employ mods
that use these specific items.

In any case, while Palette Game will try to make things easy for
modders, it'll also care for its as-is subgame users. Everything has a
purpose in this subgame.

-=- Built-in ownership -=-

Speaking of being complete, this subgame doesn't even require an
external node-protection mod; it includes one. Feel free to swap it out
for a different one in your own worlds, but even if you don't, this
subgame comes server-ready as it is. Additionally, destructive mods in
this subgame respect protection. I remember when TNT was added to
Minetest Game and I tried to reason with the developers to have it
respect node protection. If I recall, I even wrote up a pull request to
do all the work for them. They refused, claiming people should be
allowed to blow up their own protected areas. But what about *other
people's* protected areas? These were left unprotected from TNT as
well. Thankfully, this has been fixed independently of my own attempts
later. However, the "fire" mod in Minetest Game, as of writing, still
doesn't respect node protection. Everything destructive in this subgame
respects protection.

(Currently, the protection mod for this subgame has not actually been
developed yet.)

-=- No dried-up old worlds -=-

All items in this subgame, without exception, are renewable. Even items
that normally wouldn't get "used up" are renewable, as players can be
short-sighted and throw away valuable items. For example, if there's a
limited amount of dirt and players pulverise it, dirt will become too
scarce. No mod will be accepted into Palette Game unless for every item
it defines, it also defines a renewal mechanic. Renewal doesn't have to
be easy, but there needs to be a way to recover lost materials without
throwing away old maps and starting over.

-=- Copying is a form of love. Please copy and share. -=-

Imitation is the most sincere form of flattery. You don't copy what you
don't like. We copy code and media from other sources, especially
Minetest Game. We love Minetest Game. It's the best game ever,
currently. We just want to try our hands at improving it a bit. If you
love something from Palette Game, please take our code and media and do
with it as you please. We make everything available under
Minetest-compatible licenses too, in case upstream wants to incorporate
what we're doing. Besides, ideas are not property and cannot be "owned"
or "stolen". Trying to prevent others from making use of our work would
be a morally repugnant thing to do.

Please check individual mods in this game for specific details, but
without exception, all code is under a license compatible with the GNU
LGPLv2.1 and all media is under a license compatible with CC BY-SA 3.0.
Anything not in a mod (such as the subgame's icon) is under one of
those two licenses (not just a compatible license).