After much revision, we've come to a better protocol, where the server can infer things about the messages it is sending by the opcode and such. The login handshake is also now extremely secure, so you won't ever have to worry about people breaking into the server and stealing your password, or somebody figuring out your password from the information you are sending with a dictionary attack or something like that.
You may also notice that the name of the protocol has changed. This is because we're also trying to couple this as loosely to NullpoMino itself as is possible. In order to have some interoperability between games, we're trying to generalize things so other games can talk with this protocol. For example, myndzi is writing a JavaScript game which will use SPP.
SPP 1.0 Spec
SPP opcode table
I'll have to thank myndzi for his input during this discussion, as his expertise with the IRC protocol (which in turn inspired this one) was very helpful.
NullpoMino Development Blog
The open-source action puzzle game returns!
Popular Posts
Thursday, January 19, 2012
Monday, January 2, 2012
NullpoMino Protocol 1.0 Specification
Here's a rough draft of the network protocol specification. I'm calling it RFC 1 (RFC stands for Request for Comments).
NullpoMino Protocol 1.0 Specification
This is the promised table of opcodes that I've come up with so far. I left some room in the game opcodes area for expansion, and I feel like it would probably be best if we could finalize the design of network games and their communication before this is set in stone.
NMP opcode table
When this proposal is acceptable, I'll begin work on a reference implementation server which uses the protocol.
NullpoMino Protocol 1.0 Specification
This is the promised table of opcodes that I've come up with so far. I left some room in the game opcodes area for expansion, and I feel like it would probably be best if we could finalize the design of network games and their communication before this is set in stone.
NMP opcode table
When this proposal is acceptable, I'll begin work on a reference implementation server which uses the protocol.
Saturday, November 12, 2011
NiftyGUI and NullpoMino
In the past, many people have considered Nullpo to be something that isn't really a game, but is instead just an implementation of everything. A toolbox, if you will. I don't especially mind this, but I know that people aren't going to flock to play a toolbox, and so this time around we are making some heavy-duty improvements to the UI.
To start with, as I'd mentioned before, we are working on integrating a GUI library that will let us make everything look very nice compared to the old version. We're going to be able to have legitimate graphical widgets and fun things like that now, and it's going to be awesome. Right now we're still in the process of integrating it with the game itself, but we already have some basic work on that done. NEURO integration will be next, and I'm going to make sure that it's good so we can use the full power of the plugin system. Those of you with iPhones or Android devices might find the GUI in development to be somewhat familiar... In any case, it'll only be a matter of time before we can continue with functionality.
That is not to say that the framework is complete, because it's not even close (yet).
We still haven't implemented the updated rule system, which should allow greater flexibility in netplay without being unfair, and which will help hide a lot of the junk you don't want to see away if you aren't going to bother tweaking it. Hopefully this will help keep people interested, as even though I'd like to see people be able to understand the game at that level like the regulars, a lot of people just want to play Tetris.
On a tangentially related note, sometime recently, NullpoMino 7.5 passed 25,000 downloads on all platforms (over 20,000 of those were on Windows alone). I'd also like to congratulate Shuey for having viral NullpoMino videos which are now making it to Japanese TV shows. Things are looking good, folks.
To start with, as I'd mentioned before, we are working on integrating a GUI library that will let us make everything look very nice compared to the old version. We're going to be able to have legitimate graphical widgets and fun things like that now, and it's going to be awesome. Right now we're still in the process of integrating it with the game itself, but we already have some basic work on that done. NEURO integration will be next, and I'm going to make sure that it's good so we can use the full power of the plugin system. Those of you with iPhones or Android devices might find the GUI in development to be somewhat familiar... In any case, it'll only be a matter of time before we can continue with functionality.
That is not to say that the framework is complete, because it's not even close (yet).
We still haven't implemented the updated rule system, which should allow greater flexibility in netplay without being unfair, and which will help hide a lot of the junk you don't want to see away if you aren't going to bother tweaking it. Hopefully this will help keep people interested, as even though I'd like to see people be able to understand the game at that level like the regulars, a lot of people just want to play Tetris.
On a tangentially related note, sometime recently, NullpoMino 7.5 passed 25,000 downloads on all platforms (over 20,000 of those were on Windows alone). I'd also like to congratulate Shuey for having viral NullpoMino videos which are now making it to Japanese TV shows. Things are looking good, folks.
Monday, October 24, 2011
And the gears grind to life...
Long time, no see, everyone.
Looks like work is being done again. I have some rare free time now, so I am probably going to be able to get some things done. In the past few days, there has been some work on infrastructure, and we're planning out what we're going to do about GUI elements in order to make the game look like a real game (and generally not have to deal with having multiple windows, for example during multiplayer).
So far, we've included another library (NiftyGUI, http://nifty-gui.lessvoid.com/) that will displace the planned toolkit I was going to write, though we're having difficulty with IME support. That'll be resolved at some point.
In the meantime, watch this space for more news. The Latest Commits box will also give you an idea of what we've been working on.
Looks like work is being done again. I have some rare free time now, so I am probably going to be able to get some things done. In the past few days, there has been some work on infrastructure, and we're planning out what we're going to do about GUI elements in order to make the game look like a real game (and generally not have to deal with having multiple windows, for example during multiplayer).
So far, we've included another library (NiftyGUI, http://nifty-gui.lessvoid.com/) that will displace the planned toolkit I was going to write, though we're having difficulty with IME support. That'll be resolved at some point.
In the meantime, watch this space for more news. The Latest Commits box will also give you an idea of what we've been working on.
Saturday, July 30, 2011
Networking Design Goals
After some good discussion with myndzi, we're closing in on a final specification for the NullpoMino protocol. I'm probably going to drop the dual-protocol idea I'd originally had purely because, as myndzi pointed out, it causes extra points of failure and this hybrid sort of protocol we developed should be able to take care of everything both of my old protocols would have.
The protocol is going to be a lot more generalized this time around, because we're going to have to support things that aren't the game (remember, the plugins are going to use the network communicator to connect to the server as well). We're looking at a protocol that is loosely designed around IRC's protocol, obviously expanded to allow for greater functionality since we're playing puzzle games and not just chatting.
Some of the things we want out of this protocol are:
The protocol is going to be a lot more generalized this time around, because we're going to have to support things that aren't the game (remember, the plugins are going to use the network communicator to connect to the server as well). We're looking at a protocol that is loosely designed around IRC's protocol, obviously expanded to allow for greater functionality since we're playing puzzle games and not just chatting.
Some of the things we want out of this protocol are:
- Decoupling of server and client based on version. Potentially, you can play over lower server versions. myndzi also had the idea of public key cryptography allowing us to update the server based on clients, but we're not sure if this is just wishful thinking.
- Some sort of ascii/binary stuff. This is helpful because it allows us to transfer files without much of a hitch, but it also allows us to pack bits for the game protocol and save tons of bandwidth.
- On a higher level, we want to have better rooms. A while back, myndzi came up with a great idea where we can have channels, where players are in as many as they want to be, and the channels have flags, one of which means that it is a game channel. Rooms will be able to have owners and can be permanent, invite-only, or a number of other things. People will be able to have clan channels, now.
- We want the ability to either send data right away (live data) or wait until we don't have to worry about bandwidth in order to send something large, which could potentially block the socket (bulk data). Before, I'd thought about running a messaging protocol connection for the former and a transfer protocol connection for the latter, but now the server can treat them the same way. The network communicator also doesn't need to use two sockets if it doesn't want to, although it can.
Tuesday, July 26, 2011
Tripping Balls: A Network of NEUROs
Are you ready to harness the full power of the event system? |
Performance issues via NEURO (or lack thereof?)
Hey all, it's been a while. Sorry I haven't been able to post much lately, but I've gotten busy and design work is slow right now.
In any case, some people expressed concern that NEURO might have an impact on the performance of NullpoMino. I don't know if this is true yet, because we only have two real plugins written for it so far and they don't interact much. As it is, I'm writing NEURO Light as a sort of pre-emptive counter to this. However, there is something that I will be able to put to rest.
NEURO does not add input lag. Not even one millisecond.
I tested this just before, since I'd feared that it might do something like that due to the reflection-based nature of the system, and many people say reflection is slow. However, this turned out not to be the case. NEURO happily passes along the events, and things are just fine.
The next few posts I have lined up are going to be about the new rule system and possibly the networking protocol, although the latter is kind of in debate right now as I'm trying to decide which approach to take.
In any case, some people expressed concern that NEURO might have an impact on the performance of NullpoMino. I don't know if this is true yet, because we only have two real plugins written for it so far and they don't interact much. As it is, I'm writing NEURO Light as a sort of pre-emptive counter to this. However, there is something that I will be able to put to rest.
NEURO does not add input lag. Not even one millisecond.
I tested this just before, since I'd feared that it might do something like that due to the reflection-based nature of the system, and many people say reflection is slow. However, this turned out not to be the case. NEURO happily passes along the events, and things are just fine.
The next few posts I have lined up are going to be about the new rule system and possibly the networking protocol, although the latter is kind of in debate right now as I'm trying to decide which approach to take.
Subscribe to:
Posts (Atom)