[Mod] Epidermis [epidermis]

Post Reply
User avatar
LMD
Member
Posts: 1386
Joined: Sat Apr 08, 2017 08:16
GitHub: appgurueu
IRC: appguru[eu]
In-game: LMD
Location: Germany
Contact:

[Mod] Epidermis [epidermis]

by LMD » Post

Epidermis Image

the surface epithelium of the skin, overlying the dermis
The only ~~outer skin~~ epidermis mod you'll ever need.

About

epidermis is a feature-fledged Minetest skin mod, featuring 3d skin painting and excellent SkinDB support.

Requirements

epidermis requires at least Minetest 5.4 for the server and at least 5.3 (dynamic media support) for the client.

Dependencies
Licensing

All code written by appgurueu and licensed under the MIT license.

The textures have been created by Dragoni and appgurueu and are all licensed under CC BY-SA 3.0. Attribution is given below.

The following tool textures (within the textures/tools folder) have been created by Dragoni:
  • epidermis_book.png
  • epidermis_eraser.png
  • epidermis_filling_bucket.png
  • epidermis_filling_paint.png
  • epidermis_palette.png
  • epidermis_pen_handle.png
  • epidermis_pen_tip.png
  • epidermis_undo_redo.png
logo.png in the root folder was also created by Dragoni. Everything else was created by appgurueu and is also licensed under CC BY-SA 3.0. screenshot.png uses character.png by Jordach which is licensed under CC BY-SA 3.0 as well.

Links
  • GitHub - sources, issue tracking, contributing
  • Discord - discussion, chatting
  • Minetest Forum - (more organized) discussion
  • ContentDB - releases (downloading from GitHub is recommended)
Features
  • Per-player skins
    • Just drop them in <worldpath>/data/epidermis/textures/players/epidermis_player_<playername>.png
  • 3D Epidermis painting
    • Model- and texture-agnostic. Full B3D and PNG support.
    • HSV & RGB colorpickers, named color support
    • Arbitrary rotation & backface culling support
  • SkinDB support
    • Real-time syncing with SkinDB (uploaded textures immediately become usable without a restart); no external scripts required
    • Picking SkinDB skins for yourself or as Epidermis base textures
    • Upload to SkinDB
Comparison

2D Texture Painting Mods
  • Painted 3D armor: A mod supporting paintings on armor. Painting still happens in 2D space and is rather limited through the use of texture modifiers; a rather old mod.
  • skinmaker, a well-done mod limited to the scope of 2-dimensional creation of skins in-game using only texture modifiers. Good support for older MT versions without dynamic media, not entirely texture- and model-agnostic. Experimental.
Clothing Mods
Skin Mods
  • Wardrobe and Wardrobe Outfits: A few "selected" skins; the former provides an API for other mods to register more
  • Simple Skins: A different set of available skins, excellent support for ancient MT versions
  • SkinsDB and SkinsDB for Hades Revisited: Proper SkinDB support using an update command which shuts down the server, support for user-added skins, decent skin selection dialog including a search feature
Epidermis beats most currently available skin mods through better SkinDB support (including uploading) and is the first mod to provide 3-dimensional skin painting (which may however not be considered generally superior to 2-dimensional painting).

Engine Limitations

Memory Usage

You can expect each active entity to consume memory proportional to the texture pixel count. Skins sized 64x32 should stay in the kilobyte range. There is however a clientside memory leak which causes textures to not be dropped from texture cache. This means that every time the texture is changed, the client will store it in memory until the session ends. For 64x32, roughly 8 KB will be stored per update/action. That means a thousand actions will roughly take 8 MB; a million actions would take 8 GB. Therefore, it is not recommended to try using higher resolution textures, even though they are perfectly supported by the mod.

Disk Usage

The dynamic media API allows marking media as ephemeral, which means it isn't cached clientside and not sent to new clients. Unfortunately this means that joining players don't receive the media, which would result in undefined behavior. Therefore, this fills up client & server disk space in it's current form. Server disk space is automatically cleared on startup; client cache must be cleared manually.

Mod Limitations

wield3d

Does not display the colors of wielded items.

Hints

If you want to be able to accurately paint, don't use cinematic camera smoothing or view bobbing. Both will make your look direction inaccurate in certain cases. Alternatively to disabling view bobbing, rest while painting (and use the newest Minetest version).

As you might have noticed, there is no kind of palette. That is no issue however: Simply abuse a second entity (or a portion of the epidermis) as palette.

Instructions

The in-game guide item contains these instructions as well.

Tools

Guide

The in-game guide provides instructions for these tools.

Spawners

Paintable spawner

Spawns a paintable epidermis with your current texture.

HSV colorpicker spawner

