SEServerExtender / EssentialsPlugin

Dedicated Essentials Plugin
GNU Lesser General Public License v3.0
18 stars 18 forks source link

Conquest feature missing #25

Closed zrisher closed 9 years ago

zrisher commented 9 years ago

I see that there is some code for the Conquest game mode, but I can't seem to enable it in settings and I don't see info on it in the Readme. Is that feature still a part of essentials?

dodexahedron commented 9 years ago

I certainly don’t support it.

That was something Tyrsis started to work on but never got around to finishing.

It doesn’t really belong in Essentials, anyway. If anything, it should be its own plugin.

From: zrisher [mailto:notifications@github.com] Sent: Thursday, April 23, 2015 7:05 AM To: SEServerExtender/EssentialsPlugin Subject: [EssentialsPlugin] Conquest feature missing (#25)

I see that there is some code for the Conquest game mode, but I can't seem to enable it in settings and I don't see info on it in the Readme. Is that feature still a part of essentials?

— Reply to this email directly or view it on GitHub https://github.com/SEServerExtender/EssentialsPlugin/issues/25 . https://github.com/notifications/beacon/AH3EBdVrpUpEhh3EK9Wk3wGLhsspbIydks5oCMljgaJpZM4EG2y8.gif

zrisher commented 9 years ago

That's unfortunate, because it's the only way I know of to tie ship limits to gameplay ATM.

dodexahedron commented 9 years ago

Plugins for SESE are pretty darn easy to write. If someone would like to pick it up from where Tyrsis left off, that'd be great. But, I do think it should be extracted to its own plugin, since Essentials is really a management plugin above all else, similar to the minecraft NoLagg plugin.

zrisher commented 9 years ago

This will be my first priority when I'm able to devote time to this project. Right now I'm going to need to code it up in a python savefile cleaner. If anyone gets started earlier please let me know I'll subscribe.

dodexahedron commented 9 years ago

The GetOutOfMySandbox plugin is a save file cleaner, if that's what you're going for. Can you describe what behavior you're looking for?

-----Original Message----- From: "zrisher" notifications@github.com Sent: ‎4/‎23/‎2015 2:53 PM To: "SEServerExtender/EssentialsPlugin" EssentialsPlugin@noreply.github.com Cc: "dodexahedron" brandon@dodecatec.com Subject: Re: [EssentialsPlugin] Conquest feature missing (#25)

This will be my first priority when I'm able to devote time to this project. Right now I'm going to need to code it up in a python savefile cleaner. If anyone gets started earlier please let me know I'll subscribe. — Reply to this email directly or view it on GitHub.

zrisher commented 9 years ago

The main motivator here was keeping my server alive while DynamicConceal is still having problems with revealing entities (reported by many of my users as current on Transcend and experienced ourselves last week). So since everything is always running, we can support a certain number of blocks total for the server:

50 turrets 100 refineries 100 assemblers ... etc ...

We divide those up into two pools - one divided evenly among active players, one divided among those that control "conquest points" on the map. Then you can attach projectors, timer blocks, larger ship counts, larger ship sizes etc to the control of these conquest points as well to keep them in responsible hands. Strike a balance between still keeping it easy and fun for people to just hop in, but allow the people that truly want to put time into the server to have big, complex stuff.

One problem is that it's not currently possible to make a defense that will hold up against anyone for more than a few minutes while you're offline, so controlling the points for any length of time is pretty hard. People can just out-strafe your turrets until they run out of ammo, or blast them away from afar. The Autopilot Mod helps with this quite a bit but I'm having trouble getting it stable (might be completely unrelated problems).

I'll probably code up a bit of the enforcement code in my python save cleaner to help enforce faction-wide block limits, but mostly I think waiting for DynamicConceal and then releasing the strategic component in C# would make the most sense.

dodexahedron commented 9 years ago

How about this: You write that up in python, and then I'll translate it into C# and you can use that as a template to get a feel for C#?

dodexahedron commented 9 years ago

Or heck... This is .net... You can get IronPython, write your code in that, and then it'll compile to a .net assembly anyway. That way, you can write SESE plugins in basically-python and still have them work without translation.

zrisher commented 9 years ago

That sounds amazing, had forgotten about IronPython. I'm worried that going that route might make deployment overly complex, or limit my ability to work with your libraries or the game. If not, what an awesome tool. I'm happy to give it a go.

I'll still need to get the Extender/Essentials development stack set up on my computer, which is one of my biggest hurdles having done very little .Net dev. But I'll get over it.

I'll try to get some progress in on this over the next week and report back, but if someone has time to work on this as well I'll share all the product thinking I've done with my server users thus far.

dodexahedron commented 9 years ago

Visual Studio 2013 is free at msdn.microsoft.com. That's the dev environment. As far as setting it up goes, once you get it, clone both of these projects into the same parent folder, then build the SEServerExtender project (the project, not the solution) in x64 Release mode. After that, you will be able to compile Essentials. Essentials isn't needed, though, to develop other plugins. Plugins are independent from each other, so you just build them linked to the SEModAPI libraries (see GetOutOfMySandbox for a very simple example of how to write a very basic plugin).

zrisher commented 9 years ago

If you're going to close this, would you please remove the old conquest code from the repo? It's confusing for new people to see it there without the feature actually being a planned part of this project - that's what led me to open this thread.

dodexahedron commented 9 years ago

I won't remove it until it has a new home, because I don't want it to get lost. And nobody is going to search through history to find it if they didn't know it was there in the first place. Tyrsis spent time and effort on it, so I just don't want it to vanish, that's all. People using anything that isn't documented shouldn't expect support for it. If someone wants to pick it up and run with it, I'll gladly let them.

zrisher commented 9 years ago

I'm not talking about removing it from previous commits, just the current state. There's currently several files in master devoted entirely to this:

EssentialsPlugin/ProcessHandlers/ProcessConquest.cs EssentialsPlugin/GameModes/Conquest.cs EssentialsPlugin/ChatHandlers/Leaderboard/HandleLeaderboardConquest.cs

As well as a few references to it in settings and core.

I wasn't looking through history, just what's currently in the repo. Obviously this isn't a pressing concern, was just looking to save other people some time.

dodexahedron commented 9 years ago

Right. Removing it from the current branch makes it essentially not visible unless someone looks through history, which is what I'd like to avoid for that.

However, since people have to seek it out to use it, anyway, what I could do is just put a loud comment at the top saying it's completely unsupported and doesn't really work in the current state of things, so it's a "use at your own risk" sort of thing.

zrisher commented 9 years ago

Sure sounds good. I'm working with some other interested people on a standalone mod that provides this functionality - it'll be open source and fully configurable. Will let you know as soon as that's up on github.