Jump to content
SubSpace Forum Network

<ASSS: C> Fake Player Platform: Official Public Release


Recommended Posts

Posted (edited)

SERVER SIDE AI BOTS

 

 

After a few weeks of careful consideration, I have decided to pubicly release the source code for my fake player platform for an ASSS server.

 

The reason for this is that I have basically turned into another Dr Brain, in that I have been wanting to create a "turret defense" style zone, league of legends style, for about the past 2 or 3 years. However, this game is decaying, and I can no longer forsee having any free time in at least the next half decade.

I have always intended to release this, as I have wanted to see what other people can do with it, and hopefully they can do some things I would never have thought of.

 

I also want to release this because it has so many features that I can't test them all by myself, and no longer have the time to.

In reality, I should have released this 2 years ago.

 

The previous alpha release was at http://forums.minego...opic.php?t=8858

There's more information in there, so make sure you read that as well.

There's also screenshots.

 

 

This platform does everything you could want a fake player to do, and I have already added limited AI capabilities to it.

I have written this in such a way as that other modules can access any of the fake players' information just like a real player.

I call this a platform because it doesn't actively do anything, it only enables you to do whatever you want, and requires you to use the commands or interfaces to actually get anything accomplished.

However, it is powerful enough to base an entire zone around, and it has the power to completely revolutionize this game.

There are also commands that allow you to control some, but not all, features in game, listed in ?fakehelp.

It tracks damage to players, it tracks damage to tiles, it fires weapons of any kind continuum can handle, it tracks energy/recharge/movement per bot, and it can do almost anything else you can think of.

It even makes waffles.

 

 

Not all modules are required, in fact you really only need one, and they are interchangable in case someone somehow accidentally manages to create something better (no longer likely, as it will probably end up in the bitbucket project anyways).

For more details on any command beyond ?fakehelp, use the built-in ?man command.

 

I have deliberately not included the .dll or .so binaries, as they are now outdated and apparently have been reported to have problems anyways. Simply recompile from source. There are no real outside dependencies that would cause compilation troubles.

 

If you make any changes to this, make sure you include a copy here and state why you made the changes.

Also let us know how you found a use for this.

 

Hopefully this adds to peoples' desire to switch from subgame to ASSS.

Additionally, if you are an aspiring ASSS developer, there is plenty of material to learn from.

http://forums.minego...ewforum.php?f=7

http://wiki.minegobo...x.php/Main_Page

http://wiki.minegobo...Writing_Modules

 

 

 

BITBUCKET CODE REPOSITORY: DOWNLOAD HERE

click "get source" in the top right corner

Edited by Cheese
Posted

keep in mind, ill still be updating this periodically, so if you have any changes, send them to me and ill throw them in if theyre good enough.

 

also, i personally got a zone uptime of over a month running a load test of 20-30 bots following eachother around and killing each other, so its very stable.

if you do actually manage to crash it, make sure you say exactly how you did it, and the events leading up to the crash, and post backtraces, or send them to me.

Posted

download link is broken.

 

Also FYI, mostly for said aspiring asss devs, asss is covered by the GPL. By #including files from asss, your code is also required to be covered by the GPL. You can't distribute binaries without the source, as you have been, without being in violation of the GPL. Technically grel could send you a cease and desist or something. It also makes your module almost worthless. see http://forums.minegoboom.com/viewtopic.php?p=83700#83228

Posted (edited)

download works for me

try clicking it instead of copying it into your url bar

i made the link bigger for you

 

 

also, thats if it were a modification of the source, which no custom module is, as they are a completely seperate entity

the #include is just to use standard interfaces

 

 

lets put it this way:

 

you are designing a custom lamp, which plugs into a GPL electrical outlet

why the fuck does that matter to a lamp company

Edited by Cheese
Posted

Numpf, take a look at the README.developers included in the ASSS distribution since the beginning of time. Grel makes it clear that he has no objection to people using other licenses.

 

Good thing too, or no one could use security.so/security.dll.