Spawns a "wallmounted" HSV colorpicker.

Painting Tools

Tools which work much like those found in common painting programs.

Pen, line, rectangle and filling bucket all require a color. There are three ways to pick a color:
  • You can pick a color from the paintable epidermis by right-clicking it.
  • You can open a RGB color picker dialog by right clicking while pointing at nothing.
  • You can spawn a HSV color picker in-world by placing it against a node. Right-click to pick a color, punch the hue to change the hue of the saturation & value field.
Pen

The pen is the most basic tool. It is used to place single pixels (left-click).

Line

The line tool draws, duh, a line. Use it by "dragging": keep the left mouse button down. You will be shown a preview. Dragging stops when you change your wield item or point at a different entity.

Rectangle

Works like the line tool but draws a filled rectangle.

Filling Bucket

Floodfills adjacent pixels of exactly the same color, swapping out their color for the color of the filling bucket.

Undo-redo

Left-click to undo, right-click to redo. Undo-redo log size is limited due to [​Memory Usage] constraints.

Configuration

Code: Select all

<!--modlib:conf:2-->
skindb

autosync

Automatically sync with SkinDB at startup, continue syncing during game
  • Type: boolean
  • Default: true

Code: Select all

<!--modlib:conf-->
Possible future features
  • [​ ] NodeCore support
  • [​ ] 3D armor support
  • [​ ] Restart server if a certain amount of dynamic texture data has been reached (100 MB?)
  • [​ ] Paintable transportability (as items?) & trashability
  • [​ ] Better icons (play button for animation?)
  • [​ ] Skinmaker support to add 2-dimensional texture painting
  • [​ ] Semi-transparency painting support
    • Pointless as long as Minetest doesn't properly support semitransparency for CAOs
  • [​ ] Survival mode
    • [​ ] Obtaining paintable epidermi through skinning
    • [​ ] Dye rewrite with color mixing and limited color supply
  • [​ ] SkinDB replacement server
My stuff: Projects - Mods - Website

minerr93
New member
Posts: 1
Joined: Wed Apr 13, 2022 09:35

Re: [Mod] Epidermis [epidermis]

by minerr93 » Post

Looks like an interesting mod, so I tried to use it but got an error, how can I fix this, please?

OS: Ubuntu 20.04.LTS
Minetest: 5.5.0 installed from Snap
Game: Minetest Game
Epidermis: Installed from within Minetest
Other mods: moblib, modlib installed with Epidermis

debug.txt:

Code: Select all

2022-04-13 11:46:21: ACTION[Main]: Installed package to /home/mattias/.minetest/mods/moblib
2022-04-13 11:46:21: ACTION[Main]: Installed package to /home/mattias/.minetest/mods/modlib
2022-04-13 11:46:21: ACTION[Main]: Installed package to /home/mattias/.minetest/mods/epidermis
2022-04-13 11:46:36: ERROR[Main]: ModError: Failed to load and run script from /home/mattias/.minetest/mods/epidermis/init.lua:
2022-04-13 11:46:36: ERROR[Main]: /home/mattias/.minetest/mods/epidermis/init.lua:13: add epidermis to secure.http_mods
2022-04-13 11:46:36: ERROR[Main]: stack traceback:
2022-04-13 11:46:36: ERROR[Main]: 	[C]: in function 'assert'
2022-04-13 11:46:36: ERROR[Main]: 	/home/mattias/.minetest/mods/epidermis/init.lua:13: in main chunk
2022-04-13 11:46:36: ERROR[Main]: Check debug.txt for details.
2022-04-13 11:46:36: ACTION[Main]: Server: Shutting down

User avatar
LMD
Member
Posts: 1386
Joined: Sat Apr 08, 2017 08:16
GitHub: appgurueu
IRC: appguru[eu]
In-game: LMD
Location: Germany
Contact:

Re: [Mod] Epidermis [epidermis]

by LMD » Post

Please do what the error message says: "add epidermis to secure.http_mods"
My stuff: Projects - Mods - Website

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: [Mod] Epidermis [epidermis]

by Linuxdirk » Post

LMD wrote:
Wed Apr 13, 2022 19:37
Please do what the error message says: "add epidermis to secure.http_mods"
A player skins mod that needs insecure environment? Oh hell no!

User avatar
rubenwardy
Moderator
Posts: 6972
Joined: Tue Jun 12, 2012 18:11
GitHub: rubenwardy
IRC: rubenwardy
In-game: rubenwardy
Location: Bristol, United Kingdom
Contact:

Re: [Mod] Epidermis [epidermis]

by rubenwardy » Post

