PROPOSAL: Game Development Base

ShadMOrdre
Member
Posts: 1118
Joined: Mon Dec 29, 2014 08:07
Location: USA

PROPOSAL: Game Development Base

by ShadMOrdre » Post

Hello fellow minetesters,

Due to ongoing discussions, debates, and complaints regarding the quality and quantity of games available for Minetest, I would like to present the following proposal.

In order to make a usable base upon which games can be developed, and perhaps mods to be created against, I propose a community led effort, hosted on github, to create LGPL2.1 or some other compatible OS licensed collection of APIs and mods to provide game developers, modders, and even players, a method to compose the game of their choice.

I feel that there is enough existing content available here on the forums upon which this base could be made. Some mods would need to be reworked to allow a more modular approach, in the form of APIs and libraries, whie breaking off the actual content. It is my opinion that this is singularly the biggest roadblock to creating quality mods and games. Other mods simply need to be rewritten to take advantage of this altered design.

Many more details can and should be discussed. But I'll leave that to the comments.

The formalities of this proposal are essential. I propose a community created git to host this project, with each contributor using their personal pages to actually develop. The community created git can be shared by a trusted set of authors, and the form that takes can be discussed. All voices should be heard, because ideas come from everywhere, but the technicalities and realities of software development necessitate that not all voices will be able to contribute in meaningful ways. For the devs and actual contributors, this means we have to be careful how we contend with those voices. Negativity is discouraged in all situations. Please be civil, as this will be key to actually accomplishing anything.

As such, I call on the specific individuals. This is not an exclusive list, just a list of long time modders, modders who have contributed to projects outside their own, and modders who've otherwise shown expertise and or a willingness to collaborate. If you are not listed, you are still very welcome.

Please forgive me if I spell names incorrectly.
paramat
sofar
rubenwardy
DS-Minetest
greendimond
burli
sokomine
krock
Tenplus1
VanessaE
v-rob
texmex
voxelproof
linuxdirk
bosapara
runs
octacian
dokimi
zorman2000
stu
bell07
calinou
kilarin
duane
GaelDeSailly
Hume2
AITechEye
MineYoshi
Wuzzy
Pyrollo
solars
StarNinjas
bhree
Thomasthespacefox
theFox
talkedz
joe7575
lisacvuk
TumeniNodes
talklounge
Termos
Polysaken

and wow, this list is long, and way too incomplete.

Please don't hate on me for calling on you specifically. This simply means that IMHO, you have value to this project, based on my experience with your work, or with you, here on the forums. If you would like to comment or contribute, please do. If you do not want to contribute, then don't.


Shad
Last edited by ShadMOrdre on Fri Jul 05, 2019 17:55, edited 1 time in total.

User avatar
PolySaken
Member
Posts: 817
Joined: Thu Nov 09, 2017 05:18
GitHub: PolySaken-I-Am
In-game: PolySaken
Location: Wānaka, Aotearoa
Contact:

Re: PROPOSAL: Game Development Base

by PolySaken » Post