Posted

download works for me

Try logging out and clicking it. It's a forum access issue, and you probably have privs as the uploader. I get

Sorry, you don't have permission for that!

 

[#10870]

We could not find the file specified

 

Need Help?

Our help documentation

Contact the community administrator

 

also, thats if it were a modification of the source, which no custom module is, as they are a completely seperate entity

the #include is just to use standard interfaces

Doesn't matter. #include of a GPL'd header causes the resulting binary from a compile to be GPL-covered (if also distributed), period. The way people get around this is to compile a binary that makes no reference to functions in a GPL header in any way, then make a GPL'd wrapper that loads the binary and forwards the function calls. Then you still have to distribute the binary _separately_ from its GPL wrapper.

Numpf, take a look at the README.developers included in the ASSS distribution since the beginning of time. Grel makes it clear that he has no objection to people using other licenses.

Grel didn't or doesn't understand the GPL, though it almost doesn't matter given that he won't bother asserting his rights. It gets messier when you consider that anyone that made big contributions to asss (mgb, catid, akd, brain, others?) might hold the copyright on included code and could assert _their_ rights even if grel doesn't. Anyone writing an asss module should assume they will have to provide source _if they distribute_ their module.

 

All reasons that I don't like and avoid using the GPL

Posted

 

It gets messier when you consider that anyone that made big contributions to asss (mgb, catid, akd, brain, others?) might hold the copyright on included code and could assert _their_ rights even if grel doesn't.

 

myself included

 

The download is absolutely not working.

 

what happens when you go to

SubSpace.Continuum - Multi Player Online Game

Downloads

Server/Zone Development

Server Files

Fake Player Platform source code

manually?

 

wheres polix

his site is broken

 

Posted
Doesn't matter. #include of a GPL'd header causes the resulting binary from a compile to be GPL-covered (if also distributed), period.

 

I think you'll find this is untrue. #including does not have any bearing on the GPL. Linking is what invokes the GPL. So it's actually the people using the module who are in violation of the ASSS license. Fun, eh?

Posted
I think you'll find this is untrue. #including does not have any bearing on the GPL. Linking is what invokes the GPL. So it's actually the people using the module who are in violation of the ASSS license. Fun, eh?

No, I guarantee I am right. If you insist, ask in an expert forum like stackexchange. Describe the situation:

I have written a module for a GPL'd application. I #include headers from that app, and use those included functions for much of my module's functionality. Is my work considered derivative? If I compile my module as a shared library and distribute the binary, is it covered by GPL, requiring that I distribute src?

You will be told yes and yes. The situation is almost perfectly analogous to linux kernel modules. There's no amount of nuance with asss modules merely calling through function pointers in interfaces that avoids the GPL as long as you are using #include with GPL'd headers (and you still link directly to util.c functions). For anyone who ever finds this mattering for something important, you need to talk to a lawyer.

also, im having thoughts about uploading this whole thing to bitbucket or some other group revisioning thing, so it stays organized

Please do. I see a bug I'd post an issue for or fix: if you use ?fai p=name you will get a deadlock sometime later. The code returns in the middle of fuzzyfind without calling pd->Unlock(). I also see what's causing the deadlock that made you comment the locks in fakemove.c:addfake. The traceback would look like fakemove.c:mlfunc(movelock) -> DOCBS TargetReached -> fakeai.c:TargetReached -> fm->SetMoveTarget -> fakemove.c:addfake(movelock)

 

So the same thread is trying to get the movelock further down the call stack. This can be fixed by making the mutex recursive in MM_LOAD, like e.g. core/cmdman.c does. Given the way asss is structured, you should make recursive any mutex that is held while you call something in some other module (including doing callbacks).

 

Despite your test, this code shouldn't be considered stable until it's tested in active zones with many real players creating lots of player events (especially leave) and arenas being created and destroyed.

Posted

The code returns in the middle of fuzzyfind without calling pd->Unlock(). I also see...

 

this is exactly why i wanted to make this public, and i think ill start looking into a bitbucket project

Posted (edited)

also which is better, bitbucket or github, and why?

  • bitbucket made < 5 users free, and github retaliated by making open source accounts free&unlimited
  • asss & hscore are already on bitbucket

Edited by Cheese
Posted
also which is better, bitbucket or github, and why?
  • bitbucket made < 5 users free, and github retaliated by making open source accounts free&unlimited
  • asss & hscore are already on bitbucket

I haven't really used github, but I think the main difference is mercurial support (native on bitbucket, weird on github) and the main difference with mercurial is better windows support. There are other differences that I think go in favor of mercurial, but check here if you like: http://stackoverflow.com/questions/35837/what-is-the-difference-between-mercurial-and-git

 

I am biased, but I'd prefer bb/hg. The 5 user limit only applies to private projects on bb. And you can accept changes by having others fork then make pull requests.

Posted

Mercurial makes more sense when being used with the rest of ASSS. I personally prefer git, but they're pretty equivalent in terms of functionality.

 

No, I guarantee I am right. If you insist, ask in an expert forum like stackexchange. Describe the situation:
I have written a module for a GPL'd application. I #include headers from that app, and use those included functions for much of my module's functionality. Is my work considered derivative? If I compile my module as a shared library and distribute the binary, is it covered by GPL, requiring that I distribute src?

You will be told yes and yes. The situation is almost perfectly analogous to linux kernel modules. There's no amount of nuance with asss modules merely calling through function pointers in interfaces that avoids the GPL as long as you are using #include with GPL'd headers (and you still link directly to util.c functions). For anyone who ever finds this mattering for something important, you need to talk to a lawyer.

 

Actually, you're still incorrect. I've looked into this matter on an unrelated occasion. Do a web search if you don't believe me. If you were correct, then any program being compiled on linux (i.e. including header files) would have to be GPL, which is obviously not the case.

 

That's really a technicality in the case of ASSS, because there's run time linking going on (and that is definitely covered).

Posted

Cool project cheese. I suggest BitBucket, if you ever want to have private backups of repos then that's free. Github/Bitbucket are comparable when it comes to free public repository hosting, but Github has a much higher user base (don't think that's relevant here) and doesn't do mercurial natively (which doesn't matter if you use git).

 

numpf: hi.

Posted
Actually, you're still incorrect. I've looked into this matter on an unrelated occasion. Do a web search if you don't believe me. If you were correct, then any program being compiled on linux (i.e. including header files) would have to be GPL, which is obviously not the case.

 

That's really a technicality in the case of ASSS, because there's run time linking going on (and that is definitely covered).

_This_ is why programs ported to linux need not necessarily be GPL: http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#PortProgramToGL

 

I see no definitive answer from a search either way. I can't find the definitive statement I thought I remembered from the FSF. It's an ongoing argument with no apparent court decision to cite. It is possible you are right. I would still _assume_ my definition for safety, use a GPL wrapper + binary blob if you want to get around this, and consult a lawyer if this really matters to you for something else.

 

 

I overlooked that in the asss license, some files have been placed in the public domain, including util.* This means whether your modules must be GPL boils down to the argument above.

Posted
I saw that, and what's interesting is that he does not mention functions. Strictly speaking I was wrong, a mere header is not enough. Once it declares functions though, those have to be linked to. What I was remembering then is a rule of thumb, mb. It is arguable whether the particular loading arrangement in asss causes binary modules to be covered by the GPL. So, you are safe if the header you include only has those things RMS mentions in it. I would still assume you have to provide source if you write an asss module and distribute the binary.

 

Cheese, are you going to give write access to your repo?

Posted

Being ASSS is Open-Source and the whole purpose behind it was to allow other developers to contribute, be able to update/modify, and to get away from the closed source issues this game is plagued with; I would say it is more the standard that if you are going to release anything for asss, you should release the source to honor the abilities that the open source server gave you.

 

Just my own opinion though, and just like assholes we all have them.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...