Author |
Message |
tansey Novice
Joined: Nov 03 2004 Posts: 53 Offline
|
Posted: Fri Feb 02, 2007 10:51 pm Post subject: MervGen |
|
|
|
|
MervGen is a visual tool for creating Merv-based bots. Bots have many common design patterns (timers, votes, ship constraints, etc) that are then mixed and matched to create specific event bots. Since my master's thesis is on automatic program generation, and I was very bored for a couple weeks over winter break, I thought I'd give this project a shot.
I had been holding back on posting this, since it's still very early in the development process. However, I'm currently busy with my real life projects so I don't have much time to work on this, which is unfortunate because I think it's a really good idea.
So I'm going to adopt the Google method and just post the last stable build here, and label it a beta version for now. :)
Current Functionality in bold
Partial functionality (though not released yet) in italics
No functionality (or no design in mind yet) in regular text
Features MervGen Supports:
- Loading files from variables (will create a stub .ini as well)
- Votes (call method "startVote_name()" to start it)
- Timers (set it to value > -1 to start, will call name_Done() when timer reaches 0)
- Stats tracking, including creating variables that can be used later in the tool
- Ship Constraints, (I have functionality for this, but I think I need to rework the general approach)
- Team size constraints
- Team/Arena starting positions
- Sequential starting actions
- Custom triggers (i.e. powerful event->action statements)
- Specifying ending conditions
Any input you guys have is really appreciated. Also, bug reports are welcome, but keep in mind only the bold parts should be bug-free. If you notice any better way to do one of the patterns, let me know.
MervGen Website
Trigger Editor Features (idea list)
Teams:
- Team 0
- Team 1
- Team 2
- ...
- Team 10
- Any Team
Conditions:
- team/player enters region
- timer reaches time
- team/player controls boolean operator amount flags
Actions:
- Grant prize to team/player
- Grant amount points to team/player
- Reset timer
MervGenerator.zip - 29.17 KB
File downloaded or viewed 65 time(s)
Last edited by tansey on Wed Feb 07, 2007 7:55 pm, edited 3 times in total |
|
Back to top |
|
|
D1st0rt Miss Directed Wannabe
Age:36 Gender: Joined: Aug 31 2003 Posts: 2247 Location: Blacksburg, VA Offline
|
Posted: Sun Feb 04, 2007 3:27 am Post subject: |
|
|
|
|
Wow, I thought I there was only one other person that played this game in Blacksburg...
This looks interesting btw, I don't suppose I could convince you to switch to either TWCore or ASSS eh? _________________
|
|
Back to top |
|
|
Chambahs Power attack
Joined: Jun 19 2005 Posts: 820 Offline
|
Posted: Sun Feb 04, 2007 7:43 am Post subject: |
|
|
|
|
"However, I'm currently busy with my real life projects so I don't have much time to work on this, which is unfortunate because I think it's a really good idea."
|
|
Back to top |
|
|
CypherJF I gargle nitroglycerin
Gender: Joined: Aug 14 2003 Posts: 2582 Location: USA Offline
|
Posted: Sun Feb 04, 2007 10:13 am Post subject: |
|
|
|
|
I had this idea too so glad someone else had the time to develop this type of application! _________________ Performance is often the art of cheating carefully. - James Gosling
|
|
Back to top |
|
|
tansey Novice
Joined: Nov 03 2004 Posts: 53 Offline
|
Posted: Mon Feb 05, 2007 11:06 am Post subject: |
|
|
|
|
D1st0rt wrote: | Wow, I thought I there was only one other person that played this game in Blacksburg...
This looks interesting btw, I don't suppose I could convince you to switch to either TWCore or ASSS eh? |
Glad there's another fellow hokie on here. =)
I've never used either of the other APIs. What would be nice is a uniform approach that could make it easy to convert this to any API (relatively) quickly.
The current implementation is just a quick-and-dirty proof of concept that can get a few features up and running, however it doesn't generate particularly readable code. I think a better way to go might be to make a general library addition then generate a smaller, better structured file which is used in conjunction with the library. Seems like that would make things easier for everyone.
I expect that over the summer I'll have time to refactor all of the code. For now, it's kind of just a good idea and a proof of concept. I'm interested more in feedback and ideas/criticisms.
P.S. d1st0rt--are you a CS major/grad student?
|
|
Back to top |
|
|
tansey Novice
Joined: Nov 03 2004 Posts: 53 Offline
|
Posted: Mon Feb 05, 2007 11:10 am Post subject: |
|
|
|
|
CypherJF wrote: | I had this idea too so glad someone else had the time to develop this type of application! |
Just the opposite, sadly. I don't have the time to develop it, as I'm working right now on generating MPI code for high performance compute clusters, which is really killing me.
Maybe a better way to do this would be to create a plug-in architecture and just let people write their own bits of code?
Nice Gosling quote btw. =)
|
|
Back to top |
|
|
D1st0rt Miss Directed Wannabe
Age:36 Gender: Joined: Aug 31 2003 Posts: 2247 Location: Blacksburg, VA Offline
|
Posted: Mon Feb 05, 2007 1:18 pm Post subject: |
|
|
|
|
I'm a sophomore CS minor (majoring in mechanical)
I can't currently think of an easy way to swap out APIs, following conventions in each core would probably require a complete code generator for each.
|
|
Back to top |
|
|
tansey Novice
Joined: Nov 03 2004 Posts: 53 Offline
|
Posted: Mon Feb 05, 2007 4:08 pm Post subject: |
|
|
|
|
D1st0rt wrote: | I'm a sophomore CS minor (majoring in mechanical)
I can't currently think of an easy way to swap out APIs, following conventions in each core would probably require a complete code generator for each. |
Well I can easily generate an XML file representation of what needs to be generated. Maybe I'll look into the ASSS code, but DSB uses Merv, so that's my primary target platform.
|
|
Back to top |
|
|
CypherJF I gargle nitroglycerin
Gender: Joined: Aug 14 2003 Posts: 2582 Location: USA Offline
|
Posted: Mon Feb 05, 2007 5:46 pm Post subject: |
|
|
|
|
tansey wrote: | [..]
...
Nice Gosling quote btw. =) |
Thank-you, I love his blog.
|
|
Back to top |
|
|
Cerium Server Help Squatter
Age:41 Gender: Joined: Mar 05 2005 Posts: 807 Location: I will stab you. Offline
|
Posted: Mon Feb 05, 2007 5:50 pm Post subject: |
|
|
|
|
Neat project. If you really want to help the non-developers, look at the trigger system in Blizzard's RTS games. If you implemented something like that... damn. _________________ There are 7 user(s) ignoring me right now.
|
|
Back to top |
|
|
Animate Dreams Gotta buy them all! (Consumer whore)
Age:36 Gender: Joined: May 01 2004 Posts: 821 Location: Middle Tennessee Offline
|
Posted: Mon Feb 05, 2007 5:56 pm Post subject: |
|
|
|
|
Cerium wrote: | Neat project. If you really want to help the non-developers, look at the trigger system in Blizzard's RTS games. If you implemented something like that... damn. |
You're basically talking about a new bot-core now, I think. Although, couldn't this conceivably be done(with a complete recode) in AS3?
|
|
Back to top |
|
|
CypherJF I gargle nitroglycerin
Gender: Joined: Aug 14 2003 Posts: 2582 Location: USA Offline
|
Posted: Mon Feb 05, 2007 6:43 pm Post subject: |
|
|
|
|
Cerium wrote: | Neat project. If you really want to help the non-developers, look at the trigger system in Blizzard's RTS games. If you implemented something like that... damn. | Blizzard maps/triggers were pretty sweet back in Starcraft/Warcraft. Haven't played anything new lately from them.
|
|
Back to top |
|
|
tansey Novice
Joined: Nov 03 2004 Posts: 53 Offline
|
Posted: Mon Feb 05, 2007 6:55 pm Post subject: |
|
|
|
|
Cerium wrote: | Neat project. If you really want to help the non-developers, look at the trigger system in Blizzard's RTS games. If you implemented something like that... damn. |
Link?
|
|
Back to top |
|
|
Animate Dreams Gotta buy them all! (Consumer whore)
Age:36 Gender: Joined: May 01 2004 Posts: 821 Location: Middle Tennessee Offline
|
Posted: Mon Feb 05, 2007 8:11 pm Post subject: |
|
|
|
|
CypherJF wrote: | [..]
Blizzard maps/triggers were pretty sweet back in Starcraft/Warcraft. Haven't played anything new lately from them. |
New? The only thing Blizzard has done since then is World of Warcraft.
|
|
Back to top |
|
|
CypherJF I gargle nitroglycerin
Gender: Joined: Aug 14 2003 Posts: 2582 Location: USA Offline
|
Posted: Mon Feb 05, 2007 8:33 pm Post subject: |
|
|
|
|
Animate Dreams wrote: | [..]
New? The only thing Blizzard has done since then is World of Warcraft. |
Ah good I'm not that old then.
|
|
Back to top |
|
|
Cerium Server Help Squatter
Age:41 Gender: Joined: Mar 05 2005 Posts: 807 Location: I will stab you. Offline
|
Posted: Mon Feb 05, 2007 10:23 pm Post subject: |
|
|
|
|
None required, really.
This is something I wanted to implement long ago, but I was too inexperienced at the time. It would be very cool to see this finished. May even breathe some new life into this dying game.
Basically, the system worked something like this:
There was a dropdown list of actions. Like "player moves to ____" and upon selection, the user would fill in the blank. In the case of Starcraft or Warcraft, the blank would be the name of a region on the map.
Anyway, after the action was set, the reaction would be set, based off another dropdown list of actions. The language that was used in all of the action/reaction sets was plain english. No symbols or programming lingo.
The key here is that each "trigger" could have multiple actions/reactions. It was a very simplistic system that everyone could adapt to quickly without any programming experience, but could still make powerful maps and subevents.
Some examples that could be good for SS (The underlined text represents sub-options the user would select after choosing the action/reaction):
any player enters region region1 -> grant prize fullcharge to active player
Timer timer1 reaches 5 seconds AND team1 controls atleast 2 flags -> grant 500 points to team1; reset timer timer1
Edit:
Some images of the GUI from Starcraft can be viewed here: http://hybrid.shanky.com/sctriggers
|
|
Back to top |
|
|
L.C. Server Help Squatter
Age:33 Gender: Joined: Jan 03 2003 Posts: 574 Location: Missouri, US Offline
|
Posted: Mon Feb 05, 2007 10:46 pm Post subject: |
|
|
|
|
Now that's cool. Almost just like pseudonyms (right? ).
|
|
Back to top |
|
|
Samapico No, these DO NOT look like penises, ok?
Joined: May 08 2003 Posts: 1252 Offline
|
Posted: Mon Feb 05, 2007 11:25 pm Post subject: |
|
|
|
|
im guessing in the case of asss this could all be converted to region code?
that would be a cool thing to do in DCME _________________ (Insert a bunch of dead links here)
|
|
Back to top |
|
|
Animate Dreams Gotta buy them all! (Consumer whore)
Age:36 Gender: Joined: May 01 2004 Posts: 821 Location: Middle Tennessee Offline
|
Posted: Tue Feb 06, 2007 12:59 am Post subject: |
|
|
|
|
Samapico wrote: | im guessing in the case of asss this could all be converted to region code? |
Er, um... the region related ones, I suppose. But I think it would be a bit broader than that, I'm sure it would be very similar to callbacks in AS3, only with a GUI to create them. It sounds like a great idea, but even with the existing callbacks in AS3, I'm sure it would be a ton of work. You also have to think, the first time you compile a new AS3 module, you probably get tons of errors. I think things would have to be quite a bit different for that to ever work. Really nice idea, though....
|
|
Back to top |
|
|
Cerium Server Help Squatter
Age:41 Gender: Joined: Mar 05 2005 Posts: 807 Location: I will stab you. Offline
|
Posted: Tue Feb 06, 2007 3:10 pm Post subject: |
|
|
|
|
Ideally, the module itself wouldn't be written for each bot, rather than there would be a single module which reads a script that the GUI creates.
|
|
Back to top |
|
|
tansey Novice
Joined: Nov 03 2004 Posts: 53 Offline
|
Posted: Tue Feb 06, 2007 11:57 pm Post subject: |
|
|
|
|
Cerium wrote: | The key here is that each "trigger" could have multiple actions/reactions. It was a very simplistic system that everyone could adapt to quickly without any programming experience, but could still make powerful maps and subevents. |
Very interesting program from the snapshots. I suggested the multi-reaction idea on the MervGen website (that's what the '+' buttons are for in the screen shots), but I like the way they did it in the SC editor a lot better.
I think maybe I was trying to be a little too ambitious by allowing complete generation of any bot. Maybe a (large) subclass would be better if it allows for a more intuitive interface.
I would certainly be willing to work on something like the SC trigger editor if we could flesh out the details. Maybe we could start a list of different Player, Action, and Condition parameters. I'll keep a running tab at the the original post for this thread.
|
|
Back to top |
|
|
Smong Server Help Squatter
Joined: 1043048991 Posts: 0x91E Offline
|
Posted: Wed Feb 07, 2007 4:47 am Post subject: |
|
|
|
|
Cerium wrote: | Some examples that could be good for SS (The underlined text represents sub-options the user would select after choosing the action/reaction):
any player enters region region1 -> grant prize fullcharge to active player
Timer timer1 reaches 5 seconds AND team1 controls atleast 2 flags -> grant 500 points to team1; reset timer timer1 | This layout reminds me of mail filters. I think a code generator like this could be made to work for all bots and asss. You would still need a compiler and header files, which some people are going to have problems setting up. Having a bot/asss plugin read the file and do everything dynamically just sounds a bit flaky and complex. _________________ ss news
|
|
Back to top |
|
|
tansey Novice
Joined: Nov 03 2004 Posts: 53 Offline
|
Posted: Wed Feb 07, 2007 9:50 am Post subject: |
|
|
|
|
Smong wrote: | [..]
You would still need a compiler and header files, which some people are going to have problems setting up. Having a bot/asss plugin read the file and do everything dynamically just sounds a bit flaky and complex. |
If people have visual studio installed (for Merv at least), we can invoke the compiler inside the program, so all they'll get is a DLL.
|
|
Back to top |
|
|
tansey Novice
Joined: Nov 03 2004 Posts: 53 Offline
|
Posted: Wed Feb 07, 2007 7:57 pm Post subject: |
|
|
|
|
I updated the OP with a list of the features suggested so far, how about some more?
Think of events you've created and/or want to create, and the triggers they would use.
|
|
Back to top |
|
|
Samapico No, these DO NOT look like penises, ok?
Joined: May 08 2003 Posts: 1252 Offline
|
Posted: Wed Feb 07, 2007 8:57 pm Post subject: |
|
|
|
|
teams Even / Odd could be used for some balling games
team/player enters region
could even be
team/player enters region
'enters' could be replaced by 'leaves' or by
'is in' [...] 'for / every' value 'seconds / minutes..etc'
But I guess that,s mostly an interface issue... whether to show 'enters' , 'leaves', etc. as all individual actions, or show a 'regions:' category, in which you can choose the verb
Same thing could apply to about every condition created
|
|
Back to top |
|
|
|