Proposal: Encourage REAL creativity

Evil Genius Think Tank is good and all, but it’s just talk with no real results beyond ideas. We need more people to create something one can actually play. There’s a problem though: creativity is discouraged by the way the game works. I’ve tried telling this to people in Xonotic and Unvanquished forums, but the responses that I’ve got were “go to hell” and respectively. This forum is exceptionally open-minded though, so posting this truth here is worth a try.

The game is server-centric.

The number one problem is that to get your creative work actually played, you have to either beg a server owner to host them or host them yourself (which currently requires a lot of know-how and investment). Instead the game should be player-centric: anyone should be able to start a game with the map, the modification and the settings they want, and have anyone be able to join in, using just in-game GUI.

I don’t see an obvious way to implement it though. Tremulous could implement a peer-to-peer model or it could be possible to request idle servers to temporarily download and host your maps and mods.

GrangerHub could even become like GitHub for community efforts.

Mods are effectively monolithic.

The other problem is that creating even one alien or weapon is a lot of work and hosting a whole server just for one alien or weapon is an overkill. The modding support should be modular and allow combining many self-contained changes made by multiple people in a single game.

Tooling and tutorials are lacking.

Mappers and modders shouldn’t need to fight their tools or scrounge the Internet for tutorials before they are able to actually work on their maps and mods. Tremulous should ship all the necessary tools (pre-configured NetRadiant, Notepad++ in case of Windows, QVM compiler, some GUI frontend to the QVM compiler) and tutorials (C tutorial, how to make Tremulous-compatible models in Blender, how to package your work) together with the game itself.

The game could also benefit from a GUI package builder tool, which would automatically compile a QVM from C sources, compile models from .blend files, convert textures from .xcf and .ora to whatever format Tremulous supports, and generate the .pk3 file in a single click.

5 Likes

Hello, @lamefun!
To be honest, all of your proposals are great, I read 'em all.
I believe, that if that is possible, there should be a more centralized forum sub-section, called “community efforts”.
What if people there set their goal, desagnate the roles to each other and complete their thematic project piece by piece, each thread tracking progress.

3 Likes

How I understand you are talking about “server browsing” and “matchmaking” system.
There is no real reason to have matchmaking system inside any idTech3/idTech4 project, because it is a bad idea. (you can see Doom3 BFG as example).

If you allow me I can explain to you.

Matchmaking system is in my humble opinion bad way of handling this part of multiplayer. You just start game, click “play” and it will connect you with players who you don’t want to play, ping is also under question, you can play only with selected maps what developer approve and that’s all.

If “and only if” matchmaking system is online and operating, you will lose all meaning of having clans and map cycle for server owners (objective cycle, map rotation …etc.), custom assets files … etc. etc…
Whole concept of community build maps/assets are gone.

While with dedicated servers servers you can have custom map rotations, servers can have custom rules, custom settings, custom assets, it is quick to connect …

Of course you can have some hybrid-system of having both of them (server browser and matchmaking) but again why?

~ Ignored by me :slight_smile:

~ Double ignore :smiley:

hi @TheDushan :slight_smile: . I don’t think @lamefun was referring to a match making system. The general idea in the original post is to make modding easier for individual players to learn, to implement, to test, and to distribute, ideally supplying everything the player needs to do all of that from the “Tremulous installation package”.

@lamefun , (although specifying the mod directory might be kinda broken currently in the 1.3 alpha release) , you can create a server in the client from the ui (click on the create server button in the server browser), actually if you use the /map or /devmap command, you are technically starting a server in the client with that as well. Any other client on your same local area network would see your started server in the server browser under the lan category (I do this a lot when testing code locally, and needing multiple clients for various basic tests). You can have your server available internet wide if you make some adjustments to your firewall (I haven’t done this personally, so maybe someone else who has can chyme in :wink: ), then your server would be successfully broadcasting to the master server, and all other trem clients would see your server listed in their server browser. (side note about privacy, everyone who sees your server in the server browser will be able to see your full ip address).

In other words, with some fixing and fine tuning, support for hosting your own server from your client on your computer (at least on a temporary basis), is already there (still perhaps it can be done a better way).