Linuxdirk wrote:
Thu Apr 14, 2022 06:03
LMD wrote:
Wed Apr 13, 2022 19:37
Please do what the error message says: "add epidermis to secure.http_mods"
A player skins mod that needs insecure environment? Oh hell no!
http_mods, not trusted_mods. It needs HTTP access, presumably to download skins
Renewed Tab (my browser add-on) | Donate | Mods | Minetest Modding Book

Hello profile reader

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: [Mod] Epidermis [epidermis]

by Linuxdirk » Post

Mmmh, so HTTP is seen as secure?

User avatar
rubenwardy
Moderator
Posts: 6972
Joined: Tue Jun 12, 2012 18:11
GitHub: rubenwardy
IRC: rubenwardy
In-game: rubenwardy
Location: Bristol, United Kingdom
Contact:

Re: [Mod] Epidermis [epidermis]

by rubenwardy » Post

Linuxdirk wrote:
Thu Apr 14, 2022 14:24
Mmmh, so HTTP is seen as secure?
The secure. prefix prevents mods from changing those settings. HTTP is behind a setting as it's not usually desirable to let all mods access the Internet
Renewed Tab (my browser add-on) | Donate | Mods | Minetest Modding Book

Hello profile reader

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: [Mod] Epidermis [epidermis]

by Linuxdirk » Post

I just wonder what can be done with data retrieved from HTTP sources (i.e. external sources,m likely not under own control). Can it be parsed as code and executed?

User avatar
LMD
Member
Posts: 1386
Joined: Sat Apr 08, 2017 08:16
GitHub: appgurueu
IRC: appguru[eu]
In-game: LMD
Location: Germany
Contact:

Re: [Mod] Epidermis [epidermis]

by LMD » Post

Linuxdirk wrote:
Thu Apr 14, 2022 20:32
I just wonder what can be done with data retrieved from HTTP sources (i.e. external sources,m likely not under own control). Can it be parsed as code and executed?
Obviously, but it's on the programmer if they do that. Epidermis only throws a JSON parser at data received from SkinDB. The worst invalid data should be able to do is trigger a crash as my code is full of assertions.
My stuff: Projects - Mods - Website

User avatar
LMD
Member
Posts: 1386
Joined: Sat Apr 08, 2017 08:16
GitHub: appgurueu
IRC: appguru[eu]
In-game: LMD
Location: Germany
Contact:

Re: [Mod] Epidermis [epidermis]

by LMD » Post

Linuxdirk wrote:
Thu Apr 14, 2022 14:24
Mmmh, so HTTP is seen as secure?
It is not. Unfortunately the current SkinDB only supports HTTP. Feel free to host a HTTPS one, the code is open source. I'd rather rewrite it though :P
My stuff: Projects - Mods - Website

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: [Mod] Epidermis [epidermis]

by Linuxdirk » Post

LMD wrote:
Wed Apr 20, 2022 10:11
Unfortunately the current SkinDB only supports HTTP.
But how? I mean, what is done in order to only support HTTP? I wouldn’t even know how to make a web application or API not protocol-agnostic.

User avatar
LMD
Member
Posts: 1386
Joined: Sat Apr 08, 2017 08:16
GitHub: appgurueu
IRC: appguru[eu]
In-game: LMD
Location: Germany
Contact:

Re: [Mod] Epidermis [epidermis]

by LMD » Post

Linuxdirk wrote:
Wed Apr 20, 2022 10:34
LMD wrote:
Wed Apr 20, 2022 10:11
Unfortunately the current SkinDB only supports HTTP.
But how? I mean, what is done in order to only support HTTP? I wouldn’t even know how to make a web application or API not protocol-agnostic.
Sorry, I was unclear. The SkinDB web application written in PHP (https://bitbucket.org/kingarthursteam/mt-skin-db) most likely is protocol-agnostic. It's the current SkinDB hosting at http://http://minetest.fensta.bplaced.net/ which only accepts HTTP.
My stuff: Projects - Mods - Website

User avatar
rubenwardy
Moderator
Posts: 6972
Joined: Tue Jun 12, 2012 18:11
GitHub: rubenwardy
IRC: rubenwardy
In-game: rubenwardy
Location: Bristol, United Kingdom
Contact:

Re: [Mod] Epidermis [epidermis]

by rubenwardy » Post

LMD wrote:
Wed Apr 20, 2022 10:11
It is not. Unfortunately the current SkinDB only supports HTTP. Feel free to host a HTTPS one, the code is open source. I'd rather rewrite it though :P
I think he meant HTTP generally, rather than plaintext http specifically
Renewed Tab (my browser add-on) | Donate | Mods | Minetest Modding Book

Hello profile reader

Post Reply

Who is online

Users browsing this forum: No registered users and 10 guests