News: Z-Net I and Z-Net 3 Status

Saturday, June 22, 2013

Since my last post I've been trying to keep busy. ZNI obviously is giving me mixed feelings. Since that post the population just fluctuates wildly. There have been several days since then were I've seen 20+ users, but the population just isn't attaining a quality stable average. As much as I want to see it hit 30 users, a stable average of 20 would be nicer for now.

While I'm not ready to call it quits on the project yet. Even if I was, I still would want to fix the current issues first. But sadly that's a waiting game, and data isn't coming in to quickly. So I need to pass the time somehow.

How I've decided to pass the time is resuming work on ZN3. The way I left it off, it wasn't even in a state were I'd even consider the project underway or could label the progress state. Because what I did have I felt I could scrap at any time. And well, I did just that. I started over. I decided to scrap some ideas that were just slowing me down to much. One being the use of non-dialog windows. I felt it would be good to break away from the crutch of dialog windows, and learn more about creating normal windows. But I was finding it was to involved to do what I'd want, knowing how simple it would be using a dialog frame. Since switching to dialog windows things have gone much more smoothly/quickly. The project is still going to take awhile due to all my goals for it, but its nice not having unnecessary aspect slowing it down even more then it needs to be.

The other thing I've abandoned, at least for now, is the custom window skin. After completing work on the titlebar, titlebar buttons, and border frames, I gained a fairly decent idea of how much work its going to take to achieve all my goals for a custom skin. I'm sure I can do it, and that what I learned from that would help the rest go more quickly. But it was exhausting. And it was keeping the project from even being anything more then a demo window with a half finished custom skin. Certainly not anything resembling a netplay client.

I figured, custom skin or not, I want something useable as a netplay client soon to even feel like the project was underway. So with a bland GUI, I have made progress on just that!

I was able to transplant the IRC code into the new ZN3. Created a few windows. Then started linking them all together to do something. It's now working fairly well as a basic custom IRC client. I've certainly progressed passed the ZN3 version that I scraped. ZN3 now has its main window functioning like I envisioned. The message windows now look and work better. I started work on addon support. In fact, I have 2 addons that themselves are very usable and probably about 90% done compared to the final version they will end up as. I knew it wouldn't be hard, which is why I was putting it off till later. I just felt I needed something to work with to get aspects of the main program dialed in.

It's crude, but I have those addons launching netplay with emus as intended, but from test buttons. Not from how they will be launched in later versions as intended. They even supply info like icons/avatars, irc channel name, etc. Things are loading dynamically from addons just how I want it.

I even added some basic support for displaying images in the chat window buffer, like for smileys. lol.

Well, now that I have ZN3 at this point, in addition to feeling like the project is actually underway now. I can now refine my ideas and more accurately see how they can apply to the program. To the point were I can now confirm for certain how some aspects are going to be.

I've probably stated it elsewhere before, but ZN3 is going to resemble a IM client more. With ZNI/zbattle, the main window was a game room list. With ZN3 the main window is a name list. Kind of like a IM clients "Friends List" window. ZN3's main window will have a friends list, but this is also where the names of users are who are also in the channels you are in. The layout is a tree control (like a standard folder select dialog, except better). Each main branch represents a supported emu. Sub items in that branch can be different things. Generally though the sub items are a list of names in the default channel for that emu. Default channels will be given for every supported emu, hard coded in the addon. These will be English rooms targeted at everything to do with that emu. While not fully implemented yet, the current plan is for users to be allowed to make sub channels. Generally these would probably be different language channels, or perhaps channels for specific games or communities. I'm undecided right now if sub channels will have to be approved to be used, or can be joined freely.

Anyway, double clicking a channels name on this list will open its chatroom. Double clicking a users name anywhere in this entire list will open a private message window with them. While a ZNI type of game room list/game room setup isn't decided on yet, PM windows will function closely to a game room window in that, from it either user of the conversation can select a game supported by any of the supported emus. That user will be marked as host. The other user will have the option to accept playing that game with that user, and will be marked as client if he does. The emus will then load and connect. The process is somewhat reversed compared to ZNI in that the client would essentially be pressing the start button. But it makes sense. If there is something resembling a ZNI game room list, the game between these 2 users would be listed once underway.

I'm tossing around ideas, but a game room list feature isn't close to decided on yet. To the point it may not have one at all, and instead something else. Rest assured though, I fully intend for there to be some method of easily finding strangers and launching games with them. Strides so far have just been around games among friends, as doing that was easier. At the very least this method can be used among strangers if they talk in a chat room first. But something else can probably be done that's easier for users. My goal is to try to improve upon previous styles of such client if I can, which is why I'm even considering not having a game room list and trying to leave myself open for something else.

