News: Z-Net v1.2 Beta and Z-Band

Tuesday, May 21, 2013

As mentioned previously, I released the ZNI v1.2 Beta on IRC. Ever since then I've been waiting for bugs to pile up before I try fixing any of them. This left me with some time to fill. I want to remain interested in working on the project, but doing so is hard when theres nothing to do. So I decided to get a jump start on my Z-Band revamp early. I'll discuss this later.

While I was working on Z-Band, circumstance brought up the topic of security for ZNI again. People abusing/looking for holes in ZNIs protocol hasn't been a problem yet, even now. But I don't want it to ever be. I've tried and failed to learn about implimenting encryption for the protocol messages 2 times before. The problem seemed to be that when encrypting messages, sometimes the characters for "\r", "\n", and "\0" would come up and pose problems. It seems to me that other people don't have these issues and can send those characters over IRC just fine. I don't know how though. Encryption among many things, I'm just not comfortable with, to the point of not even beginning to know how to solve an issue like that. While I have since discarded it, growing fed up with that issue halting progress, I decided to use a character substitution method for those characters. It wasn't a pretty work around, but it did work. I was finally able to move forward.

I soon realized though that encrypting the protocol messages alone wouldn't solve all my security concerns. I guess this is something I couldn't realized until I got to this point. After a lot of thinking I begin to realize what it is I truly wanted to protect. It's not the contents of the messages. It's the validity of the messages, and that's it. What I mean is, it doesn't matter that people know you selected a certain game or whatever if they can see the protocol messages. All I'm concerned with is for people not using ZNI to not be able to generate their own protocol messages, and potentially disrupt legitimate users. My original idea was that I had to hide the protocol messages to conceal their format to accomplish this goal. But I don't.

After more thinking I realized I needed a signature style setup instead. A signature setup being a encrypted code that marks the message as being a valid ZNI message. It took a bit of thinking with my newb brain when it comes to this stuff, but I figured out how I want to do the signature. I won't go into any details about it, but I had to go through several revisions before I felt it was good enough for my goals.

Any security measures I'd take wouldn't be perfect. Even if I wasn't a newb to all of this stuff. But I'm confident enough that my work is good enough for now. Average users won't be able to disrupt things by faking protocol messages. Real hackers, well, who knows. They're slowed down at the least.

I'll need to test things a little more, privately, before releasing this next Beta. I hope it goes well though.

Onto Z-Band. As I mentioned, I decided to work on Z-Band more while I was waiting for ZNI bug reports to pile up. Over the years I've revised the code many times as my skill has grown. But I've never been all that close to 100% happy with it. Z-Band doesn't support every game or version of ZSNES. I have to add such support manually. And with the code the way it was, doing so was a chore as well as messy. I've been wanting to revamp the code to a more generalized core function that requires minimal code additions to add new support. It's kind of difficult to generalize code when different games/emus require different code, but I've mostly done it! Again I won't go into details about the code itself. But after accomplishing that, I decided to test how easy it was to add new games.

Since the latest revamp, I only really had Super Mario Kart working. I worked on other games years ago, like SF2, GWED, and Tetris Attack (I thought I worked on Bust-a-Move but I remembered wrong), but those games weren't working with the new code. After a bit of work I added support to SF2 to the new generalized function. Then support for GWED to it as well. Tetris Attack however was the first game I could easily add due to the work on supporting GWED. It really was quite easy.

Now at 4 supported games, I wanted to see how well this generalized code revamp would work with completely brand new games. So I went at it, and easily added support for 4 more games, each taking maybe 15-30m, if even that long! I won't mention the 4 new games though. I'll save some news for later! =) And I just may not want to support them for some as of yet unknown reason.

Now with 8 games supported, I'm quite happy with the state of Z-Band's client side code for now. Progress with the client side code further puts a need on the server code needing advancment. I still don't feel like working on it though. I really want to leave this project for someone else. But doing that creates a roadblock in ever seeing this released.

So I decided to try an old idea I had for the Z-Band server. A IRC bot. It's not pretty, but it can do something. I already had the code posting results to the channel, for testing. It wasn't much to have this pointing to a IRC bot instead. A IRC bot only needs to confirm and log match results really. I'm quite comfortable with mIRC scripting, so its easy to create a basic bot with it for this. As is, this would just be used for tourneys, and require an official. The official would just review the log and announce round winners and pairings himself. I'm not to happy with this setup. Requiring to much manual attention and adjustment to me kind of seems to defeat the purpose of Z-Band.

As things are with Z-Band now, I'll have think about things more, and make things less manual, one step at a time. But the more I do, the more I'm working on some sort of server code, which I don't like. mIRC scripting or not. I want to stick with client code and that's it.

I don't like the idea of just supporting tourneys though. Z-Band was thought of for the purpose of rankings. I don't like the idea of handling rankings with a IRC bot though. Tourneys are fine, as the IRC bot no longer needs to be there afterwards. But rankings require the bot to be there almost 24/7. And is no different then the issue of requiring a central server, which the ZNI code attempts to resolve. While I am connected almost all of the time, I don't want it to be required for me to always be so in order Z-Band or ZNI to function. For now though, I might have to. Just to see the project move forward. And just require for people to understand that rankings would only change if my bot is present, it may be offline randomly, and they will just have to live with it.

What things I decide on to move forward, I have no idea. Atm I just know I'd prefer to have a php server, but I don't want to maintain it. A IRC bot would be easier for me, but I'd rather not maintain it either. And I know I need a server, period. For the ZNI website/forums, Z-Band php server, a IRC bot, or whatever.

As exhausting as these Z-Band dilemmas are, I'm still happy with the progress with the client code! =)

News: Z-Net v1.2 Beta, and Other Projects

Sunday, May 12, 2013

Yesterday I released the first draft of the Z-Net I v1.2 Beta. I'm so happy it's finally at this point! It's been a long 3 months of work, and every time I thought I was finished, after a break for a few days I'd suddenly come back with more to do. It eventually seemed like this would go on forever and I'd never feel I was truly done. lol.

Looking back, it's funny how I started this next version working on purely the most minor of things. Things I felt wouldn't take much coding, time, or that weren't that big of a difference. I soon found that after my work on my IRC client and ZN3, as messy as the ZNI code was/is it was more comfortable to work with. This was due to it being more familiar and refined already, requiring less hassle to do anything with in part to the familiarity and thanks to my increased skill gained form my IRC client and ZN3.

At this point, it's hard to say how much I've gained this path few months. It's probably more experience than skill. Few things really gave me any amount of challenge or required me to delve outside of my comfort zone. Those cases are when I learn the most. However, with what I've done I've certainly improved in some areas as the most difficult to work with areas of the code from last year, are now a lot less daunting and much easier to understand. In fact, a lot of such code was completely rewritten and of course majorly improved. As things stand now, I don't think I any longer feel that some part of the code is the amount of headache I would have though it was a few months ago.

With my new outlook on the ZNI code, I still can't say what my interest in it will be for the future. I have no idea if this is going to be the last major update or not. I think I can say I'm much more willing to make small updates though to address issues. But it's very likely most of my effort will be going into other projects once ZNI is out of beta.

I still want to work on ZN3. And even with my most basic ideas for it, it will replace ZNI. I only stopped it because the work was so challenging for me, that it was draining my motivation. Well, that more beat me down until I got it to a point were I realized I wanted to completely scrap an idea I had already worked on a lot. It was then that I decided I needed to take a break from it.

Z-Band has been on my mind again like it often is. My work a few months ago on re-adding the Z-Band code to the Z-Net I code was a major step for that project in keeping it accessible. After 3 months of code changes to ZNI, a few days ago I tried to see if the code would still compile for Z-Band, and sure enough with few tweaks it does. As far as I can tell it still works, though atm I cant test it since I don't have the server code setup. Speaking of the server, as usual that's the real issue with that project. I don't want to work on the server code myself. I've really been wanting someone else to join the team and take the reigns on that. Sadly its seeming like that is never going to happen. So I'm realizing more and more all the time that I'm just going to have to push through as much as I can, and work on the server code myself to ever have any chance of the project seeing the light of day. But besides the server code, there's another issue with the server. The server itself. If I ever hope to have the project used publicly, free hosts won't cut it. The websites don't generate enough to pay for a real host, so even if the server code was refined well, I'm always going to have that fact in the way.

Looking forward, after ZNI v1.2 is out of beta, I think Z-Band is what I'll be working on again, for however long. I would like to refine some of the client code. Maybe add a new supported game, or something. I would really like to at least get it to a point were I can demo it, in a video, with select users, or maybe even a release. My thinking is that maybe getting the project out there more, in a more tangible way will help interest in it, maybe spark some server funding, or interest from a potential server dev.

Well, in closing I'll mention the Z-Net I v1.2 Beta again. It's semi public right now. I thought about doing a semi public beta like I did last year, requiring forum membership. But I figured I'd try something a little different. One of the big new features of this version of ZNI is the chat lobby. My hopes is that finally we will be able to start seeing a real community developing around group chatting. While not perfect sense, it makes sense to me that the release of this beta should focus around such a chat community and be released in the IRC channel. I guess my hope is that coming by the IRC chat room will hopefully help further jump start such a community ahead of the full version. I probably should make it a requirement to actually talk, as it's quite rude just to join, type the trigger, download the beta then leave without saying anything. Even more so when I actually catch such users on and say hello, just to be ignored. But such a requirement would be to limiting. It's going to be a delicate balance trying to get enough users who can/will actually help test it, but also limiting it from being used by to many people before its ready to handle them.

Check out my post on the Z-Net website if you want to know more about the beta, how to get it, and help.

Z-Net I v1.2 Beta Info

News: Z-Net I Status and Other Stuff

Tuesday, May 07, 2013

It's been almost 2 months since I've updated this blog. I'm still active on my hobby projects, mainly Z-Net I. Normally I'd have posted progress updates for it here. But I decided that I'd post them on the Z-Net I forums instead to help draw traffic and discussion. Well, that didn't really work out to well, but oh well, I tried.

Since my last news update, it seems I dived more into Z-Net I than I planned. Instead of just adding small things and tweaks, I've gone and changed a whole lot! Z-Net I v1.2 is going to be a big upgrade over v1.1 and zbattle!

I'm not finished with it yet, but I'm not likely to add anything more other than tweaks and fixes. I've begone personally beta testing it more recently and hope to ramp that up as much as I can to iron out as many issues as I can. It's become a release rivaling the scope of the first release, and is now needing about the same quality of testing or more. There's just to damn many changes!

I'm not going to list everything, but here are some of the bigger changes:


Much more modern GUI, consisting of a toolbar, cleaner look, etc.
New window for managing the feature previously named the "Black and White Lists".
Much faster speeds for the Download feature. (Testing shows at least up to 8x faster so far.)
Chat Lobby window. (When turned on by a Moderator.)
Region column and setting.
In client moderation tools. (Means moderation is less of a pain, so more moderators are likely to stick with the job, and actually do it at all.)
In GUI option for toggling UDP/TCP.
Info bubbles for guiding new users through the setup and basic use of Z-Net I.
Chat improvements, like colors, timestamps, logging, copy/pasting, URL hotlinks, etc.
Option presets for game room titles. (For when 1 game isn't enough.)
There's much more in this update, mostly consisting of fixes/tweaks. It should prove to be a much liked improvement over zbattle that people have been waiting years for, or that new users will find much more comfortable. I've gone to great length to keep the project as close to as simple as possible to use as zbattle was. And possibly make it even simpler when I can.

In other news. I'm posting today because its my bday, and normally I'd like to release something, in some form or another. But I just don't have anything ready. Every time I think I'm done with the next ZNI update, I take a break for a few days, then come up with tons more I feel I need to add. ZN3 has been shelved since work resumed on ZNI. The website issues have kept me from getting interested in improving them. I have at least worked hard on improving hits to the Z-Net site and its ranking in search engines. The Z-Net site has almost caught up to this blog now in total hits!

I've recently begone learning 3D modeling again. So far I'm learning better then before, and its actually getting fun. So I hope I can do something with that soon that's worth releasing in some form. Like desktop backgrounds, character or armor models for some game like Skyrim, attractive graphics for these website, or something else entirety.

What else....

I'm moving my main to a different server on WoW next week. Big deal to me. Wow has gotten pretty boring lately. I want to raid, but my server is dead. Recruitment is a pain in the ass, and when you actually do get people in your raid, they usually suck. I'm moving from Baelgun to Hyjal. Hyjal is the #2 PvE Horde dominated server. The number 1 was a different time zone and is overpopulated to the point were it can get server ques. The auction house has cheaper and more stable prices, and trade/general chat is MUCH more active. I'm moving with my guild, and we hope to do recruiting once there.

Thats all for now!