Perhaps a unified power API is a good start, considering how many separate systems exist already.
Some examples are:
-technic eu
-basic_machines power cells
-terumet heat
-ocular_networks OCP (I'm sorry)
Guidebook Lib, for in-game docs | Poly Decor, some cool blocks | Vision Lib, an all-purpose library.

User avatar
Extex
Member
Posts: 244
Joined: Wed Mar 14, 2018 23:14
GitHub: Extex101
In-game: Extex

Re: PROPOSAL: Game Development Base

by Extex » Post

I can mod(I'm not so great) but I'm a good pixel artist and can pump out art really quick. Just ask Ezhh
Creator of jelys_pizzaria and motorbike, and player of persistent kingdoms. RIP

User avatar
v-rob
Developer
Posts: 970
Joined: Thu Mar 24, 2016 03:19
GitHub: v-rob
IRC: v-rob
Location: Right behind you.

Re: PROPOSAL: Game Development Base

by v-rob » Post

Sounds great. When do we start?

Of course, to start this, we need to know what we're going to do. Important thoughts from people should be recorded somewhere so they don't get lost in the thread.

Now then, what we should not do is make a bunch of blocks. IMO, this should be like an API built into a game. Game makers shouldn't have to feel that there is a "default" set of blocks that they should include in their game.

So, these are some APIs I think this should have:
  • Entities, especially mobs: This should not just be for a single thing, like monsters. It must work for NPCs, monsters, animals, non-living objects, and things of those sorts.
  • Mapgen features: This might be things like villages, luscious (the mod), cave stuff, etc.
  • Safe Inventories: This would be an API for making inventories, like chests and bookshelves, without having to define safety functions yourself. This should also cover thing like creative inventories, sfinv, etc.
  • Key events
  • Protection: Covering a wide range of possible protection methods via different functions
  • Automation: Like pipeworks, mesecons, hoppers, etc but less specialized, so no blocks included, but just raw transfer functions.
  • Physics
Definitely not a complete list, but these are some very important ones.

These need to be certain to be loaded first before any other mods in the game. Each set of APIs should also be in its own namespace and have detailed documentation of each function in a doc file, probably formatted the same as lua_api.txt. Code should follow the conventions set in the dev wiki: https://dev.minetest.net/Lua_code_style_guidelines

And that's just some stuff I thought of right now.
Core Developer | My Best Mods: Bridger - Slats - Stained Glass

User avatar
bhree
Member
Posts: 169
Joined: Tue Jun 19, 2018 07:45
GitHub: bhree
IRC: bhree
In-game: bhree
Location: Alone In The Wild Land
Contact:

Re: PROPOSAL: Game Development Base

by bhree » Post

I don’t think I'm qualified to stand with master of mods here and I can't promise that i'll be very active due to time constraint. My server and github show how I'm still trying to understand how things work and share a little of my vision. I try to follow everything here and may give some opinion but I can see my technical capability is insufficient for a breakthrough. Good luck for all of us.

ShadMOrdre
Member
Posts: 1118
Joined: Mon Dec 29, 2014 08:07
Location: USA

Re: PROPOSAL: Game Development Base

by ShadMOrdre » Post

bhree, I would disagree with you. We all have value and can contribute, in whatever ways we can. Time constraints and skillsets notwithstanding, but ideas flow like water when those can implement them seem to be as rare as diamonds. I don't believe that though. We ALL have value.

Polysaken,

Yes, well planned APIs. Power is one. I use mesecons, pipeworks, digilines, nodeio, fluid_lib, factory, tubelib, and stm. Stu made some great windmill models that need some code behind them to make them usable items, and the watermill mod also probably needs some work, as I get errors in other mods when I enable it. But this diverges from the topic.

Extex,

I too am an extex....References certainly welcome, but hey, i encourage anyone with some skills to contribute when and where they can. Even folks who aren't coders or graphics artist can contribute by helping with documentation and with ideas and conversation.

v-rob,

This is dead on correct. With one very important first step. The Game API itself. It must accommodate many styles of gameplay, some where player models, mobs, biomes, or other such things aren't a consideration. Think ISB and Flux. Others have to be considered, so a Game API has to be stripped to nothing more than Game setup and configuration. This would, in turn, define which additional APIs and libraries are loaded, as well as defining game content, which must be defined at key points in the process.

A biome library is nothing more than a stripped down set of functions that define a biome, even if this includes the corresponding ecosystems, as in lib_materials/lib_ecology. But those things are full of content, and less on API functionality. That can change with a recent code offering from Gael, regarding loading data from .csv files. An additional thing I got from the code was a way to use library calls just in time, without loading lua files at runtime. The files will still have to exist at runtime, so no on the fly additions, but this might allow on the fly modifications to certain code.

I would advocate the addition of a well thought out player api, one that allows for 3darmor, clothing, multiskin, skins, awards, skills_framework, quests, player_monoids, LATE, and some other player related attributes. This should hook into the "Safe_Inventory" that you mentioned.

I agree that in-game inventories, (node, player, detatched, entity based, and otherwise) need to be consolidated into a more accessible, modular, and coherent system.

I also acknowledge, due my use of mods that alter it, that built_in might need to be updated. That effort should certainly involve the core devs, and some really good coders.

As a personal side note here, I hope that perhaps we can lure sorcerykid back into the fold. I know her feelings were hurt by the negativity surrounding her Scarlet mod. Skills like that need to be encouraged, and maybe better directed. I thinks we'd already have a formspec based inworld browser if she were just directed.

On the subject of formspecs. I think that any screen that removes me from immersion should be:

1. Carefully thought out. No in game action should involve a formspec. Looking at my inventory is not what I mean here. Using the furnace, or a chest, is what I am referring to here.

2. More in world objects should look at the cottages mod for a little direction on the above idea. Its most recent version includes the water well, used to fill a bucket with water. Also, the From_Scratch mod, the rainbarrel mod, my own lib_tools mod, and a few others. There is nothing wrong with a node spawning an entity or two to give life and animation to an object. The Itemshelf and the gramaphone mods are also great examples here. Stu asked for a formspec-less armor stand, and I've thought about a tanning rack, pottery wheel, spinning wheel, weapon stand, tool rack, and some others. These are very basic ideas, game genre/type specific, and I am getting off topic...

There is still much to determine, I will admit. I'd like to hear more input from others who've I've named.

Shad

User avatar
TumeniNodes
Member
Posts: 2941
Joined: Fri Feb 26, 2016 19:49
GitHub: TumeniNodes
IRC: tumeninodes
In-game: TumeniNodes
Location: in the dark recesses of the mind
Contact:

Re: PROPOSAL: Game Development Base

by TumeniNodes » Post

My ideas lay more along quest/adventure type games, with sensible progression, having to follow tips to find items/objects to make something which benefits you in either obtaining or producing things you need to survive and progress.

I have even thought of reproducing old Atari like game such as Pitfall (someone did pacman (I think), even something similar to tank-pong

I have also had thoughts of games based on books by both Verne and Wells (The Time Machine) brings so many ideas, as does Journey to the Center of the Earth...
A movie I love called Sky Captain and the World of Tomorrow, has toggled even more ideas...
People just need to clear their minds of "MTG" when they want to build games... MTG-like games are just stale at this point.

For quite a while, I have been plucking away working on a strictly creative version for builders, stripping out all of the crafting related code, but leaving PVP capabilities.
Of course due to time and real life matters, it has been extremely slow going but I don't mind that, in fact I enjoy it.
But it will take me a long time to get to something which I am happy with enough to share.
The most difficult aspect of such a project, is picking which latest commits to grab, and then the time to put them in a bit at a time, without doing a full pull, and getting some things you do not want.

The best place to start an entirely "new" game (meaning with all new ideas) is to start from scratch.

I love MT/MTG mostly for building but, actually have not even built anything in quite a long time, most of the reason is my quest for the "perfect" mapgen according to my own opinion (15+ biomes drives me insane). But I have not even been able to mess with mapgen tweaking in a long time.

There are quite a few options for various game types but everyone has always seemed to be stuck on keeping them too similar to MTG.
A Wonderful World

User avatar
voxelproof
Member
Posts: 1087
Joined: Sat Aug 05, 2017 08:13
Location: Europe

Re: PROPOSAL: Game Development Base

by voxelproof » Post

ShadMOrdre wrote: As such, I call on the specific individuals. This is not an exclusive list, just a list of long time modders, modders who have contributed to projects outside their own, and modders who've otherwise shown expertise and or a willingness to collaborate. .
Well, the only mods I've made are those which add a lot of wool for artistic purposes :) Nevertheless thanks for listing me, cause I believe that I have some useful knowledge about some aspects of gaming which might be of some help to the game designers.
If you do not want to contribute, then don't.
As for me I'd like to contribute very much.
The first simple idea is to provide some FAQ for game developers with an example simple game which might be easily modified to learn the basic principles of game creation. As for now there's a page on Minetest Wiki which explains only the structure of the main game folder.

What I mean has maybe more to do with modding, however I'm afraid that this Forum is too mod-centered therefore game creators must rely on their own expertise and wits and imo it's a little discouraging for wannabe game makers.

To the details.

I'd like to see a brief description, how to:
  • add new features to the terrain, e.g. new type of rock
  • alter the default parameters of the map generator/biome distribution and make them default within given game
  • change the usability of particular tools: e.g. trees shouldn't be choppable with bare hand and swords definitely shouldn't be able to dig into rocks
  • and foremost: how to make a game display reward screens providing information about completed level or achieved goal; also to inform player that he/she has lost. Such feedback has crucial importance from psychological point of view and makes even simple games much more rewarding and meaningful when a player knows that his effort was appreciated by the creator via the provided interface.
I know this apply more to the modding discussion, but, again, modding should be treated here more as a part of game development, otherwise we'll have stockpiling of mods which confuse and diffuse the assets with no regard to their usability for larger projects, thus making game creation a mess, especially for beginners.
To miss the joy is to miss all. Robert Louis Stevenson

ShadMOrdre
Member
Posts: 1118
Joined: Mon Dec 29, 2014 08:07
Location: USA

Re: PROPOSAL: Game Development Base

by ShadMOrdre » Post

Perhaps someone with wiki access, who is willing to help transfer the knowledge accumulated in such a project, in a meaningful way. And, also to simply help update the wiki to include recent updates to MT itself, as this seems to be out of date and out of sync with lua_api.txt. I think sofar or paramat have spoken to the larger need for this. This is where someone who doesn't feel comfortable contributing in a coding or graphics capacity can still contribute simply by willing to type information. This also helps to keeping those with the aforementioned skillsets more keenly directed where their talents might be more appropriate.

At this point, a wiki page to help this, and or, other specific projects. Why shouldn't Wuzzy have a wiki page here on the minetest.net site, where he can document MCL2? The same could be true for this and other large projects that exists, like mesecons or advtrains. But, this all takes volunteers, those willing to do the efforts.

And I certainly do not want to detract or distract from efforts towards MT in general. I want this to be a part of MT from the start, would appreciate the support, or at least, accommodation from the core devs, and want this projects accomplishments to contribute towards MT as a whole. No forks, or complaints about engine limitations. The engine is what it is, and IMHO, this project can accomplish its goals as the engine exists right now. Any determinations to the contrary should result in community and group efforts to assist the core devs in improving the engine. Only if and where necessary, as regards to assisting this specific project, but always when accomplishments can be achieved for the greater good.

Shad

User avatar
PolySaken
Member
Posts: 817
Joined: Thu Nov 09, 2017 05:18
GitHub: PolySaken-I-Am
In-game: PolySaken
Location: Wānaka, Aotearoa
Contact:

Re: PROPOSAL: Game Development Base

by PolySaken » Post

v-rob wrote: So, these are some APIs I think this should have:
  • Entities, especially mobs: This should not just be for a single thing, like monsters. It must work for NPCs, monsters, animals, non-living objects, and things of those sorts.
  • Mapgen features: This might be things like villages, luscious (the mod), cave stuff, etc.
  • Safe Inventories: This would be an API for making inventories, like chests and bookshelves, without having to define safety functions yourself. This should also cover thing like creative inventories, sfinv, etc.
  • Key events
  • Protection: Covering a wide range of possible protection methods via different functions
  • Automation: Like pipeworks, mesecons, hoppers, etc but less specialized, so no blocks included, but just raw transfer functions.
  • Physics
  • Player effects / armor / attributes (unified to prevent conflicts)
  • dimension system (vertical?)
Guidebook Lib, for in-game docs | Poly Decor, some cool blocks | Vision Lib, an all-purpose library.

User avatar
Hume2
Member
Posts: 709
Joined: Tue Jun 19, 2018 08:24
GitHub: Hume2
In-game: Hume2
Location: Czech Republic

Re: PROPOSAL: Game Development Base

by Hume2 » Post

Some more ideas for APIs:
  • Something which makes the player attached to his job. So the player has to interrupt the job if he wants to leave. For example, the player is crafting an item which takes some time, let's say 20s. And the player can't just leave and let the item craft itself. If he wants to leave, he must interrupt the crafting process first. Or also when he is attacked, the process could be also interrupted.
  • Some kind of better combat, which doesn't involve only clicking the monster X times.
If you lack the reality, go on a trip or find a job.

User avatar
Pyrollo
Developer
Posts: 385
Joined: Mon Jan 08, 2018 15:14
GitHub: pyrollo
In-game: Naj
Location: Paris

Re: PROPOSAL: Game Development Base

by Pyrollo » Post

Hi, this is very interesting proposal. Hope I could get involved in it.

I developed display_api (which, I hope, will one day be outdated by an engine improvement) and font_api.

Having good reusable API is not only a way to develop mods faster but also have a consistent game (avoiding several different mechanism for the same thing).

I started working on LATE, trying to unify player and mobs effects but I have not enough time now to make it grow as I would like to.

Just know I have a few API ideas that are needed :
- damage API, with damage strength and damage nature (but I've seen something in that direction has already been done).
- eat API : same, amount + nature. Nature should not be poison or heal or food, but more like vegetal, mushroom, chemical... and it should be up to the mob/player implementation to decide what effect it does (allows to play aliens or robots that likes to eat mineral for example).


A good thing would be also to store API mods in a different place than game mods. Somewhere intermediate between xxx_game and builtin.
[ Display Modpack ] - [ Digiterms ] - [ Crater MG ] - [ LATE ]

User avatar
runs
Member
Posts: 3225
Joined: Sat Oct 27, 2018 08:32

Re: PROPOSAL: Game Development Base

by runs » Post

I would like to make a Dialogue Engine API.

User avatar
Pyrollo
Developer
Posts: 385
Joined: Mon Jan 08, 2018 15:14
GitHub: pyrollo
In-game: Naj
Location: Paris

Re: PROPOSAL: Game Development Base

by Pyrollo » Post

runs wrote:I would like to make a Dialogue Engine API.
What it would be about ?
[ Display Modpack ] - [ Digiterms ] - [ Crater MG ] - [ LATE ]

User avatar
PolySaken
Member
Posts: 817
Joined: Thu Nov 09, 2017 05:18
GitHub: PolySaken-I-Am
In-game: PolySaken
Location: Wānaka, Aotearoa
Contact:

Re: PROPOSAL: Game Development Base

by PolySaken » Post

Pyrollo wrote:
runs wrote:I would like to make a Dialogue Engine API.
What it would be about ?
NPC encounters?
Quests?
Arch-enemy backstory rants?
Guidebook Lib, for in-game docs | Poly Decor, some cool blocks | Vision Lib, an all-purpose library.

ShadMOrdre
Member
Posts: 1118
Joined: Mon Dec 29, 2014 08:07
Location: USA

Re: PROPOSAL: Game Development Base

by ShadMOrdre » Post

runs,

Dialog system. One word, and not really alot of work to make it work.

AIML

Pyrollo,

I love the display_api, so it's great to have someone who probably has better coding skills than I who's willing to chip in.

As for the API discussion, the first and foremost API, is the Game API. In my opinion, modders should not have to worry about dependencies, when APIs should be available from the start, and through a centrally accessible object, in this case, the Game object.
This would involve a way for, not mods, but code modules, lua files that are called or loaded at runtime, that provide the API functionality, but that are centrally registered to the Game object.

An important note to remember about APIs is simply that only APIs being used by any game should be loaded, while still trying to maintain a library of APIs from which modders and game devs can choose to apply to their game or mod creation. Not all games are RPG, adventure, or even remotely 3D with a player avatar. An example of this is Flux. AITechEye, IIRC, is working on a 2D sidescrolling version of MT, built within 3D Minetest.

Shad

User avatar
Extex
Member
Posts: 244
Joined: Wed Mar 14, 2018 23:14
GitHub: Extex101
In-game: Extex

Re: PROPOSAL: Game Development Base

by Extex » Post

K so who'll make the team on github?
Creator of jelys_pizzaria and motorbike, and player of persistent kingdoms. RIP

User avatar
TumeniNodes
Member
Posts: 2941
Joined: Fri Feb 26, 2016 19:49
GitHub: TumeniNodes
IRC: tumeninodes
In-game: TumeniNodes
Location: in the dark recesses of the mind
Contact:

Re: PROPOSAL: Game Development Base

by TumeniNodes » Post

My proposal is this.
If enough interested and motivated people are able to come together to try plugging some of the holes in the engine... or to create wonderful APIs... I suggest to focus on one thing at a time... work collaboratively, and once there is viable work completed, bring each individual aspect up as an issue to discuss with core, and game devs, to try to get it merged upstream.

Anything other than this, may fizzle out as so many other split off projects have done in the past.
And trying to work on too many different areas will only frustrate quicker.
The most difficult thing to do when starting any project... is "what do we actually want to do/accomplish?"
Once that initial hurdle is overcome... things get easier to focus on
A Wonderful World

ShadMOrdre
Member
Posts: 1118
Joined: Mon Dec 29, 2014 08:07
Location: USA

Re: PROPOSAL: Game Development Base

by ShadMOrdre » Post

Tumeni,

I'd like to point out two very specific points in regards to forks, side projects, and the other "failed" efforts.

This project is in no way a fork. It is a community led effort to help build a better game base, not necessarily even a game, but a base upon which games can be more easily made.

In fact, while engine code may arise from here, it is not the goal, IMHO. The goal should be to make a better foundation from which anyone from game devs and modders to users can tailor a game, based on options, and the Game itself controls how and what gets loaded to provided the experience the user has requested.

This a more a mod / game centered project. Something to exist for MT. The core devs, IMHO, should be focused on engine improvement issues. I would like to see their efforts steered in that direction, and so decide to ask the rest of the community to come together to make the other part of this.

We can all agree that MTG is not the best experience to offer new users. But, it is the only game that can be shared without potential license conflicts, while also maintaining the MC play and feel that most newcomers to this project are looking for and expect. MCL2 cannot be "officially" distributed, IMHO, due to potential license issues. The same is true for LOTT, LegendOfMT, and some others. There is and extreme dearth of "distributable" games.

Solving the above means that making those quality games needs to be easier. Searching the forums, trying to determine if any given mod can provide my game with quality content or functionality, really needs to be a thing of the past. In the Opensim project, also an OS version of a proprietary product, in this case SL, the same issues arose. Game devs, scripters, content makers, at some point, if they weren't trying to make a buck, then all you got was the free stuff people shared, and it usually wasn't the quality stuff. There was no content without scouring websites, or paying for it at some in world store. This lead to a lack of virtual creativity in the community as a whole, because those that could did not always have the resources as an individual to create beyond a certain bit.

Even in our own comments here on the forum, we speak to our projects, and how much effort is involved, and how little time we have, and ..,.....

I can do this part. You can do that part. They can do other parts. And we as a whole can do...

That is my mentality, and I hope this is shared. The engine devs have requested better games. That requires better content, all the way around. Better games can only be made if quality content and code are more efficiently organized, making development as a whole just simpler. Textures, models, code, documentation, and always most importantly, ideas and different ways of thinking.

As for who makes the team git, I can only say this. No single individual, IMHO, should have sole "ownership" due to issues previously addressed here on the forum regarding the loss of community members in real life. This needs to be thought out, addressed, and a binding system regarding responsibilities, obligations, and rights should be hashed out. MT is licensed LGPL2.1. IMHO, this project should also be, because a central goal is to make something that can be distributed with the official MT.

Shad

User avatar
bhree
Member
Posts: 169
Joined: Tue Jun 19, 2018 07:45
GitHub: bhree
IRC: bhree
In-game: bhree
Location: Alone In The Wild Land
Contact:

Re: PROPOSAL: Game Development Base

by bhree » Post

Has anyone come with story? I think MT has everything except good story. This will define what technical support will be needed. Priority is using already available mods and making new one when the story requires it. We have seen many games developed using single game engine for us only to enjoy the multiple story. There are insane programmers and artists then there should be insane storytellers.

PS. engine capability for player to upload and display image in real time (without server reboot) may be a very good addition.

User avatar
texmex
Member
Posts: 1753
Joined: Mon Jul 11, 2016 21:08
GitHub: tacotexmex
In-game: tacotexmex

Re: PROPOSAL: Game Development Base

by texmex » Post

Thank you for taking this initiative, Shad. I think the strategy seems solid. As you say, _how_ the project and the collaboration is structured is key, so let’s hash that out.. I’m, of course, on board with this.

User avatar
texmex
Member
Posts: 1753
Joined: Mon Jul 11, 2016 21:08
GitHub: tacotexmex
In-game: tacotexmex

Re: PROPOSAL: Game Development Base

by texmex » Post

bhree wrote:Has anyone come with story?
make a usable base upon which games can be developed
Wrong thread for storytelling. Or rather, if you have a story you want to tell through a game, this project should provide the means for you to do so in your own game.

ShadMOrdre
Member
Posts: 1118
Joined: Mon Dec 29, 2014 08:07
Location: USA

Re: PROPOSAL: Game Development Base

by ShadMOrdre » Post

bhree,

Stories are essential. On this point we agree totally. Elder Scrolls Online failed on this point, whereas previous installments were heavily story centric, ESO was essentially an openworld PvP arena. However, this project is not necessarily geared towards telling any specific story or creating any specific game. It is intended to make those activities easier for game devs, modders, and players. There is room, however, to make telling stories within games easier to accomplish.

You mention storytellers, but in my experience, good writers spend their time writing, not so much playing MT :) I think we could attract good storytellers / writers, we just have to give them incentive to come and play.

texmex,

Glad to have you onboard. The how of things is, IMHO, key to ensuring any progress. I would like to propose a "leaderless" organization, as I don't feel any single individual should control anything, even if single individuals are leaders within the group.

I feel that a small group of trusted individuals, who agree that ALL code is community owned and licensed, should be in charge of the git. The git should probably be under its own user ID, with those of us contributing doing so from our personal gits. The Project git user ID should be shared amongst the core group, and it is also this core group that will be responsible for approving pull reqs and issuing releases.

I will admit, my own competency with git is probably not good enough to set up a project in the correct ways. I tend to upload files through the browser, as opposed to using a git client, and I do need to change this to make my own projects more accessible.

There is still much to hash out. I hope that I am providing a decent framework for collaboration, and am always open to suggestions.

On the subject of where to begin. I submit the following. This is an idea, a prototype, not necessarily set in stone.

The Game Object:
init.lua

Code: Select all

game = {}
game.version = "0.0.1"
game.path_mod = minetest.get_modpath(minetest.get_current_modname())
game.path_world

-- Intllib
local S
local NS
if minetest.get_modpath("intllib") then
	S = intllib.Getter()
else
	S, NS = dofile(game.path.."/intllib.lua")
end
game.intllib = S

minetest.log(S("[MOD] game:  Loading..."))

game.library = {} --Provides access to libraries functions called JIT.
game.api = {}  --provides hooks for accessing the installed APIs
game.world = {}  --Provides general world data during runtime
game.players = {}  --controls all aspects of player.  Sets the definition of and controls attributes of(avatar and game stats)
game.rules = {}  Provides a library of functions for creating the "rules" of a game based on the type of game chosen.

dofile(game.path_mod .. "/lib_game_library.lua")

--API functionality.  This is concept, not official.  May not even possilble.
game.register_library
game.register_api = function(name, def)
game.register_player = function(player, def)
game.register_ruleset = function(ruleset, def)

game.callbacks = function(name, callbacks)

minetest.log(S("[MOD] game:  Successfully loaded."))

lib_game_library.lua

Code: Select all


game.library.read_csv = dofile(game.path_mod .. "/csv.lua")

function table.contains_substring(t, s)
	if type(s) ~= "string" then
		return nil
	end

  for key, value in pairs(t) do
    if type(value) == 'string' and s:find(value) then
			if key then
				return key
			else
				return true
			end
    end
  end
  return false
end

game.library.get_node_drops = function (fullRockNode, cobbleRockNode)
	return {
		max_items = 1,
		items = {
			{
				-- drop the cobble variant with 1/3 chance
				items = {cobbleRockNode},
				rarity = 3,
			},
			{
				-- drop the full node with 2/3 chance
				items = {fullRockNode},
			}
		}
	}
end

--Dig upwards
game.library.dig_up = function(pos, node, digger)
	if digger == nil then return end
	local np = {x = pos.x, y = pos.y + 1, z = pos.z}
	local nn = minetest.get_node(np)
	if nn.name == node.name then
		minetest.node_dig(np, nn, digger)
	end
end

-- Optimized helper to put all items in an inventory into a drops list
game.library.get_inventory_drops = function(pos, inventory, drops)
	local inv = minetest.get_meta(pos):get_inventory()
	local n = #drops
	for i = 1, inv:get_size(inventory) do
		local stack = inv:get_stack(inventory, i)
		if stack:get_count() > 0 then
			drops[n+1] = stack:to_table()
			n = n + 1
		end
	end
end

-- NOTICE: This method is not an official part of the API yet.
-- This method may change in future.
game.library.can_interact_with_node = function(player, pos)
	if player then
		if minetest.check_player_privs(player, "protection_bypass") then
			return true
		end
	else
		return false
	end

	local meta = minetest.get_meta(pos)
	local owner = meta:get_string("owner")

	if not owner or owner == "" or owner == player:get_player_name() then
		return true
	end

	-- Is player wielding the right key?
	local item = player:get_wielded_item()
	if item:get_name() == "default:key" then
		local key_meta = item:get_meta()

		if key_meta:get_string("secret") == "" then
			local key_oldmeta = item:get_metadata()
			if key_oldmeta == "" or not minetest.parse_json(key_oldmeta) then
				return false
			end

			key_meta:set_string("secret", minetest.parse_json(key_oldmeta).secret)
			item:set_metadata("")
		end

		return meta:get_string("key_lock_secret") == key_meta:get_string("secret")
	end

	return false
end
And then a small example of how one could use the library read_csv code, JIT instead of loading code at RT.

Code: Select all

for i, pairs in ipairs(game.library.read_csv("|", game.path_mod .. "/nodes.csv")) do
Shad

User avatar
v-rob
Developer
Posts: 970
Joined: Thu Mar 24, 2016 03:19
GitHub: v-rob
IRC: v-rob
Location: Right behind you.

Re: PROPOSAL: Game Development Base

by v-rob » Post

Well, this seems to be doing well. I think what is important right now is to decide on a game API on which other APIs can be built upon. Then, someone must implement this API and a repository must be created. Then, it's a matter of people making APIs, working on whatever they are best at, and then creating a pull request.

We also need to choose some leaders who can head this project because a project of this size without leaders would never get anywhere.
Core Developer | My Best Mods: Bridger - Slats - Stained Glass

User avatar
runs
Member
Posts: 3225
Joined: Sat Oct 27, 2018 08:32

Re: PROPOSAL: Game Development Base

by runs » Post

I would like a farming, flowers, arrows, mount... etc ... etc ... APIs.

And that MTG would adopt them.

Post Reply

Who is online

Users browsing this forum: Ahrefs [Bot] and 7 guests