At this point, ZN3 has a lot of the basic design done. I need to figure out what to work on next though. My goal atm is to get it to the state of a usable alpha that I could share with testers. There's just so many bits that need polishing for that, I don't know where to start.

Z-Net I hasent seen much worked recently. I need to fix bugs, and diagnosing those bugs has been a slow process. I've made progress with my understanding of some, but only to the point of knowing more about what the cause of a bug isn't. Having to wait like this sucks. I'd like to be more actively solving the issues. I even intended for v1.2 to be out of beta by now, but I can't release it as such.

To attempt to help speed this process up, I've decided go to back to school as it were with my knowledge of C++. Learning informally like I did, I skipped over or missed several aspects of C++, so I never learned to do things, or not do things. I've realized that my understanding of how to write bug free code could be better, as well as adding error handling in a more instinctual way. I've read a bit, and adopted some of what I've learned into ZN3. Hopefully soon I can start applying it to ZNI, and maybe solve these issues.

On the topic of ZNI, I suppose I should announce something. When I was originally adding/designing the code for Regions, I intended to have a users region listed in the game room list with a flag icon. The code added fine, but I noticed a issue with it that kept me from adding it officially. Even the current released ZNI supports flag icons, you would just have to know how to enable them. Anyway, I scraped the feature due to a ugly display bug. But I recently realized that I accidentally fixed that bug when upgrading ZNI to use a newer version of comctrl.dll. When I resume work on fixing ZNI's bugs, I'll be resuming work on that feature and try and finalize it.

News: Thoughts About Z-Net I

Thursday, June 06, 2013

It seems my last post was premature about my comments relating to Z-Net I. It's starting to seem like the surge in population was just a fluke, and just due to a direct result of releasing a new version. I didn't think much of it the first day that I recently observed a population decline. I figured it could still be an anomaly the second day. And the couple days after that I've accepted the truth. Despite all my efforts. The countless hours of work theses past months on refining and adding to Z-Net I to make it the best possible program it can be, it's all been a waste of time and effort.

It seems no matter what I do, the community is always going to be self destructive. In the past I might blame myself for this. I'd blame the fact that there are currently some bugs that have gone unfixed due to their complexity. But that's not it. At this point, if Z-Net I is a failure, it's purely on the users. To backup this claim, here's a list of how the Z-Net I users hurt the success of this program, and in turn hurt themselves.
  • Leaving Z-Net I to quickly after joining.
  • Not advertizing Z-Net I to other websites.
  • Incorrectly representing Z-Net I to other users.
  • Not posting reports about bugs.
  • Not participating in conversations in the Chat Lobby.
  • Unwillingness to host game rooms.
  • Unwillingness to play different games. (crucial with a low population)

These all play major roles in holding Z-Net I back. These are all out of my hands. You may not view them as a serious issue and think I'm exaggerating things. But you would be wrong. You may think it's my job to tackle these problem, but it's not. Still, despite that I have made efforts to do so wherever/whenever I could. But this is a community dependent/driven program. At its most fundamental level, 1 user needs another user to play with, meaning 1 user is dependent on another. It makes it sound like some sort of scheme, but essentially each users needs to bring in other users to the community. You can't just expect to reap the benefits of the community, but fail to contribute to it in the slightest. At least not at this point when the population is still small.

New users come from 1 of 2 ways. Randomly stumbling upon Z-Net I through search engine queries or web pages/posts. Or from a friend telling another friend. The latter helps the community very little, as often that friend ends up only playing with the other friend, neither talk on the forums/lobby, and only really contribute the most bare minimum to the community (temporarily boosting the user count). The former is where Z-Net I needs help the most, and it contributes the most to Z-Net I's health. Again, you may think that's my job. But with a community driven program, it isn't. Though I still have invested a hefty amount of effort into it anyway. In fact, lets look at what I've done to help boost the communities/populations health.
  • Create Z-Net I to help former zbattle users have a place to play again.
  • Design and manage website.
  • Design and manage forum.
  • Add ballontip guide for new users.
  • Spent countless time on solving the connection issues present in v1.1 and before.
  • Constantly refine the website for higher rankings on search engines.
  • Submit the existence of Z-Net I to many emulation news sites.
  • Paid money out of my pocket so the Z-Net website could have a stable URL.
  • Combed the internet for links to zbattle or dead Z-Net links, and contacted whoever I could to get them changed.
  • Do 100% of the moderation of Z-Net I all by myself.
  • Designed 1 of the new user ballontips to target and remind users to not leave to quickly.
  • Added and refined the Chat Lobby feature.
  • Added several features that help in some way or another, like Regions, Ignore lists, room presets.
  • Made strides, even though ignored, to appeal to/partner with other communities.
  • Recently purged 90% of the ban list, giving past trouble makers another chance.
  • Spent countless hours on v1.2, after declaring before that I was done with ZNI.
  • Listened directly to user requests and made additions to the program.

