Resource VoxelGamesLib Alpha - Your all in one solution for creating fun minigames!

Discussion in 'Spigot Plugin Development' started by MiniDigger, Feb 6, 2018.

  1. MiniDigger

    Supporter

    Hello guys, today I present you what I have been working on for quite some time now:

    VoxelGamesLib
    A powerful, feature-packed, abstract and expandable Minecraft minigames framework.


    So what does this mean? Its basically an API that allows you to write minigames with ease since it supports splitting the aspects of a gamemode into reusable components. But its not just an api, its also the thing that plugs it all together, handles world loading (from a world repository), provide storage solutions, provide a way to customize gamemodes without touching code any many more. The idea is that you install VGL and addons (other plugins that provide a gamemode) and VGL allows your server to start new gamemodes (different gamemodes on one server or multiple servers running one mode) without your intervention. Its also fully configurable and supports individual languages for every player.


    Great, I want to start using it! Hold on there buddy, while its possible to create gamemodes and run them right now, I wouldn't recommend anyone in an production environment. I wouldn't even recommend you to build gamemodes with it if you are not looking to contribute (with either pull requests or issues and feature requests) since there are still some rough edges, missing features and hidden bugs.

    I am brave enough to continue anyways! Thanks, thats great! Thanks for trying to help me to finish this thing. Every little contribution (even as simple as "Please include a way to do X") helps, any feedback is greatly appreciated. Currently the CI is down, the documentation is lacking and the CLI tool that should make setup easy isn't finished yet, so I do recommend you to join IRC and my channel (#minidigger, thats also where you get the most up to date status updates (and snarky comments by @electronicboy)) and start a conversation, so that we can work out how you can best help the project. I might setup a discord if ppl want that. You can also leave any feedback in this thread.

    Enough talk, show some examples! Basically, when implementing gamemodes, the idea is that you create a gamemode class that defines phases (https://github.com/VoxelGamesLib/1v.../voxelgameslib/onevsone/OneVsOneGame.java#L26). A phase is a container for features. A phase can have a time limit, a condition to finish and repeat itself. A phase defines and configures a list of features (https://github.com/VoxelGamesLib/1v...voxelgameslib/onevsone/OneVsOnePhase.java#L28). A feature is where the logic of the game is located and its the most reusable component. Want your game to have kits? Add a KitFeature. Random spawns? Set a SpawnFeature. Disable hunger? Add a NoHungerlossFeature (I suck at names, lol). Want players to respawn automatically when they die? Add a AutomaticRespawnFeature. The list of features that are already there is long (https://github.com/VoxelGamesLib/Vo.../voxelgameslib/voxelgameslib/feature/features) and I want to add way more (give me your ideas!). Features can depend on each other. Our OneVsOneFeature depends on the DuelFeature. It prints out the ELO of both player on start and if one player dies, it ends the game and declares the killer as winner. (https://github.com/VoxelGamesLib/1v...r/voxelgameslib/onevsone/OneVsOneFeature.java) Pretty easy, eh?
    Of course this is a really simple gamemode, but it illustrates the goal behind the framework.

    I want to learn more! Thats great, here are some links!
    Github Org: https://github.com/VoxelGamesLib
    Main Project: https://s.minidigger.me/github (gimme all da github stars! :D)
    1vs1 Example Gamemode: https://github.com/VoxelGamesLib/1vs1
    Website/Documentation: https://s.minidigger.me/docs
    Javadocs: https://s.minidigger.me/jd
    Dev build: https://github.com/VoxelGamesLib/Vo...s/voxelgameslib-2.0-SNAPSHOT-all.jar?raw=true
    Discord: https://s.minidigger.me/discord
    Webchat link for irc: https://s.minidigger.me/irc
    mvn repo: https://voxelgameslib.github.io/VoxelGamesLibv2/mvn-repo ( compile group: 'com.voxelgameslib', name: 'voxelgameslib', version: '2.0-SNAPSHOT')

    So yeah, I have been working on such systems for quite some time now (VGLv2 + v1 have over 500 commits, the old system that I used on one of my old servers (https://github.com/MiniDigger/Core) has 900) and I finally want to get this into a state where I can release a version 1.0. So please, drop any feedback you have, any suggestions, any criticism. You might have noticed that I didn't do much since august and that was due to a lack of motivation. I want to pick up work after my current exams again (last one is on friday next week), and all your comments allow me to gain more motivation and power to finally get this thing ready.

    Thanks for reading this wall of text and considering to help grow the project.
    ~MiniDigger
     
    #1 MiniDigger, Feb 6, 2018
    Last edited: Apr 10, 2018
    • Like Like x 11
    • Useful Useful x 2
  2. electronicboy

    IRC Staff

    "Snarky comments" psh. Also, FIX YOUR OWN JAVADOCS!!!!!!

    Was wanting to contribute a while back, but I never managed to get an environment up and running, nor are minigames really my area of expertise, but it looks like an interesting project ^^
     
    • Agree Agree x 1
  3. This looks honestly awesome, potentially you could even have a centralised website with documentation upon it, and potentially an area where people can download minigames and submit them from your API.

    Looks really cool tho, can't wait to when we can properly use it in a production environment.
     
    • Friendly Friendly x 1
  4. Implement a CDI like Google Guice to help with your modules and the overall design is underwhelming due to the massive amount of boiler plate
     
    • Like Like x 1
  5. A few more examples of using the API would be nice. And how does the API Handle bigger gamemodes than a simple duel plugin? And are there feature or events (PlayerVoteEvent...)?
     
    #5 Bagga, Feb 6, 2018
    Last edited: Feb 6, 2018
    • Like Like x 1
  6. MiniDigger

    Supporter

    that would be the plan. have a list with all features, phases and gamemodes and links to them.
    guice is already inbuild, there is an open issue for allowing addons to define their own guice modules, not entirely sure how I want to implement that.
    it defines a few events (https://i.imgur.com/JecYs7x.png) and also a filter mechanism so your event handlers are only called after passing a filter. a typical filter would be that the player that triggered the event is in the game that your feature is attached too. (thats why you see @GameEvent and not @EventHandler over most eventhandlers in the features that are currently up)
    ill get more complex examples up once I am actually working on this again
     
    • Like Like x 1
    • Friendly Friendly x 1
  7. clip

    Benefactor

    Looks good mini digger. Proud of you baby
     
    • Friendly Friendly x 1
  8. MiniDigger

    Supporter

  9. This looks great, I will definitely be following the development!
     
    • Agree Agree x 1
  10. MiniDigger

    Supporter

  11. Pretty interesting! definitely gonna help you :)
     
    • Friendly Friendly x 1
  12. MiniDigger

    Supporter

    #12 MiniDigger, Feb 7, 2018
    Last edited: Feb 26, 2018
    • Like Like x 1
  13. MiniDigger

    Supporter

  14. MiniDigger

    Supporter

    since a lot of ppl who are interested in the development of this project I setup a discord where you can follow the development: https://s.minidigger.me/discord
     
    #14 MiniDigger, Feb 26, 2018
    Last edited: Feb 26, 2018
  15. +1 for using Mineskin! <3 :D
     
    • Friendly Friendly x 3

Share This Page