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.

0 comments:

Post a Comment