Of course a lot of this it's natural for me to do as the developer of the program. But that doesn't diminish the amount of work and effort at all. But so you understand my position an how I feel, look over that list and tell ask yourself, if you were me would you feel all that time and effort spent on that would be worth it for the Z-Net I population and community to not grow beyond what you currently see when you log in? All that work these past several months, just to see the Z-Net I population bounce back to were its been? If you don't answer "No", you're lying to yourself.

All my recent work was done in hopes of seeing the the population grow, and community thrive. Not stay the same. So here I am at this point where I'm now thinking of quitting the ZNI project again. What I'm thinking of is, if I don't see the user count hit 30 due to almost all unique users by some date, then I'm done. I might even shut the program down again. It just doesn't make sense to leave it going for user base of which %90 contribute to its own destruction. Or of which the majority feel/act like they're entitled to everything, or are just downright ungrateful.

What would this mean for Z-Net 3 and Z-Band?  I don't know. The community failure of ZNI could certainly represent the same potential for those projects as well. I enjoy programming, but after I finish a release I need to see a reasonible amount of user acceptence for the project, or else all that effort seems wasted. I don't want to deal with this type of situation again.

I'm not ready to declare this 30 users by the end of this month or next month as my official stance just yet. But I would certainly like see the Z-Net I community take it seriously and start working to fix the problems they're creating and meet or exceed this goal.

News: More on Z-Net I v1.2 Beta and Z-Band

Saturday, June 01, 2013

Last Thursday I released the ZNI v1.2 Beta more publicly. Since then, almost everyone is using it now instead of v1.1. It's nice to see that the ZNI population is growing a bit now with it. I can't label any one thing as the cause for the growth, but I have been thinking about the population health with everything I do, and it's nice to see something come of all my efforts.

Sadly, after I released v1.2, I soon realized there were some bugs with the protocol signature code. It's uncommon, but sometimes the protocol messages are signed incorrectly or at least unexpectedly. Other times the signatures remain used past when they should no longer be valid. The latter seems to be just a symptom though, of another bug. A bug that causes users to ping out. This I eventually realized is the bug I need to focus on. But sadly, to many users don't speak English, and/or aren't ready/willing to report the bug in any way so I can have an idea why they pinged out.

Despite that, I have learned about some bugs that cause users to ping out. 2 at least. One I've fixed, the other is unknown. I just know it has happened to another user a few times, and to me once. Normally if a bug happens to me it would lead to me being able to fix it soon afterwards. But I have no clue what happened. I traced things down as best as I could, but nothing stood out as broken, and little info was attained to possibly be able to repeat it.

So the past couple days I've been tackling whatever else that I can while I consider how to proceed forward to resolve these 2 major issues on my list.

One thing I've been working on again is Z-Band. Since my recent core revamp I've been considering what I need to work on next. And several things came up on my list. One is the need to ensure users aren't playing against the computer to raise their score/lower their opponents. So I needed to ensure that the players are in fact playing the versus modes. In addition to that, many versus games have at least 1 form of a handicap setting. It's not fair for the ability of one player to have an advantage like that in such ranked/tourny games. And also, some games have a setting for the game mode that effects the rules of the match. In particular Tetris Attack has a option to change the need for 2 wins to win a match to 1 win. Whether I limit that, or adjust Z-Band, I need to account for it.

I added a mode check, to only check wins if the mode is correct. I added code to freeze handicap settings. And for the rules setting, I added support (at least for Tetris Attack) to either lock the setting, or adjust to it.


Another thing I've been wanting to tackle is the ability for users to change their player number in ZSNES. If for say player 1 became player 2, and player 2 became player 1, Z-Band would begin attributing scores to the wrong people. What I've done for now is lock out player swapping. Later I may just have Z-Band adjust accordingly.

There's still some more issues to work out, but this brings Z-Band even closers to public usability. I almost feel like I could have people using this now.... if I had a quality server to go with it at least.

I still very much enjoy working on this project. It always feels like it has potential to be very big, and users who hear about it are always very positive about it and hopeful to see it released. I really just hope I can get it released before people don't care, or someone doesn't do a poor job of ripping it off like I've seen before. As always though, the server is the real limiter. If I had someone working on the server, I'd be much more willing to focus on the remaining client issues and try to get this project out there. Maybe at some point the client code will be basically done, and all I'd have to work on is the server, making me somewhat more willing to work on it myself. But even if so, I wouldn't have the same drive/enthusiasm to do so as I do the client code.

Anyway, the Z-Band project is getting even closer to release worthy now. In fact, soon I may start sending it to a few testers and get some of my first real intended use of the program. I think I've tested it with another user as intended all of once since it was merged with ZNI last year. I wouldn't doubt that I tested it as such only once in 2008 either. It's certainly more ready now then ever!