The very basic BASIC client


Sometimes we need to step back 2 times to move 1 step forward. This is one of the reasons why I'm currently developing the BASIC client in parallel.

I was already planning to make a simple client in BASIC. Not as a replacement for the main TRSE client, but as something different. As a proof of concept, and a reference implementation what others can study and replicate easily on their systems.

Why BASIC?

Because it's the slowest and most limited language on the C64. If all of this can work in BASIC, it can work on anything ๐Ÿ˜‰

And this way I can prove the V8id protocol is simple enough that literally anyone can implement it. You don't need assembly. You don't need fancy programming languages. You don't have to be a coding wizard ninja. Just a few lines of BASIC and you are connected to the world.

The minimal client

Now the whole thing is about 100 lines of BASIC code. It does the handshake, sends the client capabilities, and can receive responses from the server. It runs at 300 baud through RS232, character by character.

Yes, it's slow and it's simple. But it works!

Currently the code can:

โ€ข Open RS232 connection

โ€ข Sending the "8BIT" handshake (and waiting for "RULZ" response)

โ€ข Sending client info command with baud rate, encoding, and case sensitivity

โ€ข Message protocol handling with length bytes and terminators

โ€ข Basic error handling

Currently it's not a game client. It's more like a networking debug tool written in BASIC. But that's exactly the point. I'll add the new features continuously. Like world data display, etc.

Making it public

I've decided to put all of this on GitHub as an open source reference. The idea is that developers from other 8bit platforms can look at it and say "ok, now I understand what's happening here, I can do this on my Apple II" or Amstrad CPC or whatever machine they love.

The repository will have the BASIC source code,  the documentation about the protocol, detailed explanation of the message format, and possible tips for adapting to other platforms.

Because V8id is not for the C64, it's for everyone. Any 8bit machine, any client, any language. There is no official client. This should be just the starting point.

Real hardware compatibility

It should work on real C64 hardware with a WiFi modem. I'm using my cheap ESP8266-based adapter what you can build for like $5. 

I only hope it works fine, because most of the time I'm testing everything in VICE emulator ๐Ÿ˜

Speed considerations

At 300 baud we can send about 30-40 characters per second. It's not much, but for a text-based minimal client it's enough. Faster machines can use higher speeds like 2400 baud or more. 

The beauty of this is that the protocol doesn't care. It works at any speed. The client controls the communication in a request->response model.

What's next?

After I clean up the code and write proper documentation, I'll make it public on GitHub under some free license. Anyone can use it, copy it and modify it for their own platform.

This is the real spirit of V8id. Not a game with a single buggy and shitty client, but a world with infinite possibilities and with real crossplay.

If you're interested in making your own client for your favorite 8bit machine, stay tuned. Github link and the code is coming soon ๐Ÿ˜‰

And maybe together we can build something really special here. An actual crossplatform 8bit MMO where a C64 player can meet someone on an Apple II, and they both exist in the same world. And Spectrum users are welcome too ๐Ÿ˜‰

Sounds impossible? Well, we'll see ๐Ÿ˜„

Big projects need big ambitions.

And Youtube videos too  

Get V8id

Leave a comment

Log in with itch.io to leave a comment.