N-SoCS v1.5 - README.TXT -------------------------------------------------------------------------------- Welcome to N-SoCS, the Non-Shitty openCanvas Server. This project is freeware and should not be sold. It may be distributed legally as long as this README is included. Yadda yadda, I'm not responsible if this program screws up your computer, your love life, your mom's yoga training, your haircut, or anything else that I didn't mention. I tried to make it safe though, I promise. Project Copyright (C) 2006 to BrokenWing. I love feedback! BrokenWingx9 at gmail (etc.) Table Of Contents: ------------------ I. Introduction A.) Purpose B.) Features C.) What's new in 1.5 D.) Planned features II. So how in god's name do I use this thing? A.) The quick and dirty B.) Got that, what's next? III. Special features A.) Event recovery B.) Extended user mode C.) Layer locking D.) IRC-style commands IV. Epilogue --------------- I. INTRODUCTION --------------- A.) Purpose - The goal of this project is to overhaul the bad behaviors of opencanvas' network capability by making a better server. These mainly amount to: 1.) Heavy resource consumption and instability 2.) A low user limit (strongly influenced by the instability issues) 3.) No ability to recover an image after a crash or as a new connection. B.) Features - To counteract these issues, N-SoCS v1.0 includes: 1.) A very light footprint and much better network handling. 2.) An extended user mode. 3.) Event playback. C.) What's new in 1.5 - N-SoCS 1.5 has a few key new features 1.) Quick (limited) event playback 2.) Administration (kicking, banning, etc.) 3.) Event playback saving and loading 4.) Autosaving 5.) Miscellaneous bugfixes C.) Planned features - At the moment, there are no future planned updates to the program. This is mostly due to time constraints (I have a life, I swear). Naturally, though, any major unforseen bugs will be addressed. However, if I have the time I'd condier implementing the following: 1.) Support for running as a service (this means proper threadedness, etc.) 2.) Channels (such as in IRC), futher IRC-style commands. 3.) A GUI for configuration and display. --------------------------------------------- II. SO HOW IN GOD'S NAME DO I USE THIS THING? --------------------------------------------- A.) The quick and dirty. - Ok, so here's the four step process: 1.) Extract all files included into a folder. 2.) Run oC_Server.exe. 3.) Run opencanvas and connect to 127.0.0.1 (localhost). 4.) Tell other people to connect like you would if you were using normal opencanvas (that is, using your IP or your router's IP, etc.). - That's it. Without any modification to the config file, the defaults will be loaded and you should be on your way. - The default settings are as follows: 1.) non-extended mode (normal oC) 2.) port 9001 (normal oC) 3.) 4 users 4.) 4 layers per user 5.) 2000x2000 canvas 6.) Event recovery enabled 7.) Quick recovery enabled 8.) Autosave disabled 9.) No admin password - admin disabled B.) Got that, what's next? - All the settings are handled within the oc_server.cfg file. If you open this up in your favorite text editor (say, notepad) you'll be presented with a list of options. Edit, save, run N-SoCS, and hopefully your settings will be loaded correctly. - Settings cannot be (presently) changed while the server is running. After editing the file, please be sure to close N-SoCS and reopen it. --------------------- III. SPECIAL FEATURES --------------------- A.) Event recovery 1.) File-based event recovery - A file is generated automatically and all art events that come into the server are logged. When a new person connects, events are played back in the order they were received. 2.) Autosaving - A new feature of N-SoCS 1.5. Turning this on will cause N-SoCS to automatically save then clear all events a certain amount of time after all clients have disconnected (and stayed disconnected). 3.) Quick event recovery - A new feature of N-SoCS 1.5. Instead of saving all events to a file, this mode saves them to memory. - If someone undoes a command (i.e. a line), the old event gets erased and replaced. This means theoretically fewer events need to be sent when synching up. - If a delete command makes it past the undo point for a layer, the events for that layer in memory are cleared. Again, this means fewer events to get up to speed. - The number of events stored in memory is set. This means past a certain number of events old events will start being deleted. Likewise, this is to limit the number of events necessary to get up to speed. 4.) Global rules - File and Quick event recovery can be enabled independently! I recommend enabling both. Using this, one can easily jump right into a group, or manually resynchronize the entire log using the resync command (listed in the IRC commands). - If the person connecting has the same IP as an unused user slot, they will get that user slot when connecting. This is done in hopes of giving a disconnected user back his or her canvas. - NOTE: The one problem with event recovery is that users may not draw until event recovery has finished otherwise they will be out of sync with other users. B.) Extended user mode - Extended user mode can be somewhat complex. This mode will allow more than 4 users to connect, but because of limitations in opencanvas, users will not show up in the userlist. Instead, a user must type /who to see a list of connected users. - The layer setting in this mode will set the total number of available layers. The maximum is 24, which is, again, an opencanvas limitation. - All layers, by default, are available for all users to draw on. This means users may collaborate with others on sketches and single-layer drawings, but also means users may accidentally draw on each other's players. To help with this issue, layer locking was created. C.) Layer locking - This is probably the most confusing new feature. Due to extended user mode allowing for all users to draw on all layers, layer locking was implemented. - Layers may be locked by someone so that actions taken by others will not be visible to the group. That is, you can lock a layer down so you can draw on it, but if anyone else draws on it only they will see the change. - To lock a layer, select a layer and type /lock, or type /lock #, where # is the layer you'd like to lock (starting with 0). - To unlock a layer, select the layer and type /unlock. Or type /unlock #, where # is the layer you'd like to unlock. Or type /unlock all to unlock all layers. - To check the status of layer locking type /lockstatus. - If you accidentally draw on a locked layer, you may either undo immediately, or erase the result. Either way, nobody else will see how you screwed up. D.) IRC-style commands - A few IRC-style commands (i.e. those with a / before them) are implemented in this release. They are as follows: In all modes ------------ 1.) /help: Displays a list of available commands. 2.) /admin password: Login as an administrator. Specify without a password to logout. 3.) /resync [all]: Resynchronize to the current events (force an event recovery reload). Default is to use quick event recovery if it's available. Specify all to use file-based event recovery if it's available. In extended user mode --------------------- 4.) /who: Displays a list of connected clients. This is used in place of the userlist, since oC cannot display more than 4 clients at a time. 5.) /lockstatus: Displays a list of the current status of the layerlocking in extended user mode. This is only useful if layer locking is enabled. NOTE: Layers now start counting at 1! 6.) /lock [#]: Use without an argument to lock the currently selected layer. Use with a number (ignore the []) to lock that layer. NOTE: Layers now start counting at 1! 7.) /unlock [#|all]: Use without an argument to unlock the current layer. Use with a number (ignore the []) to unlock that layer. Use with the word all (ignore the []) to unlock all of your currently locked layers. As an administrator ------------------- 8.) /kick user: Force a disconnect of a particular user. 9.) /ban user: Ban a particular user from connecting to the server (based on IP address only). 10.) /save [filename]: Save the currently stored events to the given filename. If no filename is specified, one will be created in the server's folder using the following template: ec_mm-dd-yyyy_HH-MM-SS.dat where mm = month, dd = day, yyyy = year, HH = hour, MM = minute, and SS = second. 11.) /restore filename: Restore events from a given filename. NOTE: while it's not recommended, it IS possible to load an event file from a non-extended session to an extended session and vice versa. The layers will be preserved, though, so be careful! 12.) /clearall password: Clears all event recovery and starts over. This requires the administrator password! ------------ IV. EPILOGUE ------------ Well, there you have it. Give it a shot. It might seem a bit confusing at first, but I think it should be pretty easy to get the hang of. I'll be fixing a few issues and releasing new versions hopefully in the near future, not the least of which is making extended user mode a bit less obtuse. Please give me feedback - it's the only way I'll know if people appreciate this program! And thanks! -BW