|
Okay I'm lazy so I'll copy what I posted in the Active Games thread:
On November 17 2012 15:47 gonzaw wrote:I don't know if this is the correct place to put this but.... Is anybody interested in a completely automated mafia system compatible with each forum it's used on? For instance, a system where threads are created automatically, day/night posts are done automatically, night actions are resolved automatically, role PMs are sent automatically, etc (but fully configurable by an admin or even the host of the game)? Because in OMGUS me and some guys (well....1 other guy >_> ) want to try and develop such system, and to do so we'd need some help. I don't guarantee that we'll finish it soon or even at all since it's a lot of stuff and we are just 2 dudes and we don't really have much experience/knowledge (although we do know quite a bit of stuff); but hey with help we could make it a reality I guess, and I'm quite excited about it. If it's okay for me to put a link I'll edit this post and put it later. EDIT: It could have any feature you want to be honest (we are still in the process of figuring out what it can have  ) For instance the Game Queuing can be fully automated so Foolishness and Co don't have to waste so much time doing it. In you guys's case it could automate this whole "balance crew" thing GMarshall and others have going where they regulate setups as well (although this would be, for this moment, only useful to TL Mafia and maybe not other forums). If you can think of it and we have the time+work force we can do it. If you are an expert in software engineering (I'm still in my 3rd year so I have some ways to go  ) then your help, at least as a consultant would be appreciated EDIT: Also, yeah I didn't know if this was the correct place to put this so feel free to change it to a relevant topic
Here's the link to that post, there are some discussion after it as well: http://www.teamliquid.net/forum/viewmessage.php?topic_id=174347¤tpage=127#2524
Also I'll post my newest post from there in here next:
OMGUS discussion: http://www.omgus.net/forum/viewforum.php?f=51
|
For those interested, I'm planning on creating the system in 4 different layers "independent" of each other. Each layer could theoretically change while other layers remain the same. Of course the "upper" layers would remain the same, the lowers ones not so much. Each layer uses services from the below layer and provides services for the layer above.
Here's the top-down approach:
Layer 4: This is the system. It has games, players, roles, setups, votes, night actions, etc. It doesn't know anything about how the mafia game is played, it just represents an abstract mafia game. If we wanted we could even use it to play IRC mafia maybe, since Layer 4 wouldn't care how the mafia game is played as long as it has all the features the system uses. It only works via abstraction, with abstract "games" and "roles" and "setups". Services used: It uses the "presentation" services from Layer 3. For instance sending notifications, present the creation of a new cycle, etc. It also receives new data from said layer, like night actions, input from the host, etc.
Layer 3: This component defines how the mafia game is played. It defines if it's played via forum, or defines if it's played via chat, or if it's played using external tools (maybe QTs for instance). It defines how to use the forum's "general" features to run the game (for instance if the game is played in 1 or more threads, etc) Services provided: It gives Layer 4 a way to present all its info and a way to get new info. Services used: It uses the "general" functionalities of a forum, like creating threads, creating posts, checking for signups in a thread, receiving a new vote from the voting thread, sending and receiving PMs, etc
Layer 2: This component defines the direct access to the forum and its features. It doesn't dwell on "general" features anymore (creating thread, etc) but with more specific features that can be upgraded if the forum would wish. For instance, this layer would use a bot to count votes and signups, as well as create threads and posts. If the forum had the feature, it could maybe just instantly give Layer 3 a new vote as soon as the "##Vote: X" post is made in the voting thread, etc. Services provided: It gives Layer 3 a "general" functionality of the forum (or whatever setting the mafia game is being played on). Services used: It has direct access to the forum and uses whatever the forum allows him to
Layer 1: This is the forum itself as it's implemented in the servers of the site. I take it as "part of the system" since you could technically operate with it to change the system (like adding new features, etc). Services provided: Provides access to the features of the forum it allows him to use
If you are confused and want more info read here: http://www.omgus.net/forum/viewtopic.php?f=51&t=412&p=14502#p14502 (you don't even need to sign up, read it and you can discuss it here).
Like I stated before, I want to make this system as portable as possible. Hell that could even include IRC chat mafia games for instance. Technically it's possible. You'd have 1 system to handle forum mafia games, and a 2nd system to handle IRC mafia games; and using this layer-based design you wouldn't need to change much to do so. Again I also wanted to take into account that forums can do whatever the fuck they want to run mafia games (I think I mentioned the differences between OMGUS and TL Mafia quite a few times ).
I want to know what you guys think of this design system. If you don't think it's a good idea, I'd like to know why, how you think it could improve/change, and what alternatives you guys propose for the "portability" issue of the system (also I hope this "layer" approach is easy to understand lol. I tried not to use advanced lingo and concepts and the like)
PS: Am I allowed to create a new thread here? To ask opinions, give updates, and basically just post my walls of text somewhere where they won't fuck up with the active games stuff >_>
|
Technically, if the forum is a bitch and doesn't even let you use bots (for instance), Layer 2 can be implemented to use other means to get the info.
I mean, all the work of creating threads and the like could technically still be done manually if the forum doesn't let you. The thing is that the Layer 3 would call "createPost()", but Layer 2, instead of creating the thread himself, could maybe send an email to the host with the exact post he has to make. In which case the host would just post it himself.
Layer 2 could use a web app (like prphlz described) for stuff as well. In TL's case that may be creating the games/setups/roles. The host would use a web app or an external tool to give the info to the system, which would be received via Layer 2, and then given back to Layer 3 as nothing happened.
Basically, you can customize the way you play mafia any way you want and you'd only need to make slight changes to the system (i.e you'd only change the lowest layers, while the upper layers, the important ones, remain unchanged).
EDIT: What I mean is that maybe, for an "easier" adaptation (sp?), the system can be accommodated so that mafia is played exactly like it is now (a host makes the thread and posts, sends/receives PMs, etc); only that the logic behind everything would be automated in the system (and all the info would be kept there).
The only thing is that the host would need a way to give that info to the system. We can figure that out later though
|
I don't know what you mean about "if the forum doesnt' let you [create threads/posts]". I'm pretty sure ZBot did this and all of my game related posts in Resistance! Mafia was done with a bot made to handle the real-time parts of that game. I don't see how it's a problem that the post has to be made by a user, from a usability standpoint there could be an option to use your own user if you provided username/password or just a standard user (TLMafiaBot? or whatever) if you don't wish to do this, or as you suggest to have the post PMd/emailed. A lot of different options is probably the best idea since they're not really that different and some people want one thing while other people want another.
I also asked R1CH very briefly on IRC about using bots on the forum and he pretty much said that as long as you're not being down right malicious it's no big deal.
|
Automatic votecount: yes please (although it does mean that people who forget to bold their vote, use abbreviated names, etc. won't have their vote counted). The rest: not so much. Hosts should be involved in the game. If it is automated, then hosts lose an incentive to keep up to date with the game, which means that if specific situations crop up in the game (rule breaking, bad sportsmanship or what-have-you) that require a host's intervention, they may not even read it until it is too late. Sure, the host *should* be reading the thread, but taking the pressure off by removing quite a few of the reasons to read the thread, you are making it easier for this to not happen.
|
I don't host a lot but I think that Acrofales is really on to something here. A fully automatic system is probably undesirable and also extremely ambitious. I think that some tools for automatizing tedious host business without removing the host entirely would be cool, I made a prototype of how I see something like that could work here. I don't know if you're really hooked on this "fully automatic everything" thing over at OMGUS, I just think that starting small and then gradually making it more complicated is a better and probably more useful idea. Maybe after all the basics have been implemented, you could do a bot that hosts a popular and very stable setup like C9++ and then go on from there. Setting out to make a bot that can do anything that GreYMisT comes up with is kind of... I mean GreYMisT is a pretty imaginative guy. I also don't like the idea that the end users and the developers are the same people, I don't think that hosts want to have to contact a developer to get their game hosted but maybe that's just me or maybe I'm misunderstanding something here.
|
United Kingdom36156 Posts
On November 20 2012 21:16 Acrofales wrote: Automatic votecount: yes please (although it does mean that people who forget to bold their vote, use abbreviated names, etc. won't have their vote counted). The rest: not so much. Hosts should be involved in the game. If it is automated, then hosts lose an incentive to keep up to date with the game, which means that if specific situations crop up in the game (rule breaking, bad sportsmanship or what-have-you) that require a host's intervention, they may not even read it until it is too late. Sure, the host *should* be reading the thread, but taking the pressure off by removing quite a few of the reasons to read the thread, you are making it easier for this to not happen.
fairly sure you can program that in to count that kinda thing (or not). I think I agree with you though.
personally i detest votecounting as a host. I think prplhz's thingy already works for that though?
|
Yeah, if that's what you guys want then TL could have that.
However I also want it to be possible to have a fully automated system to use for small normal setups for instance (at least in OMGUS).
Like I said I want it to be flexible. If hosts in TL want to still have control then they can have it. But I also want that if another host wants the system to handle everything then it should happen as well.
I think it should be up to the host. If the host chooses the automatic system and fails to "read" the thread and make a manual override if necessary it's his fault, but I think the system should be able to handle most of the stuff (for instance the system itself can check if people edit their posts and warn them/modkill them automatically). The host would still have control and should be able to manually determine stuff, like a "modkill(player)" button if a player is breaking the rules, or a "don't make a new day/night post without my authorization" feature where the system asks the host for verification before creating a new day/night post. When creating a game the host can determine how much control he wants to have I think.
Also in most cases the host should still be reading the thread since he must input the flavor for each day/night post (there should be an option for a "default" flavor though, maybe so the day/night post is still posted even if the host is away and can't write the flavor for that post). What I want is to make it possible the host doesn't have to start doing math and count votes and analyzing night actions and their order before making a night/day post and maybe get stressed/do a lot of work and maybe even get it wrong if he misscounted.
The thing about using a bot or using a separate web site or whatever is part of the lower layers so it's not a concern to me, it should be easily configurable. In fact there may even be a lot of interfaces at once. A host for one game may decide to use an automatic bot to do stuff, but for another game decide to use an external tool to run the game.
I want it to be flexible, and if you guys want the "simple" system then sure we can implement that here, as long as it's possible to implement a more complex one in an easy manner.
Also I don't know what's so wrong about an automated system with the host being the "moderator" of it. As long as everything works fine then there's no problem IMO, and the host will have more time to: -Analyze the game -Moderate it -Answer questions/Interact with Observers in the QT (for instance) -Etc
One of the problems I find is indeed the "transition" to use that system. In TL's case hosts may need to use some external tools (to create games, to get info from the game, etc) which may discourage some hosts from doing it
|
Yes, just having a single bot to "count the votes" may be enough for you guys.
But remember I also want the system to keep a "database" of games and the stuff that goes on. Theoretically I want the system to handle the "TL Mafia Central Library" and the "TL Mafia Hosting Queue System" and that stuff. Ideally, in the future after the whole system is finished and works perfect, I want it to be integrated with all the aspects of playing mafia in the forum, not just "count votes" when the host is lazy.
Yeah it may be a little ambitious though. Of course I won't start doing that right off the bat, but I want to design the system so it's possible to do so in the future with as little effort as possible.
For instance if I start creating the system with this layer design, then I can create very simple interfaces to use here or in OMGUS, and then expand on it whenever I feel like it and would be pretty easy to do. I want to create the infrastructure that allows me to create a very "basic" system (like you guys want), but also allows me to expand on it more easily later.
|
On November 20 2012 22:56 prplhz wrote: I don't think that hosts want to have to contact a developer to get their game hosted but maybe that's just me or maybe I'm misunderstanding something here.
I don't think that should happen either, which is why I made a huge discussion in OMGUS about it. We figured out a "simple" way to do it....which is basically "If the host wants to host crazy shit let him handle it while the system handles the easy stuff". There'd be no need to contact the developer in that case (also trust me I don't want anybody complaining to me and wanting me to do stuff later >_> )
|
On November 20 2012 23:02 marvellosity wrote:Show nested quote +On November 20 2012 21:16 Acrofales wrote: Automatic votecount: yes please (although it does mean that people who forget to bold their vote, use abbreviated names, etc. won't have their vote counted). The rest: not so much. Hosts should be involved in the game. If it is automated, then hosts lose an incentive to keep up to date with the game, which means that if specific situations crop up in the game (rule breaking, bad sportsmanship or what-have-you) that require a host's intervention, they may not even read it until it is too late. Sure, the host *should* be reading the thread, but taking the pressure off by removing quite a few of the reasons to read the thread, you are making it easier for this to not happen. fairly sure you can program that in to count that kinda thing (or not). I think I agree with you though. personally i detest votecounting as a host. I think prplhz's thingy already works for that though? Counting not-bolded, incorrect use of ##, forgetting to unvote and other common mistakes is pretty easy. Spelling errors and abbreviations in usernames is far harder, though. You could try using the levenshtein distance and match the vote to the username with the lowest distance. That should work somewhat okay, but could go wrong, particularly on abbreviations.
|
Again guys remember I don't want to use this specifically on TL.
Coag owns OMGUS, so basically we can do whatever shit we want in there. If we want we can create a 100% mafia-based web site there with lots of features and stuff. Like epicmafia but of forum-based mafia.
Theoretically I want the system to be able to handle that as well in the future, even if you guys want the "simple" one that just counts votes and stuff.
|
On November 20 2012 23:41 Acrofales wrote:Show nested quote +On November 20 2012 23:02 marvellosity wrote:On November 20 2012 21:16 Acrofales wrote: Automatic votecount: yes please (although it does mean that people who forget to bold their vote, use abbreviated names, etc. won't have their vote counted). The rest: not so much. Hosts should be involved in the game. If it is automated, then hosts lose an incentive to keep up to date with the game, which means that if specific situations crop up in the game (rule breaking, bad sportsmanship or what-have-you) that require a host's intervention, they may not even read it until it is too late. Sure, the host *should* be reading the thread, but taking the pressure off by removing quite a few of the reasons to read the thread, you are making it easier for this to not happen. fairly sure you can program that in to count that kinda thing (or not). I think I agree with you though. personally i detest votecounting as a host. I think prplhz's thingy already works for that though? Counting not-bolded, incorrect use of ##, forgetting to unvote and other common mistakes is pretty easy. Spelling errors and abbreviations in usernames is far harder, though. You could try using the levenshtein distance and match the vote to the username with the lowest distance. That should work somewhat okay, but could go wrong, particularly on abbreviations.
Just keep a database of "nicknames" each user has and it'd be fine.
I mean, If I put "##Vote Acro" it should count. A database in the system would know that "Acro" is equivalent to "Acrofales" and count the vote.
Same if I put "##Vote: VE" instead of "##Vote: VisceraEyes" for instance.
In the worst case if the vote can't be counted, a notification is sent to the player to tell him to vote again (a PM for instance) It wouldn't make sense to just ignore it but never notify anybody about it.
That's what I use in the voting count BBCode in OMGUS and it works. Just keep a "if the username is (list of nicknames) then vote for (user)" instruction and it should be fine.
EDIT: That database can be updated at any time ideally as well. If you notice some people start calling marv "love pudding <3" then just add a "marvellosity > love pudding" entry in it.
|
On November 20 2012 20:49 prplhz wrote: I don't know what you mean about "if the forum doesnt' let you [create threads/posts]".....
Some other forum may not allow people to control bots to do that. In those cases there should be a way to bypass it...which is just re-implementing the necessary layer.
|
It seems like a lot of work, for a non-significant amount of gain imo. But I could be wrong! And if your having fun and learning while doing it, go for it.
|
The thingie I made uses something akin to Levenshtein. It gets "kita" instead of "kitaman27" but I don't know if it would get "GM" for "GreYMisT", doubt it though. I thought about making it check unbolded votes but suddenly you run into problems where people are just quoting someone of whatever, I like that the voting process has to be at least somewhat correct.
I like the idea of having a bot host simple setups like C9++, or at least do all the boring parts.
I really like the database idea I thought a lot about that. A problem is that centralizing things externally is, well I don't like it. Suddenly the guy who is hosting goes underground in Brazil or some weird shit and all the work is wasted so it would have to be very open (like, it should be possible for anybody to get a database dump at any point), but other than that I think it's an awesome idea. There is the TL Mafia Library right now but if I just want themed games that Acrofales was scum in then it's not very useful for that. Even simply stuff like figuring out how much town wins and how much mafia wins is a hassle right now.
|
On November 20 2012 23:57 Mementoss wrote: It seems like a lot of work, for a non-significant amount of gain imo. But I could be wrong! And if your having fun and learning while doing it, go for it.
I don't plan on busting my ass on it with a tight schedule or anything though. I do have uni and plan on getting a job next year.
As long as it's done at one point in my mafia-life I'll be happy lol If I get too excited and have lots of free time I may get it done quickly too lol
At worst if it's not done the documentation will still be there for future use (by me again hopefully).
|
On November 20 2012 23:49 gonzaw wrote:Show nested quote +On November 20 2012 20:49 prplhz wrote: I don't know what you mean about "if the forum doesnt' let you [create threads/posts]"..... Some other forum may not allow people to control bots to do that. In those cases there should be a way to bypass it...which is just re-implementing the necessary layer. Yea I'm still just thinking about teamliquid. Bear with me
|
On November 21 2012 00:02 prplhz wrote: The thingie I made uses something akin to Levenshtein. It gets "kita" instead of "kitaman27" but I don't know if it would get "GM" for "GreYMisT", doubt it though. I thought about making it check unbolded votes but suddenly you run into problems where people are just quoting someone of whatever, I like that the voting process has to be at least somewhat
Who would make a quote in the voting thread?
If you mean you want to parse posts in the normal thread for votes....then it's easy I guess? If you see an open "[ quote]" tag then don't count any vote until you see a closing "[ /quote]" tag. Same for spoilers if you want. (yeah in html it's not a "quote" tag but a <div> with specific attributes and shit, but it's the same) Since there's not much custom BBCode in this site other tags won't be a problem to handle I think
I like the idea of having a bot host simple setups like C9++, or at least do all the boring parts.
I really like the database idea I thought a lot about that. A problem is that centralizing things externally is, well I don't like it. Suddenly the guy who is hosting goes underground in Brazil or some weird shit and all the work is wasted so it would have to be very open (like, it should be possible for anybody to get a database dump at any point), but other than that I think it's an awesome idea. There is the TL Mafia Library right now but if I just want themed games that Acrofales was scum in then it's not very useful for that. Even simply stuff like figuring out how much town wins and how much mafia wins is a hassle right now.
Yeah that's why I wanted authorization from TL to do everything in this forum :/ Centralizing things in another external place while playing mafia here doesn't seem that good.
Also yeah, the system shouldn't just be able to run games but archive them and let you get any info you want from it. Since that's not so important I can do it later after a "prototype" is made.
I was also planning on doing automatic testing of Setups to see if they are balanced. Like running "simulations" where random events happen in that setup and see how much times town and scum win. ...yeah it was too complicated though so I dropped it >_>
EDIT: "GM" can get confused between Greymist and GMarshall. Either don't allow it, or just allow it in games where only 1 of them is playing
|
Well, one thing you could do quite easily is receive PMs and simply list all the night actions for the host. For the common roles you could even set up a number of simple rules that the host can choose from to automatically process them. The idea would be to PM night actions in a prespecified format (once again, taking into account that people often don't follow syntax and in the worst case you'd have to automate a reply saying "I don't understand, please use the following syntax: blablabla").
Then, you simply have a rule-based system that checks for things like whether people were roleblocked, whether medics protected shots, etc. etc. Depending on the specific flavour of rules the host uses (such as sometimes mafia shots can be blocked, sometimes they can't, sometimes roleblocking will prevent one action, sometimes all actions, etc. etc.) the system could generate the night actions in a nice coloured PM to the host, and the host could tell the system to automatically generate and send the PMs. Hell, it could do the day - and nightposts automatically too, but flavour will suck 
If you want it for omgus mafia and control the site, I would recommend doing drop-down lists for night actions, that way you don't have to worry about parsing people's weirdly phrased PMs.
A database of nicknames obviously works, but requires someone to keep it updated. I mentioned Levenshtein distance, because it is automatic.
|
|
|
|