[WIP][Lib] Gamegine - Minigame Library

Discussion in 'WIP and Development Status' started by Stealth2800, Jan 13, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    callum2904

    Is this api in a working state yet?
     
  2. Offline

    Stealth2800

    Not yet. :(
     
  3. Offline

    callum2904

    :( cant wait for it to be done. Im usually good at figuring something out but im completely incapable of making a minigame that will start and end with multiple teams.
     
  4. Offline

    callum2904

    Any updates?
     
  5. Offline

    Stealth2800

    I'm now working with a server and I will be developing this for the minigames on that server. That should hopefully speed up progress a bit. :)
     
  6. Offline

    garbagemule

    For this kind of thing to succeed and become useful, you need to consider all of the existing, well-established minigame plugins. For them to join along, it has to be possible to implement support for this framework very easily, and it has to be non-intrusive, so they can function without it as well. I've been thinking about unified minigame frameworks since the first time someone said "I can join arenas while in <other minigame>" on the MobArena IRC channel, but the biggest problem I found is making it vague enough that any type of minigame can easily hook in, and still specific enough that it provides some sort of usefulness instead of just "implement these interfaces all over the place, but you still have to do everything yourself". Generic interfaces for full control, abstract half-implementations for a starting point, and full implementations for easy compositional design to create new games just from what is in the framework. You'll likely need to cover all three (like how e.g. Swing does it).

    A few thoughts on the problem of finding boundaries:
    • A game does not necessarily have to be endable. Consider a classic free-for-all battle where you respawn 30 seconds after dying, and the game never really ends. Players can join and leave as they please without repercussions (aside from perhaps losing their session score).
    • Games do not necessarily have to have regions. With Minecraft being an open "infinite" world, it is only natural to want to make types of games that exploit this. For example, consider a minigame in a world of its own, where the goal is to be the first person to build full diamond armor. It might not be feasible to create a region of 1000 x 1000 blocks - maybe more space is required.
    • Some minigames have the notion of a pre-game phase (e.g. picking classes in the lobby in MobArena), which perhaps should not be counted as the game having started.
    • Concurrent sessions for a particular minigame should be possible (e.g. multiple arenas in MobArena), so "this minigame has started" might not be appropriate when it is still possible for other sessions to run concurrently.
    I'm not saying you haven't given any thought to any of these problems, but I want to make sure it's up there. I'd love to see a unified framework for minigames so I don't have to make silly hacks like disabling certain commands in the arenas, but there is no way I'm rewriting MobArena to dependon it to even work, just like it doesn't depend on Vault for permissions, but uses it when it is available.

    Happy hacking!
     
    mazentheamazin and Stealth2800 like this.
  7. Offline

    Stealth2800

    garbagemule Thank you for your input! I will most likely be taking many of your suggestions into consideration as I continue writing the library. One of my main goals when I first had the idea to create this was to think about how existing minigames could easily be compatible with this library without having to rewrite much.

    I will most likely be rewriting a major portion of the library as a result, as I feel it is too structured for minigames to use at the moment.
     
  8. Offline

    mr_snake302

    Can I use Gamegine now?
    Will be enabled java-docs?
     
  9. Offline

    Stealth2800

    Summer break has started for me. Time to get this done. :D
     
    shadow5353 likes this.
  10. Offline

    Stealth2800

  11. Offline

    Stealth2800

    I just updated the main post with some new information.
    • Added a link to my Jenkins server
    • Updated the status
    • Added some more information to the bottom of the 'Concept' section
    Things are now moving at a reasonable pace. We're getting closer and closer to a usable library. :)
     
  12. Offline

    Ultimate_n00b

    Exactly. I've worked on a lot of different engines so I can do the process of making a minigame easier, but I eventually ended up copying/pasting the classes into the projects and modifying it (such as the SkySG on the Sky Network).

    There's a lot more than what garbagemule said that you need to apply to this. Run through a lot of popular (unique) minigames and think, can my engine handle that. If you need any help with anything, feel free to ask. It's pretty hard to make a universal engine, as all of these games are different.
     
    Stealth2800 likes this.
  13. Offline

    Stealth2800

    Ultimate_n00b I'm taking it from a slightly different approach now.

    The main goal of Gamegine now is compatibility between multiple game plugins on a single server. What I'm doing for that is creating a system that keeps track of the games that players are in. Game plugins will let Gamegine know when a player joins a game running under it. Then, it's up to other game plugins to check with Gamegine to make sure that players aren't already in other games prior to adding them.

    The side goal of Gamegine is offering a library for creating games, like I originally planned. I'm creating very simple interfaces and then implementing more classes based on those. As a result you'll be able to choose the level of development you want to use when creating a game using Gamegine. Like garbagemule stated in his post,
    Currently, the compatibility portion IS implemented. However, I plan on adding a command blocking system before I actual release a version of Gamegine officially.
    Some base game creation classes in the library are also complete, although there still are a few more I need to add before the library itself is ready.

    Thanks for your input, it's greatly appreciated and always welcome. :)
     
  14. Offline

    garbagemule

    I completely forgot about this thread. In the meantime, I've started the Arcade project with slipcor. Arcade's purpose is nothing more than a Vault'esque common interface for minigame and minigame-aware plugins, and it's being made with "dependency hell" in mind, i.e. it's possible for minigame plugins to "join" the Arcade project without modifying their own source code and without adding Arcade as a project dependency (assuming they have join/leave events implemented already), by simply submitting a pull request with the proper listeners. The awareness part has to be implemented on the plugin-side of things, though. The true force of Arcade is the microscopic footprint and the UNIX mindset of "doing one small job, but doing it well". Perhaps it's not a bad idea to split the responsibilities and just have Gamegine utilize Arcade?
     
  15. Offline

    MCForger

    garbagemule
    If you want any extra help in the project just ask.
     
  16. Offline

    Stealth2800

    garbagemule Hm, I may do that. I'll probably make both ways compatible though:
    1. Compatibility via Arcade
    2. Compatibility via implementing the 'Game' class from Gamegine.
     
  17. Offline

    MCForger

    Stealth2800
    The post above yours stealth was suppose to be for you as well =P (Thought I tagged both of you)
     
  18. Offline

    Stealth2800

    MCForger Ah okay, I'll let you know if I do. :p
     
  19. Offline

    garbagemule

    MCForger Stealth2800
    There was a very good point in a comment on the Arcade project page; use metadata for checking if a player is currently in a minigame instead of a dedicated plugin. I think it's a good idea, but it has a few issues as well (check my response). Feel free to engage in the discussion in the comments; I feel like it might be a more appropriate place to have that kind of discussion, since it's a little off-topic for this thread - my apologies.
     
  20. Offline

    Stealth2800

    garbagemule Hm, sounds interesting. I don't have access to the project though - it says it's under moderation. :p
     
  21. Offline

    garbagemule

    Stealth2800
    Hah, more information required and an incorrect category. Should be back up now :)
     
  22. Offline

    The Fancy Whale

    You should get a bukkit dev page once beta/alpha is ready.
     
  23. Offline

    Stealth2800

  24. Offline

    Phasesaber

    I've also been making a 'Game API', and added Map Switching. (Such as the Mineplex or Overcast Network)
    I think it was a little easier to do, since you didn't have to save a million variables for an Arena, just save the list of Maps that are in the Arena. All the maps are also unloaded until they are played on, meaning no saving broken blocks or denying block manipulation all together. This would also allow for a more fluid movement from game to game. Instead of kicking all the players out when a game ends, teleport them to the lobby, unload the previous map, load the next map, tp them there. It really gets rid of a lot of problems, and works with any game.

    TL;DR: Map Switchers are cool.
     
  25. Offline

    Onlineids

  26. Offline

    Stealth2800

    Onlineids I had a burst of inspiration recently and got a bunch of work done. It's nearly in a working state although it won't have much pre-developed code in the library part of the project when I release the first alpha build.

    I recently wrote some documentation but there's still a lot more to be written. You can see what exists so far at https://github.com/Gamegine/GamegineAPI/wiki
     
  27. Stealth2800 When im back off holiday I woulx love to write lots of code for you to speed process up, anything on your todo list I could do?
     
  28. Offline

    Stealth2800

    bwfcwalshy Currently, it's really up to me to get the structure of the library done. Once that happens, you can contribute code to make that structure come to life.
     
  29. Offline

    mythbusterma

    Stealth2800

    I'm working on another plugin to quickly save/load/regenerate large chunks of terrain without causing the lag that WorldEdit does. It would be ideal to save and load stadiums for your plugin (obviously not quite as fast as doing a copy of another world, but better than most)
     
  30. Offline

    Stealth2800

    mythbusterma Awesome! I may look into using that for arena regeneration then. :)
     
Thread Status:
Not open for further replies.

Share This Page