Regarding modding the game logic, I still feel that the way to go is lua for all game logic modding. Putting aside the fact that there are a lot of Lua programmers out there, if you don’t already know Lua, it is pretty straight forward to learn (for example: Learn Lua in Y Minutes ). Additionally, Lua is a powerful language, it is a scripting language so you wouldn’t have to worry about building anything, you don’t have to worry about providing source code separately (since the scripts are the source code), it is portable on any platform, and can be sandboxed.

Regarding mapping, it would be cool if you could make maps within the client without needing an external tool, idtech4 does that. Another possibility to consider is making a map entirely within blender, and some work has been done to do that (although you would still have to know how to use blender) here is the thread: Blender Map Exporter (but still it would be cooler if anything you would ever have to do for mapping could be done entirely in the client).

Regarding tutorial/guides/knowledgebase, we do have a wik ( http://grangerhub.org/wiki/doku.php?id=start ). We are using the dokuwiki software which uses a single file for the entire wiki. What I would like to see is the ability to read this wiki from inside the client, then we could distribute a copy of the wiki with the client for offline reading, and sync it when online.

I would like to see a map and mod repo fully browsable by the client, with the option to download. Although that is an interesting idea to perhaps make use of git inside trem for obtaining, distributing, and collaborating on mods/maps.

Another thing that would be essential to collaboration (with many other benefits) is a proper global persistent chat in the game, where you can communicate from the main menu or from any server, with any player on any server, or even just in the main menu, and by persistent I mean that you could see chat from when you were offline.

If we wanted to take it to an even further level, what if Atom was integrated into the client, so that you could code from inside the client?

3 Likes

Yep, like an evil genius would, like a master mind.

Would there be options to simply TAB it to be server specific?
E.X: <CLICK_HERE> to Show only X amount of server chats, or <TYPE_NAME_HERE> to show NAME’s only chat?

You have to tweak your router’s firewall, and the process is different for each router so GrangerHub cannot provide any kind of a step-by-step guide. Also, ping for other players might not be the best depending on the connection quality and the location of the player.

I know that people who have to ability to do modding are smart enough to figure this out, but the fewer entry barriers we have, the better. Sparky, let me go on a long off-topic rant, please don’t ban me.

I’m going to talk about [color=#ff0000]Richard Stallman[/color] and [color=#ff0000]FSF[/color] and how their propaganda focuses on [color=#ff0000]WRONG[/color] things. All they tell everybody is this: “[color=#00ff22]PRO[/color][color=#ffffff]prietary[/color] software has this and we need it too, so please make it” (doesn’t work out all that well :stuck_out_tongue:), “[color=#00ff22]PRO[/color][color=#ffffff]prietary[/color] software is injustice, do not use it” (no one cares :man_shrugging::woman_shrugging::man_shrugging::man_shrugging::man_shrugging::woman_shrugging::woman_shrugging::man_shrugging::man_shrugging:), “:shield:[color=#ff2200]D[/color][color=#00ffff]R[/color][color=#55ff22]M[/color]:shield: is bad” (play [color=#ff9900]DOOM 3[/color] or any other [color=#00ff22]PRO[/color][color=#ffffff]prietary[/color] AAA game and you’ll be instantly convinced otherwise :woman_singer:, unless you’re Stallman himself). To most [color=#00ff22]PEOPLE[/color] who value their time “free” software just means worse software, why use “free” software when you can just use superior [color=#00ff22]PRO[/color][color=#ffffff]prietary[/color] (which you can often even get cheaply or for free :tada:).

Clearly their strategy isn’t working well :control_knobs:, it hasn’t worked for years and years :mantelpiece_clock:, so I have to conclude that the [color=#ff0000]FSF[/color] people must have become :crazy_face: [color=#ffff00]insane[/color] :crazy_face:, which is a shame really, since they are in a unique position to spread propaganda which [color=#00ff22]people listen to[/color].

[color=#ffff00]Insanity: doing the same thing over and over again and expecting different results[/color].

Now, here’s a [color=#00ffff]good[/color], [color=#00ff22]working[/color] strategy, and guess who it was found by :thinking:? Well, it was found by [color=#00ff22]Jimmy Wales[/color], the founder of [color=#00ff22]Wikipedia[/color] :astonished:! It’s very simple really :grin:. [color=#00ffff]You remove as many entry barriers as you can and contributors come as if by magic.[/color] That’s it :doughnut:. This is exactly how Wikipedia has all but ground traditional encyclopaedias to dust :amphora:!

Look at the [color=#ff0000]FSF[/color] high priority project list, there’s nothing of this sort there, so clearly they don’t see this as the most helpful and important thing can ever be done to ensure the success of [color=#00ffff]Free Software[/color] :sob:.

Now, a lot of programs which are important to the success of [color=#00ffff]Free Software[/color] on home computers :computer: are written in C++ (most of critical desktop software in fact :four_leaf_clover:). Now, here’s the typical build process of such programs :weary::

$ ./configure
missing dependency xyz
$ sudo apt install libxyz-devel
no such package
$ sudo apt install xyz-devel
no such package
$ sudo apt search xyz
libxyz25
libxyz25-devel
$ sudo apt install libxyz25-devel
[=====] 100%

And only after you repeat this a dozen times you can do :triumph::

$ make -j4
$ sudo make install # FINALLY

If some of the dependencies aren’t installed :classical_building:, you’re in for even more [color=#ff0000]“fun”[/color] :face_vomiting: with prefixes and PKG_CONFIG_PATH environment variables :bar_chart:, see the GIMP build guide for what this involves :face_with_symbols_over_mouth:.

More modern languages :alembic: (like Node.js and Rust) have package systems which can download dependencies automatically :wink:, but they’re language-specific :woman_mechanic:, each with its own idiosyncrasies and quirks :man_juggling:, so you have to learn them separately (and learning sucks :nauseated_face:). Learning even the programming language the program is written is no mean feat :weight_lifting_man:, adding a custom build system on top of it is just way too much to ask a potential contributor to do :broken_heart:

And don’t get me started about [color=#ff0000]git[/color] :rage: the data loss :anguished: system with usability of a modern microwave :keyboard:… And yes I’m aware that data is often lost by using --force, but if [color=#ff0000]git[/color] guided its users into doing things the way they are supposed to be done like systems with proper usability do :man_teacher:, people wouldn’t develop the habit of adding the force flag :smoking: just to get [color=#ff0000]git[/color] to do what they want to do…

This really shows sometimes :eyeglasses:: there are quite a few things like double or missing borders which can be easily fixed with a bit of CSS :newspaper:, which go unfixed because no one bothers to :upside_down_face:. The process of fixing such a bug should not take more extra clicks :computer_mouse:, in addition to of course fixing the bug itself :bug:. Instead, the downloads are huge and do not reuse already installed data :-1:, the preparation process is complex :whale:, and the compilation times are atrocious :sleeping:.

4 Likes

That is an excellent strategy you bring up, and it should a fundamental priority at GrangerHub.

Regarding the issues of dependency hell and etc for building, with the aspect of modding/developing the game logic only (modding/developing the client, the tremded, and any other binary in the Tremulous system is another story), if all game logic modding could be done with Lua, no building would be required at all, just drop your Lua scripts into the mod directory you want to use, and start a server with your client or tremded (this would be good for local tests at least).

I do like your idea of making available shared experimental Tremulous server hosting service for modders to schedule public tests of their (game logic) work (where they don’t have to go through the hassle of setting up and maintaining such servers). Do you know of another/other game(s0 that does something similar that we can learn from for implementing such a service?

Not a rhetorical question: Do you know of a/some better way(s) that code can be publicly collaborated on and developed?

2 Likes

I got the idea from Wesnoth, but it’s a turn-based game, so the traffic and CPU requirements are low (their server literally only relays basic commands, like which unit goes where, from one client to another).

Please learn from the tragedy of Firefox. They made a mistake of tying the extension API too closely to the browser internals, so now they have drop the compatibility with ALL extensions created so far so they can move the actual browser engine forward, making it necessary for the extensions developers to rewrite everything from scratch. Please don’t implement the API hastily and take all the time needed to ensure that it’s robust with regard to future engine changes.

I’ve heard some good things about gitless, which is an alternate program for working with Git repositories with a focus on usability, maybe the wiki could recommend that instead of plain Git.

2 Likes

That’d be an overkill (especially since Alt+Tab is now supported even on Linux), but it would be very nice to have an ability to easily reload a mod without restarting the whole client or unloading textures.

2 Likes

Off-topic: this is why I worship GNOME, look at this shiny new GNOME Builder feature in development: