Development Suggestion: Open the Net Protocol

    Joined
    Apr 22, 2014
    Messages
    11
    Reaction score
    3
    Greetings!

    I don't know how many programmers do we have in this forum but, besides native modding, there could be a similar approach to the one taken with mineflayer. Mineflayer is a node.js package that allows the creation of non-native minecraft bots through the use of javascript code and a minecraft protocol (reverse engineered). For UT2004, there is a similar framework called Pogamut, that makes use of GameBots (takes care of the network messaging).

    What I would like to suggest is that StarMade devs open the Net Protocol (or part of it) in order to easily experiment with AI prototypes in StarMade. That way, the AI devs could experiment with, for example, advanced multi-agent system prototypes without overloading StarMade servers. And, additionally, you could delegate mob AI routines to certain clients.

    For a detailed description of minecraft protocol, visit this site.
     
    • Like
    Reactions: NeonSturm
    Joined
    Jan 22, 2014
    Messages
    1,047
    Reaction score
    299
    While I see your point, I believe this is a redundant suggestion. As far as I understand it, a client-side modding API as well as a server side scripting API were both announced.
     
    Joined
    Apr 22, 2014
    Messages
    11
    Reaction score
    3
    An API is different from a protocol. If you know the net protocol, you can use whatever languages and tools you have, as long as you respect the net protocol, when sending messages. Note: the last phrase assumes that we are talking about things like, for example, java library APIs. For REST and SOAP APIs, that's a "different" beast.

    I guess that the main issue with it, right now, would be the security problems it might cause.
     
    • Like
    Reactions: NeonSturm

    NeonSturm

    StormMaker
    Joined
    Dec 31, 2013
    Messages
    5,110
    Reaction score
    617
    • Wired for Logic
    • Thinking Positive
    • Legacy Citizen 5
    I would prefer a language similar to Haskell (http://haskell.org, http://learnyouahaskell.com) (http://starmadedock.net/threads/what-do-you-think-about-haskell.657/)


    For small things, there could be a pattern-based solution like:
    Code:
    context rfc000
      8 1b type as unsignedIntegral
      1 1b dlt as boolean
      dlt = 0 : 7 1b dataLength as unsignedIntegral
      dlt = 1 : 15 1b dataLength as unsignedIntegral
      dataLength 1B data :
        Type = 0 : context rfc000
        Type = 1 : context data
    context data
      ...
    
    # access bit(1b..8b) and byte(1B..4B) -sequences via "stream".data.data :)
    # code to dump that dictionary to a file/stream
    Such a config file for a code-generator (loops, caches, what is what) would allow easy access to variables without having to manually write (messy and non-optimized/cached) code to access values from Java, C++, Lua, Haskell, etc...
    We would just need a wrapper for this generator then (read bits or bytes given to the program (for a number representing an available name) as boolean/int/...)