Realtime scripting with uploaded media

User avatar
MirceaKitsune
Member
 
Posts: 809
Joined: Sat May 21, 2011 22:31
GitHub: MirceaKitsune
IRC: Taoki
In-game: MirceaKitsune

Realtime scripting with uploaded media

by MirceaKitsune » Wed Dec 05, 2012 21:51

This is a more daring idea I've had in mind. It's related to a question I raised with MineCraft, regarding how much its structure can be used as a virtual space rather than a game. I've been a Second Life user for years in this sense, and interested in the idea of virtual spaces and sandbox systems, which engines like MineTest also have a potential for. My idea was inspired by one of the core features that made SL exciting over the years as a sandbox system.

Similar to MineTest, you can freely build objects out of geometry in Second Life. But the biggest addition there is the ability to script them in realtime, as well as uploading and using textures, sounds, animations and meshes. This allows anyone who has an idea to put it in practice, and create all sorts of objects that do many things. All of it is done in realtime, and people create scripts from in-world that they assign to objects. They can also upload textures and sounds and use them to preform a variety of scripted actions.

Obviously we can't nor want to copy what others do, but I like to inspire myself from good ideas. So I've been thinking of having something similar in MineTest, in a form that's possible and useful for it. Unlike SL and other sandbox systems however, you don't just spawn a shape on the ground and texture it in MineTest. Everything is defined as a node or item, which is either obtained by crafting or mining. My idea is players being able to script items and nodes from in-world, using textures and sounds they can upload to that server... all from their MineTest client.

In other words: Players with this privilege are given a folder of their own by the server (within that world). Using an in-game menu, they can upload sounds, textures and models to that folder. Then each player would have a text editor in their MineTest client, in which they can write lua scripts and save them on the server. Whenever a script is saved, the engine initializes it and puts it in practice. Each player can create, edit or delete their own scripts.

Example: Let's say someone is playing on a server with the feature enabled, using default minetest_game. They want to create a weapon that shoots mobs. To do that, they would transfer the image of a gun to the server, a gunshot sound, and from their inventory they would write a lua script for the gun (specifying the uploaded image, assigning the uploaded gunshot sound for left-clicking, what the object does and how it's crafted, etc). Once he saves the script, anyone on that server can write his crafting recipe to obtain the gun and use it.

The idea would obviously raise a lot of concerns. First of all, the creator of a script / item can modify or remove it at any time, which means he can also ruin what he made. People could also upload any media to the server... including copyrighted stuff, porn, or everything you can imagine. Not to mention that cheating would instantly become possible (eg: you can make a rockpick that mines everything immediately) so this would be unusable on servers where you want gameplay to matter. Griefing would also become much easier, and you can expect a troll to make an item that just spawns fire everywhere, burns everything and kills all players. This would need a lot of planning, but I think the feature would be interesting and worth having.

What do you think? Would it be a nice addition for some servers, and bring even more creativity to MineTest? How hard would it be to implement it in the engine, and do you believe it's worth the time? As a Second Life and OpenSim user, I can say this is a great feature for a well-made sandbox system, and it would be nice to give it a try here as well.
 

User avatar
Menche
Member
 
Posts: 994
Joined: Sat Jul 02, 2011 00:43

by Menche » Wed Dec 05, 2012 23:32

I think player-created custom content is a good idea, but there would have to be limits for balance. For example, you shouldn't be able to make an indestructable insta-pick out of dirt. Players shouldn't be able to simply upload any mod.
If the modding api could be made able to define nodes/items while the game is running, maybe a more simplified, controlled sub-api could be made in lua for use in-game by players?
Last edited by Menche on Wed Dec 05, 2012 23:33, edited 1 time in total.
An innocent kitten dies every time you top-post.
I am on the Voxelands Forums more often than here.
Try Voxelands (forked from Minetest 0.3) by darkrose
 

User avatar
dannydark
Member
 
Posts: 428
Joined: Fri Aug 12, 2011 21:28

by dannydark » Wed Dec 05, 2012 23:54

I do like this idea a lot, straight away when I was reading the part about greifing etc I thought why not just make it privilege based, so you could give your trusted players the ability to use such a feature without risking any random player joining and trashing your world.

I also like what Menche mentioned about a sub-api this would probably mean doubling up on a lot of the api functions but it would mean you can restrict users to certain functionality in the game for example some servers might want to give some players this ability but only to create new basic nodes and nothing more.

I'm guessing though this would require a lot of work to be implemented so it probably won't be picked up or done anytime soon, unless there was a lot of demand for it I guess.
 

User avatar
aldobr
Member
 
Posts: 316
Joined: Sun Nov 25, 2012 05:46

by aldobr » Thu Dec 06, 2012 15:04

I believe this could be done by extending the crafting system...

Imagine you are going to make a computer.

In minecraft to make a computer you take a immense area with redstone circuits.

How i would do that in minetest ?

Create the ability to have parallel worlds. Those parallel worlds are represented in the main world by a single node. You can think about the parallel worlds as a microscopic view of some object in the current world, just like there are billions of bacterias in your hand but you cant see...

So on those parallel worlds (anchored in the main world by a nodebox) you can build circuits and mechanisms wich would change main world in a meaningfull way. Parallel world should be small and fixed in size, big enough to hold meaningfull machines...

To represent such worlds you can have craftable objects, for one, an empty computer case, modem, 3d printer etc.

As soon as you craft an empty computer case, you can right click that case and be teleported to a parallel world consisting of the internals of the computer. Initialy this area is fully clear. You should bring the needed parts in your inventory, and build a circuit there, representing a computer.

Then you leave the parallel world, and in the main world you would have a working computer with inputs and output signals that can control anything via copper wires laid in the main world.

For this to happen, we would need conductors (Pipes for water, pulleys for mechanical power, copper wire for eletrical power) transducers (hydraulic to eletric, eletric to hydraulic, mechanical to hydraulic, hydraulic to mechanical etc, eletrical to eletrica, mechanical to mechanical, hydraulic to hydraulic etc), actuators (carts, furnaces etc) and power sources (solar to hydraulic, solar to eletric, solar to mechanical, coal to hydraulic etc).

I believe you got the idea...

You should have input and output "pins" in those parallel worlds, to allow connecting those "circuits" to other circuits or to actuators/sensors.
 


Return to Minetest Features

Who is online

Users browsing this forum: No registered users and 1 guest