[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

    Stealth2800

    Gamegine
    Game compatibility API and creation library for Bukkit
    Links:
    Here are some links you may find useful.
    Concept:
    This API is being created in order to create compatibility among games utilizing it to allow for multiple games to be run on a single server without any conflicts or problems and create a unified minigame server experience. This will be especially useful for minigame servers wanting to create a smooth experience for their players with minimal configuration.

    From past experience, I have found it a pain to install multiple game plugins on a single server due to incompatibilities that would appear with signs, joining, player management, etc. I'm creating this in the hope that no one will have to deal with those sorts of problems in the future as they create servers.

    Also, this will serve as a library for actually creating games, something very handy for developers to use. A lot of basic but important game functionality will be provided by this.

    One of my main goals with the library aspect of Gamegine is creating a wide range of low level to high level game creation classes. You'll be able to have full control when creating your games by using the low level classes OR you can fill out a few methods on the high level classes to create games based on existing templates.


    Status:
    Current release: Nearing initial alpha release

    The compatibility API portion of Gamegine is nearing completion. This includes:
    • Player tracking
    • Game registration and tracking
    • Single command to join games that implement the required classes
    • Game signs (join, status, etc)
    The first alpha release of Gamegine will not have any library classes for game creation. The versions following will begin adding those features.


    Planned Features:
    Most of the features below are guaranteed to be included in Gamegine. Some may take longer than others, however.
    More features planned as time goes on, suggestions are always welcome.
    • Games:
      • At the bare minimum, a game will be able to run by simply filling out a few methods.
      • Multiple instances of a game can be run as games are arena-based (which can be disabled on a per-game basis if necessary)
      • Games can be disabled so you can safely perform maintenance on them, etc.
      • A separate ‘plugin’ system for creating games without having to include it in its own Bukkit plugin. This will allow for live installation/removal of games on a server without having to restart/reload it.
    • Players:
      • Player storage using Mojang UUIDs for compatibility with the upcoming ability of username changes
      • Allow players to join full games (with certain permission(s) -> useful for donor ranks, VIP ranks, etc.)
      • Ability to disable certain commands while in-game
      • The plugin will also make sure players cannot join games while they're already in one
    • Points:
      • A point system that can serve as an economy
      • Points can be awarded through commands, games, donations, and other ways
    • Teams:
      • Games can use team-based player handlers that allow for teams to be part of a game
      • A theoretically infinite amount of teams can be defined for a single game
      • Teams can have certain features enabled or disabled, such as team chat or friendly fire
      • Ranks can exist within a single team in order to show that one player (or more) is higher ranked on the team (e.g. the ‘leader’ of the team)
    • Arenas:
      • Main component of games
      • Simple way to define, create, and modify arenas using commands
      • Built-in wand for selecting arena regions + compatibility with WorldEdit selections
      • WorldGuard region support for protection and/or selections
    • Cooldowns:
      • Cooldowns for nearly anything can be created, from items to commands
      • Ability to create cooldowns that will announce time remaining at specified intervals or silent cooldowns
      • The cooldown time is set with a number of ticks, giving a wide range of available time intervals for cooldowns
    • Signs:
      • Custom sign types can be created simply by extending a class and filling in some methods as to what it does when it’s interacted with
      • Player interaction with signs can have delays set in order to prevent lag
      • Signs are tracked via positions and as a result don’t have to have a code in brackets on the first line at all times
      • Signs are updated only when necessary, there is no repeating task updating them. This helps to reduce lag
      • Support for InSigns to show different sign content depending on the player that’s viewing a particular sign
    • Scoreboards:
      • Scoreboards can be created simply by specifying what is desired on it
      • Can be modified via config (if a game allows for it) so you can change the appearance and content of a scoreboard
      • A single scoreboard can be created for a game or multiple can be created to show players different content (e.g. their stats, money)
      • SQL support that can be utilized to show scores/stats for a game on a website

    Contributing:
    You can contribute to the development of this project in a variety of ways.
    1. Provide suggestions and feedback. Feedback and suggestions are very welcome as I'm looking for ways to make this a great library.
    2. Provide code. If you're also a developer, your help may be appreciated. Check out the GitHub repo as linked above and you can potentially provide new code or polish up some of the current code.
    3. Provide graphics. Something I would really appreciate is some graphics for this post (and the future BukkitDev page) to make things stand out more. Feel free to contribute in the comments if you'd like. [​IMG]
     
    NathanG_, Phasesaber, Hoolean and 8 others like this.
  2. Could we preview some code? :)
     
  3. Offline

    Stealth2800

    Lactem likes this.
  4. Offline

    Lactem

    Great library!
     
  5. Offline

    Goblom

    Lactem likes this.
  6. Offline

    Stealth2800

    Goblom Thanks! I'll be sure to take a look when I can. :)
     
  7. Offline

    xTrollxDudex

    Stealth2800
    There's a lot of "Make it simple to do blah blah" and "Make it easy to do blah blah" in your post, is there any other point in this other than "Ease", "Flexibility" and "Simple"? :p
     
  8. Offline

    Stealth2800

    I'll polish up the description later. :)And yes, "This API is being created in order to create compatibility among games using it..." The plan is for it to theoretically run an infinite amount of games on a single server without any problems among the different game plugins.

    The project is still in its early stages so the description isn't my top priority as it will be changing quite drastically most likely.
     
  9. Offline

    xTrollxDudex

    Stealth2800
    You also spelled "GameEngine" like "GameEgine" - Or was that on purpose ?
     
  10. Offline

    Stealth2800

    xTrollxDudex
    It's intentional. "Game" is replacing the "en" in "engine" to create "Gamegine."
     
  11. Offline

    The Fancy Whale

    Is this still active?
     
  12. Offline

    Stealth2800

    Yes it is. I'm starting work on it again after finally catching up with a backlog of private commissions. :) Also, I recently set up a Jenkins CI server and I will have development builds available for use once it's in a working state.
     
    The Fancy Whale and Jake6177 like this.
  13. Offline

    The Fancy Whale

    So glad to hear that! I can't wait and I would love to help test if you ever need it :D
     
  14. Offline

    Stealth2800

  15. Offline

    mr_snake302

    How soon release?
     
  16. Offline

    Stealth2800

    I spent some time updating the descriptions of some of the features listed. They go a little more in-depth now. :)

    mr_snake302 An alpha release will hopefully be available within the next few weeks or so.
     
  17. Offline

    ToastHelmi

    is there some kind of documentation anywhere
     
  18. Offline

    Stealth2800

    I'm currently writing comments on the methods as I go and will write a more structured documentation once it becomes ready. The API isn't currently in a working state.
     
    DeejayArroba likes this.
  19. Offline

    xepisolonxx

    Any idea for a release date?
     
  20. Offline

    Stealth2800

    xepisolonxx Can't get you a date as of now, unfortunately. :( It's still going to be a while, I've been incredibly busy lately and haven't had much time to get more work done.
     
  21. Offline

    TruDan

    Hey, are you accepting collaborators? I'd love to help out with this plugin, since i want to build gamemodes anyway for my server(s) and it would be great if they all used the same system.
     
    madmac likes this.
  22. Offline

    Stealth2800

    TruDan The library is still in its early stages pretty much but you're welcome to contribute wherever you see you can. :)
     
    madmac likes this.
  23. Offline

    Splated

    If your looking for help I'm interested.
    I tried something like this but it got too complex for me to do alone.

    I was trying to build a Muli-world system so each game got its own world copy so it could be destroyed by players and reset back for the next game.
     
  24. Offline

    TruDan

    Stealth2800 well I need to make a full-blown game system for my server anyway, so may as well help out with this project, i find it difficult working alone with large projects such as these.
     
    madmac likes this.
  25. Offline

    Stealth2800

    Splated I see. Well, you're welcome to help wherever you see fit! I'll be hopefully committing some initial code soon so you can take a look at that and see what you can add.

    TruDan Makes sense. :p I'd love any help I can get as you said, it is a large project.
     
  26. Offline

    TruDan

    Stealth2800 awesome, i'll probably just message on skype as its easier
     
    madmac likes this.
  27. Offline

    Splated

  28. Offline

    Stealth2800

    Splated Awesome! I'll take a look at it later today when I have some time.
     
  29. Offline

    mr_snake302

    Any news? How soon beta/alpha?
     
Thread Status:
Not open for further replies.

Share This Page