Skip to content

Minimum viable product #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
1 of 7 tasks
kory33 opened this issue Aug 5, 2021 · 1 comment
Open
1 of 7 tasks

Minimum viable product #1

kory33 opened this issue Aug 5, 2021 · 1 comment

Comments

@kory33
Copy link
Owner

kory33 commented Aug 5, 2021

This issue keeps track of what to implement / research in order for this project to be minimally useful. This post will be updated according to the progress of the project.

There are mainly three areas to consider:

  • Minecraft server integration
    For testing this library itself, we need a real Minecraft server. We expect the use of service containers for GitHub Actions usage, so it would be nice to have some scripts for initiating test with docker container spinning up.

  • Foundation
    We need to decide on which protocol library to use in order for the tests to communicate with a real Minecraft server.
    AFAIK (in this list, for example) there is no flexible Minecraft bot client framework written for rust, so we will likely be directly talking to the server using low-level Minecraft protocols (we will want to avoid this as much as possible, though). The following are the requirements that has to be satisfied:
    1.1 multiple protocols are supported: we will want to support wider range of Minecraft versions. For this, the library should be active in development.
    1.2 many instances of bots must coexist in a single binary: we want to run many bot clients (with different usernames) at once in order to maximize test execution speed

  • Test harness
    The distinction of test harness and framework is based on this comment. We are not yet certain if the standard test harness is capable of handling our use-case, since tests require a shared setup (creating bot pool with some of bots having admin rights but most of them with plain permissions) which will be used on tests. Some comments like this one suggests that this setup is indeed possible, but we need some testing.

Minecraft server integration

  • write a Dockerfile that:
    • on startup, build a Spigot server (the server itself should not be embedded into the image, for license reasons)
    • optionally re-writes eula.txt to eula=true according to the environment variable
  • write scripts that:
    • builds the Dockerfile, runs it and then run tests against the container.
  • write Actions that:
    • publishes the image above
    • uses the image above as a service container

Foundation choice

Test harness

  • see if standard cargo harness is capable of running our tests (in which case we are done!)
@kory33
Copy link
Owner Author

kory33 commented Aug 5, 2021

Looks like Stevenarella is the only actively-maintained and polished library that features multi-protocol support.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant