README.txt 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. -=-=- DEVELOPMENT -=-=-
  2. Development of this game operates on a few basic principles. I felt it
  3. was necessary to outline these in case other developers want to get on
  4. board or even just submit pull requests. No code will be accepted into
  5. this subgame if it doesn't meet the standards laid out here.
  6. -=- No monolithic base mod -=-
  7. Minetest Game's "default" mod has a tendency to absorb other mods when
  8. their features are added to Minetest Game. For example, pieces of
  9. "moreores" and "conifers" were added to Minetest Game, and instead of
  10. retaining their separate mod status, they were lumped into "default".
  11. Likewise, "default" contains the basic things all mods depend on, such
  12. as sound files. That means that nearly every mod designed for Minetest
  13. Game has to depend on the presence of the ores, the trees, the map
  14. generators, a multitude of player-craftable items, et cetera just to
  15. use the same sounds everything else is using. Furthermore, server
  16. administrators can't remove, for example, desert biomes, without
  17. removing everything depended on by every other mod. It's utterly
  18. ridiculous.
  19. In Palette Game, we have no monolithic base mod. Anything even
  20. resembling a base mod is kept as minimalistic as feasible, so mods can
  21. depend on only what they actually need, and administrators can remove
  22. what they don't want. This results in a bit of a layered system. For
  23. example, one mod adds the basic sounds every mod will probably want
  24. access to as well as the images required by non-mod parts of the game
  25. (such as the life heart and player sprites). Another adds the base
  26. nodes (and nodes those nodes depend on) used by the bare-minimum map
  27. generator. Other mods can build off of that to create actual biomes,
  28. and each biome has its own mod.
  29. For the most part, we'll try to keep any mod included here from
  30. becoming monolithic, but in some cases, it might be unavoidable, such
  31. as when a paletted node has each of its versions act as a significantly
  32. different item. For example, a mod that introduces a palette-based
  33. sapling might need to define 256 types of log, one for each tree
  34. species, if each log has a significantly-different texture. (The
  35. currently-planned tree mod will only need to define 32 log nodes
  36. though.)
  37. -=- Clean dependencies -=-
  38. A while back, I filed a pull request to fix an issue where Minetest
  39. Game's "default" was using nodes from "flowers", even though it is
  40. "flowers" that depends on "default". The mapgen issue caused errors to
  41. be thrown by "default" any time "flowers" was not installed. The pull
  42. request was rejected on the grounds that the developers, at the time,
  43. wanted to keep all mapgen related stuff together in the same file. So
  44. why have "flowers" be a separate mod if both mods require the other to
  45. function properly? Later, this issue was actually fixed, but now
  46. there's a new problem: the schematics in "default" include mushrooms
  47. from "flowers". Again, these two mods have become entangled.
  48. In Palette Game, we keep our dependencies clean. If a mod doesn't have
  49. an actual dependency on another mod, it won't assume that mod exists
  50. and try to use its features. Administrators can remove any mod they
  51. like, along with the mods that depend on it, and there will be no
  52. errors.
  53. -=- Heavy use of palettes -=-
  54. Palette Game makes heavy use of palettes, hence its name. Not
  55. everything needs to have a palette, but if multiple nodes have
  56. basically the same texture, they will be combined into one node
  57. definition and use a shared palette.
  58. -=- Pseudonamespaces in media file names -=-
  59. The Minetest API documentation recommends media files have names in the
  60. format "{modname}_{some description}.{extension}". This is to avoid
  61. filename clashes. However, a mod called "x" could want to add a texture
  62. called "y_z", and a mod called "x_y" could want to add a texture called
  63. "z". Both mods would call their texture "x_y_z.png". Underscores cannot
  64. both be valid characters for use in mod names *and* be used as a
  65. namespace separator. A different character is needed as a separator.
  66. The obvious choice is the colon, due to its use in delimiting
  67. namespaces elsewhere in Minetest, but it isn't handled correctly in
  68. texture names. Instead, Palette Game uses a dash to delimit the
  69. pseudonamespace, as dashes both are handled correctly in texture names
  70. and are disallowed in mod names. Media files in Palette Game, except
  71. where the engine requires a specific name be used (such as
  72. "crack_anylength.png"), are in the format
  73. "{modname}-{description}.{extension}".
  74. -=- Namespaces -=-
  75. Speaking of namespaces, namespaces are actually used correctly in item
  76. names in this game. This point is one of the reasons this game is being
  77. created instead of my continuing work modding Minetest Game.
  78. Specifically, the Minetest Game "stairs" mod shoves all stairs and
  79. slabs into the "stairs" namespace, directly negating the benefits of
  80. each mod having its own namespace. Different mods using the "stairs"
  81. API that happen to choose the same name for their stairs will find that
  82. one mod's stairs overwrite the other mod's. In this game, library-type
  83. mods that help define nodes are only allowed if such libraries put the
  84. defined nodes in the correct namespaces instead of absorbing those
  85. nodes into their own namespaces.
  86. -=- This is a complete game -=-
  87. I mean, development isn't finished and we're always trying to make the
  88. subgame better, but this game isn't designed with modding being the one
  89. and only use case. For example, Minetest Game has a nasty habit of
  90. defining items that are utterly and completely useless, in hopes that
  91. some mod will give them purpose. For example, the vessels mod was like
  92. this originally, defining vessels for mods to use that had no function
  93. on their own. Thankfully, the developers accepted a pull request I put
  94. in to make the vessels placeable as nodes, giving them purpose on their
  95. own. Mods could still use them, but they were no longer dependent on
  96. mods to even be worth having in the game. Another example of this is
  97. mese crystal fragments. Originally, mese crystals were defined to be
  98. breakable into fragments, but there was no way to reassemble those
  99. fragments and no use for the fragments themselves. My pull request to
  100. make the fragments craftable back into full mese crystals was rejected.
  101. In other words, a new player could accidentally discover the mese
  102. fragment recipe, break their mese crystals, and ruin them with no hope
  103. of getting them back. Seriously? Thankfully, my exact solution was
  104. later implemented in Minetest Game independently of my pull request.
  105. Without these two fixes though, these items are rendered pointless in
  106. worlds that either are unmodded or that don't happen to employ mods
  107. that use these specific items.
  108. In any case, while Palette Game will try to make things easy for
  109. modders, it'll also care for its as-is subgame users. Everything has a
  110. purpose in this subgame.
  111. -=- Built-in ownership -=-
  112. Speaking of being complete, this subgame doesn't even require an
  113. external node-protection mod; it includes one. Feel free to swap it out
  114. for a different one in your own worlds, but even if you don't, this
  115. subgame comes server-ready as it is. Additionally, destructive mods in
  116. this subgame respect protection. I remember when TNT was added to
  117. Minetest Game and I tried to reason with the developers to have it
  118. respect node protection. If I recall, I even wrote up a pull request to
  119. do all the work for them. They refused, claiming people should be
  120. allowed to blow up their own protected areas. But what about *other
  121. people's* protected areas? These were left unprotected from TNT as
  122. well. Thankfully, this has been fixed independently of my own attempts
  123. later. However, the "fire" mod in Minetest Game, as of writing, still
  124. doesn't respect node protection. Everything destructive in this subgame
  125. respects protection.
  126. (Currently, the protection mod for this subgame has not actually been
  127. developed yet.)
  128. -=- No dried-up old worlds -=-
  129. All items in this subgame, without exception, are renewable. Even items
  130. that normally wouldn't get "used up" are renewable, as players can be
  131. short-sighted and throw away valuable items. For example, if there's a
  132. limited amount of dirt and players pulverise it, dirt will become too
  133. scarce. No mod will be accepted into Palette Game unless for every item
  134. it defines, it also defines a renewal mechanic. Renewal doesn't have to
  135. be easy, but there needs to be a way to recover lost materials without
  136. throwing away old maps and starting over.
  137. -=- Copying is a form of love. Please copy and share. -=-
  138. Imitation is the most sincere form of flattery. You don't copy what you
  139. don't like. We copy code and media from other sources, especially
  140. Minetest Game. We love Minetest Game. It's the best game ever,
  141. currently. We just want to try our hands at improving it a bit. If you
  142. love something from Palette Game, please take our code and media and do
  143. with it as you please. We make everything available under
  144. Minetest-compatible licenses too, in case upstream wants to incorporate
  145. what we're doing. Besides, ideas are not property and cannot be "owned"
  146. or "stolen". Trying to prevent others from making use of our work would
  147. be a morally repugnant thing to do.
  148. Please check individual mods in this game for specific details, but
  149. without exception, all code is under a license compatible with the GNU
  150. LGPLv2.1 and all media is under a license compatible with CC BY-SA 3.0.
  151. Anything not in a mod (such as the subgame's icon) is under one of
  152. those two licenses (not just a compatible license).