Mafia System - Updates and Suggestions - Page 2
Forum Index > TL Mafia |
Acrofales
Spain17834 Posts
| ||
gonzaw
Uruguay4911 Posts
On November 21 2012 00:27 Acrofales wrote: 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"). Yeah that's possible. Although it'd need to be a system feature I think (to list every night action that was made, etc). The lower layers would just PM the host that info (or email him, etc). 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 ![]() This too. I was counting on the host seeing the result of night actions, seeing who died/what happened, and then creating the flavor for it. After that he sends the flavor to the system and the system creates the day/night post automatically, or the host could just post it himself (if he wants to do everything manually). 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. Yes this would be a nice feature to have. Have a "Send your Action!" section, where you choose from a drop-down list of all the possible abilities you have, and decide who you target and the like. A database of nicknames obviously works, but requires someone to keep it updated. I mentioned Levenshtein distance, because it is automatic. Yeah the thing is that some nicknames don't work like that. Back in OMGUS there's a guy called brnsdntsdtrwds (or something) but we just call him no-vowels. That Leventhing distance won't be able to pick that up I think. It also may confuse some other usernames, like VE with Ver for instance (although I don't really know how that distance thing works). | ||
gonzaw
Uruguay4911 Posts
...I was hoping maybe one of you guys would do that for me after the system is done ![]() | ||
sylverfyre
United States8298 Posts
As for "how to handle extra weird theme games" the big deal seems to be coming up with a way of creating/assigning theme-specific actions, right? (both PM'd night actions and in-thread day actions qualify here) | ||
Acrofales
Spain17834 Posts
I, like prplhz, strongly recommend you set this up in an iterative manner. Make lots of small projects that are useful individually and can easily be changed if actual use turns out to be different from expected use. As for the use on TL, yor best bet is to PM GMarshal about it. I don't actually know how far the red hammers' authorty goes, but if he's not able to clear the use of a bot, he'll at least know who can. For server side use I think only the admins will be able to say much. Maybe ask R1CH? Fairly certain the answer will be "hell no", though. For starters, writing a bot that refreshes a vote thread every 10 minutes or so and updates a votecount if there are changes sounds like something good. If Zona or prp already have that, then take a look at the code and see if you can use that. | ||
gonzaw
Uruguay4911 Posts
On November 21 2012 03:15 Acrofales wrote: Okay, well, I'm not entirely sure what you want from this thread. You seem to have a good idea of what you want to do and how to do it. If you want help with design, programming or anything else, just say the word. I, like prplhz, strongly recommend you set this up in an iterative manner. Make lots of small projects that are useful individually and can easily be changed if actual use turns out to be different from expected use. As for the use on TL, yor best bet is to PM GMarshal about it. I don't actually know how far the red hammers' authorty goes, but if he's not able to clear the use of a bot, he'll at least know who can. For server side use I think only the admins will be able to say much. Maybe ask R1CH? Fairly certain the answer will be "hell no", though. For starters, writing a bot that refreshes a vote thread every 10 minutes or so and updates a votecount if there are changes sounds like something good. If Zona or prp already have that, then take a look at the code and see if you can use that. It's not all nice and dandy. I have the "idea" of what to do and an idea of how to do it....but there are still some problems that keep arising and I may need some help (specially in the design phase) For instance, right now I just figured a new design problem. For example, what can happen when the night phase ends and night actions should be resolved? According how my "automated" system would run in OMGUS, the system would automatically resolve night actions, and automatically create the Day X thread/post However, by what you guys want in TL, the system would most likely give the host a list of night actions, let the host confirm/change those as he sees fit, and then the system tells the host how the actions were resolved and gives him a template of a post; then the host creates the new Day post by himself using this template (and he adds the flavor he wants). These are 2 completely different ways of using the same feature of the system, which is "night ends and night actions must be resolved/day post should be posted". What I thought was that when a host creates a game, he should decide how much control he wants on said game (assuming the forum allows it, for instance with that bot thing) So one host may decide to let the system handle everything in one game, while another host may decide to control everything himself in another game. Since those 2 scenarios basically correspond to OMGUS and TL (by what was discussed recently here), it should be able to happen. That's my design problem, how to let one use case (e.g creating a game) determine how the system behaves in other different use cases/circumstances (e.g night phase is over). Not to mention there may be "new" use cases that can be added just because the host wants more control. (programming lingo and shit: )One way I can think of is having different controllers do different stuff. For instance one controller decides what to do when a night phase is over (the deadline timeout interrupts him for instance). However, we can create a new controller that decides what to do in that situation in a different way. Each game can have one of these controllers (i.e it's not a controller defined by the system), and these controllers are created when a game is created. If the host wants control, Controller 1 is created and used. If the host wants less control, Controller 2 is created and used (of course both of them implement an interface, that way other components can use its methods without knowing which specific controller is being used). Does this sound like a viable solution? Because to be honest it seems too simple to be true lol. | ||
prplhz
Denmark8045 Posts
| ||
gonzaw
Uruguay4911 Posts
For instance, I take it all of you would agree on letting a bot do some stuff. But for instance would you guys want that bot creating the threads and day posts? Would you want that bot checking signups? How much control do you guys want the host to have over these things? Do you want the host to do them manually, let the bot do them but only with authorization from the host in every step, or just let the bot do everything? Which aspects of the game would you want this to be applied? (creating day posts, counting votes, resolving night actions, etc). Or at least which aspects of the game do you think it could be applied to (so I cover all possibilities in my system)? | ||
Acrofales
Spain17834 Posts
On November 21 2012 07:41 gonzaw wrote: It's not all nice and dandy. I have the "idea" of what to do and an idea of how to do it....but there are still some problems that keep arising and I may need some help (specially in the design phase) For instance, right now I just figured a new design problem. For example, what can happen when the night phase ends and night actions should be resolved? According how my "automated" system would run in OMGUS, the system would automatically resolve night actions, and automatically create the Day X thread/post However, by what you guys want in TL, the system would most likely give the host a list of night actions, let the host confirm/change those as he sees fit, and then the system tells the host how the actions were resolved and gives him a template of a post; then the host creates the new Day post by himself using this template (and he adds the flavor he wants). These are 2 completely different ways of using the same feature of the system, which is "night ends and night actions must be resolved/day post should be posted". What I thought was that when a host creates a game, he should decide how much control he wants on said game (assuming the forum allows it, for instance with that bot thing) So one host may decide to let the system handle everything in one game, while another host may decide to control everything himself in another game. Since those 2 scenarios basically correspond to OMGUS and TL (by what was discussed recently here), it should be able to happen. That's my design problem, how to let one use case (e.g creating a game) determine how the system behaves in other different use cases/circumstances (e.g night phase is over). Not to mention there may be "new" use cases that can be added just because the host wants more control. (programming lingo and shit: )One way I can think of is having different controllers do different stuff. For instance one controller decides what to do when a night phase is over (the deadline timeout interrupts him for instance). However, we can create a new controller that decides what to do in that situation in a different way. Each game can have one of these controllers (i.e it's not a controller defined by the system), and these controllers are created when a game is created. If the host wants control, Controller 1 is created and used. If the host wants less control, Controller 2 is created and used (of course both of them implement an interface, that way other components can use its methods without knowing which specific controller is being used). Does this sound like a viable solution? Because to be honest it seems too simple to be true lol. I was going to suggest a simple model-view-controller design principle before I even got to your "programming lingo". However you are looking at it far too complexly imho. Start with something simple, but keep in mind where you want to end up. Pick the view you think will be simplest and build that. If people aren't satisfied, find out what they want and build that. Iterative programming is very important for a project that you plan to have used by a large community. Personally, I'd start with the simple votecount bot as a prototype for your design. Your idea for a fully configurable controller factory sounds like serious future work. Just a word of caution from one programmer to another. In the end it's your project and you should build it in the way you are most comfortable with. | ||
Acrofales
Spain17834 Posts
On November 21 2012 07:58 gonzaw wrote: If you guys could tell me what you'd 100% want here in TL (at least initially) then it'd be a good start (since I'm analyzing the use cases back in OMGUS). For instance, I take it all of you would agree on letting a bot do some stuff. But for instance would you guys want that bot creating the threads and day posts? Would you want that bot checking signups? How much control do you guys want the host to have over these things? Do you want the host to do them manually, let the bot do them but only with authorization from the host in every step, or just let the bot do everything? Which aspects of the game would you want this to be applied? (creating day posts, counting votes, resolving night actions, etc). Or at least which aspects of the game do you think it could be applied to (so I cover all possibilities in my system)? I have not hosted yet, just cohosted, but votecounting is a pain in the ass. Signups is another rote task that could be left to a bot in most instances. I wouldn't be comfortable having fully automated dayposts, but some help resolving night actions could be useful. However each host runs with slightly different rules and something flexible enough to capture each host's preferences may be rather hard. | ||
gonzaw
Uruguay4911 Posts
If I go "iterative" in this way, I'll be "wasting" work on stuff by implementing it and then immediately scrapping it. I wanted to create the "general" system first, then make the iterative programming for additional features later. I was also thinking about doing a top-down approach. Start with the system (even if it's simple) and end with the bot implementation. That way I could do it parallel with OMGUS so we don't use a bot there (for instance). I don't know, I'll think about it. | ||
Acrofales
Spain17834 Posts
An important question to answer before you begin is what other people did wrong. Why is there currently no votecount bot despite hosts expressing an interest in having one? What went wrong? Maybe nothing and it's simply an availability issue, but maybe some important functionality was missing. I f you don't get enough response here you can try PMing some of the more experienced hosts, such as gmarshal, greymist or ace and ask them some of te questions you are putting here. Also, what do you, personally want to get out of this project? I know that I am giving you more questions than I am answering ![]() | ||
![]()
GMarshal
United States22154 Posts
You guys summoned me here! But now I vanish! | ||
gonzaw
Uruguay4911 Posts
On November 21 2012 08:52 Acrofales wrote: Well, that's part of the learning process. Things like the html parser are going to be useful in any case, as is the interface with the forum (such as posting a message, or opening a thread or pm). But in my case it'd be like doing a different project. Having just a bot that does vote-counts implies the bot himself has a "mini-system" of votes he keeps around and determines who gets lynched at what deadline and the like. That's extra work that will 100% not be used in the "final release" since it's the system itself that "counts" the votes and determines who gets lynched, and it does so in a completely different way most likely. I'm willing to take it step by step, with the hardest stuff first (the system) and the "easiest" part (pasing html, count votes, etc) later. Yes it's possible that if I "fail" in the "hard" part I don't even reach the "easy" part. Also...if this project had more people on it it's possible to just do both at the same time (since like I said the layers are in a way independent of each other).....but yeah we are just like 1-3 guys >_> One guy makes the bot and voting count stuff to "test" it like you said, while the rest of us make the system and use that bot when it's finished. Also, what do you, personally want to get out of this project? A super awesome system I (and you guys) can use to play mafia here and in OMGUS, and also have some entertainment in making a project like this and see if it can be done. I.e it's not a boring job project you want to finish as soon as possible since it's boring as hell. The process of this project is also fun. Also maybe some credit >_> <_< If I had the means maybe make it commercial >_> ....sadly I don't ![]() | ||
Coagulation
United States9633 Posts
| ||
kitaman27
![]()
United States9244 Posts
On November 21 2012 09:07 gonzaw wrote: Also maybe some credit >_> <_< If I had the means maybe make it commercial >_> ....sadly I don't ![]() At the very least, you have something to slap on your resume if things work out. Basically every software engineering interview I've ever been a part of has involved someone asking me to describe a project that I have worked on outside of the required schoolwork (and I'd never have a good answer because I'm lazy :p) | ||
Mr. Wiggles
Canada5894 Posts
On November 21 2012 11:33 Coagulation wrote: you can make anything commercial.. all you gotta do is slap some titties and ass on it. I think Coag's on to something here. Let's name it Miss Sexy Mafia Bot. While helping you host, it also whispers sweet nothings into your ear and provides titillating entertainment. Sorry for not being too too active yet in helping with this. I'm waiting for things to calm down a bit at school (I have been busy lately) before I start really getting into this. So, I won't be too huge a help for a couple of weeks. One thing though, but couldn't you just break everything up into different sub-systems? I don't have too much experience in software design, but this seems like it would be relatively easy, and it would be easy to use/not use certain parts of the system if so desired. I guess I'm just a little confused by what you mean when you say you want to make the "System" first. It seems like you could just make a Vote Count system that can either work on its own or send information to a Night Post system which again could work with just the Vote Count System, or could be controlled by some kind of Game Handler, etc. So that way you start out with basic functions, and then incorporate them into the larger system, with each tier automating more and more of the game, but the possibility of easily having each sub-section of the system able to be used in isolation or without other parts of the system. It seems like you don't want to go this route though, so I'm curious as to what you mean when you want to make the "system" first and then fill in the functions. Just curious as to how you'd like to exactly design and build this thing :p | ||
GreYMisT
United States6736 Posts
| ||
gonzaw
Uruguay4911 Posts
On November 21 2012 11:58 kitaman27 wrote: At the very least, you have something to slap on your resume if things work out. Basically every software engineering interview I've ever been a part of has involved someone asking me to describe a project that I have worked on outside of the required schoolwork (and I'd never have a good answer because I'm lazy :p) That'd be pretty cool, I didn't think of that! I have another question for you guys: How would you guys define a "Normal" game? We are discussing how to create setups, and we arrived at the "there are different types of setups: Normal, Newbie, Themed, etc" part. If you don't mind, I'll post what I "think" a Normal setup would need these conditions:
Am I missing something? Also, the same would apply to "Newbie" games to be honest. Although I just take it that these games are the same as Normal games except that: -There can't be any 3rd party roles in it -There can be coaches that coach the newbies I think that's it as well...? | ||
gonzaw
Uruguay4911 Posts
On November 21 2012 14:22 Mr. Wiggles wrote: I think Coag's on to something here. Let's name it Miss Sexy Mafia Bot. While helping you host, it also whispers sweet nothings into your ear and provides titillating entertainment. Sorry for not being too too active yet in helping with this. I'm waiting for things to calm down a bit at school (I have been busy lately) before I start really getting into this. So, I won't be too huge a help for a couple of weeks. One thing though, but couldn't you just break everything up into different sub-systems? I don't have too much experience in software design, but this seems like it would be relatively easy, and it would be easy to use/not use certain parts of the system if so desired. I guess I'm just a little confused by what you mean when you say you want to make the "System" first. It seems like you could just make a Vote Count system that can either work on its own or send information to a Night Post system which again could work with just the Vote Count System, or could be controlled by some kind of Game Handler, etc. So that way you start out with basic functions, and then incorporate them into the larger system, with each tier automating more and more of the game, but the possibility of easily having each sub-section of the system able to be used in isolation or without other parts of the system. It seems like you don't want to go this route though, so I'm curious as to what you mean when you want to make the "system" first and then fill in the functions. Just curious as to how you'd like to exactly design and build this thing :p Check the OP about how I plan on "designing" this system. The "System" I speak of would be Layer 4. Technically every layer is part of the system, but the "system" (as I call it) is Layer 4 to me. It's the one with the info, the one that works abstractly, and the one that doesn't care how the voting count is done and doesn't care how the role PMs are handled, and doesn't care if the bot or the host creates the Day/night posts or not. All this "bot" talk corresponds to lower layers. Specifically lower layers designed towards TL Mafia. In this "TL Mafia lower layer"; we could implement a bot that checks the voting thread regularly and gives the upper layer a new vote when he sees one (kind of how ZBot checked the voting thread every 5 minutes to update votes). This isn't a "sub-system" per se, it's just the implementation of checking votes that is done in TL. You could say it's a "sub--system" of Layer 2 if you wanted though. What you are basically saying, is that the "Voting Count" subsystem would interact with the "Night Action" subsystem which could interact with the "Create new posts" subsystem. You say that the implementation of the "Voting Count" subsystem could be changed, but the other "subsystems" would work the same, right? The thing is that in this layer design, these "sub-systems" don't work with each other, they work with the upper layer. The "Voting Count" subsystem gets votes and gives them to Layer 3. The "Create posts" subsystem gets info from Layer 3 and creates posts. If Layer 3 remains the same....then the "subsystems" can work independently. Layer 3 doesn't care how the "Voting Count" subsystem gives him votes as long as he does. In this regard, the implementation of "Voting Count" can change, but since Layer 3 doesn't change, then the system itself doesn't change. Same, if the "Creating new posts" subsystem changes, since Layer 3 doesn't change the system doesn't change. Meh fuck this explanation seemed way better in my mind >_> | ||
| ||