JazzJackrabbit Community Forums

JazzJackrabbit Community Forums (http://www.jazz2online.com/jcf/index.php)
-   General Jazz Jackrabbit Talk (http://www.jazz2online.com/jcf/forumdisplay.php?f=4)
-   -   Jazz 2 dedicated server project (http://www.jazz2online.com/jcf/showthread.php?t=15799)

Grytolle Feb 17, 2007 07:21 PM

*frowns at Jerry's sexual invitation*

Jerrythabest Feb 18, 2007 02:16 PM

ehh :H :p


any progress lately?

Dermo May 12, 2007 11:38 PM

features
 
i think something like private messaging to certain players would be cool and not so difficult from the server end. the server just chooses the socket ID to send the packet out to and that's it. Make it something like if you want to PM player 7 and you're player 1, press "t" and type "/7 (message)" without quotes or parenthesis

i also think (a more difficult feat) would be the ability to host under a different port for router users who aren't allowed to open up 10053 for jj2. The reason this would be difficult is because it would be nice if the receiving end didn't require a "PortPatch" to join. Uh this i kno is possible but i'm too tired to think of how since it's 3:30am sunday morning.

Another not so easy feature would be the ability for 33+ players to join. Don't ask i don't know how that would be done.

Another semi-difficult would be the ability to only allow a user inputted number of downloaders at a time to prevent flooding/crashing.

As a console app i would like it to not operate on strictly command lines because that's too confusing. Make it start up

"Welcome to Jazz Jackrabbit 2 Dedicated Server"
"Please input your gametype (ctf, battle, treasure, coop, or race)
"please input the maximum player number"
"Load custom game mode? (1=true, 0=false)"
[if true] "Please type in the custom game mode you would like to load (i don't know)"
"Log chat (1=true, 0=false)"
"Allow Private Messaging "
"number of hearts"
"number of kills to win"
"server name"
"at this time please type in the file names of any plugins you'd like to load at this time or press enter to start"
"plugin serversync.dll loaded"
"server running"

Neobeo May 13, 2007 12:27 AM

Quote:

Originally Posted by Drmoo (Post 404623)
i think something like private messaging to certain players would be cool and not so difficult from the server end. the server just chooses the socket ID to send the packet out to and that's it. Make it something like if you want to PM player 7 and you're player 1, press "t" and type "/7 (message)" without quotes or parenthesis

This isn't too difficult. In fact this could also work with clients PM-ing other players.

Quote:

Originally Posted by Drmoo (Post 404623)
i also think (a more difficult feat) would be the ability to host under a different port for router users who aren't allowed to open up 10053 for jj2. The reason this would be difficult is because it would be nice if the receiving end didn't require a "PortPatch" to join. Uh this i kno is possible but i'm too tired to think of how since it's 3:30am sunday morning.

From the server's point of view, this is much easier to implement than the idea above. And there is no way for the client to join other ports without some kind of patch since the value 10052 is hardcoded.

Quote:

Originally Posted by Drmoo (Post 404623)
Another not so easy feature would be the ability for 33+ players to join. Don't ask i don't know how that would be done.

This is not possible, for various reasons such as the range-checking done by clients, and the fact that memory is allocated just enough for 32 players.

Quote:

Originally Posted by Drmoo (Post 404623)
Another semi-difficult would be the ability to only allow a user inputted number of downloaders at a time to prevent flooding/crashing.

I don't see a link between downloading and crashing, but in any case this is a pretty trivial follow-up. It appears this is a bug in the way Jazz2.exe handles downloading. This should not happen in a properly designed server. Nevertheless, there will probably be options to limit the bandwidth usage and stuff.

Quote:

Originally Posted by Drmoo (Post 404623)
As a console app i would like it to not operate on strictly command lines because that's too confusing. Make it start up

"Welcome to Jazz Jackrabbit 2 Dedicated Server"
"Please input your gametype (ctf, battle, treasure, coop, or race)
"please input the maximum player number"
"Load custom game mode? (1=true, 0=false)"
[if true] "Please type in the custom game mode you would like to load (i don't know)"
"Log chat (1=true, 0=false)"
"Allow Private Messaging "
"number of hearts"
"number of kills to win"
"server name"
"at this time please type in the file names of any plugins you'd like to load at this time or press enter to start"
"plugin serversync.dll loaded"
"server running"

That would defeat the whole idea of it being a command line program. Ideally, it should just start without requiring the user to further input any information. This would most likely be done with the combination of command-line and an INI file.

And aside from all that, custom game modes (or even the official ones) will be converted to "profiles" which contain, at the minimum, the base game mode, and some sort of script.

Dermo May 13, 2007 06:39 AM

Quote:

Originally Posted by neobeo
This is not possible, for various reasons such as the range-checking done by clients, and the fact that memory is allocated just enough for 32 players.

that i can see (make a jazz patch with the dedicated server that allocates more memory to each client)

Quote:

Originally Posted by neobeo
It appears this is a bug in the way Jazz2.exe handles downloading. This should not happen in a properly designed server. Nevertheless, there will probably be options to limit the bandwidth usage and stuff.

good...

Quote:

Originally Posted by neobeo
That would defeat the whole idea of it being a command line program. Ideally, it should just start without requiring the user to further input any information. This would most likely be done with the combination of command-line and an INI file.

And aside from all that, custom game modes (or even the official ones) will be converted to "profiles" which contain, at the minimum, the base game mode, and some sort of script.

then make it a windows app with a UI and everything. I don't really like the idea of a console app.

FQuist May 13, 2007 06:44 AM

If the console app is designed well you can always create a GUI app to control the console.

Grytolle May 13, 2007 08:32 AM

console > GUI

anyway lets recode the dedicated server in msl for minimum portability and slowness

Torkell May 13, 2007 11:07 AM

Quote:

Originally Posted by Neobeo (Post 404624)
That would defeat the whole idea of it being a command line program. Ideally, it should just start without requiring the user to further input any information. This would most likely be done with the combination of command-line and an INI file.

You could keep it as a normal command-line program, but have a parameter to run in interactive mode.

Jerrythabest May 14, 2007 09:07 AM

The idea of an INI file is good, you can easily save setting profiles by renaming the INI file ;p. I don't like command line stuff, you could at least make it possible to add a GUI plugin (and you *could* include it with the console).

Cpp May 18, 2007 11:01 PM

Personally I'd focus on the engine/system itself as the root of everything else. The console and/or GUI can be later made as an extension. Most people would prefer a nice GUI, but console is also a must for "low-level" admins. Think of it this way... new users would love to have an easy-to-use interface (like Controller v4.1), but to fine-tune the server with advanced features you'd have to consult the console. And if you ask me, I'd make something like Q3A/UEd console, not the DOS one.

Dermo Jun 4, 2007 12:21 PM

(PA) anybody with (FTG) would make it a Windows Console and not a DOS Console.

[Personal attack and flame tag edit. - FQuist]

Jerrythabest Jun 13, 2007 07:03 AM

Next is he'll remove your account XD

lol just spamming ;p


To give this post some value, IMO the first released version should already give the possibility to manage the whole server in a GUI, no matter how this is done ;p not everyone knows how to work with command lines, y'know ;p

Grytolle Jun 13, 2007 08:04 AM

what's so hard? typing something? just rtfm

Jerrythabest Jun 13, 2007 08:10 AM

No, remembering and understanding what to type. Especially syntaxes.

Dermo Jun 19, 2007 01:00 PM

I think that this dedicated server should have a GUI as said (i do like jerry's idea of an .ini file more tho). But I think that if it would have the settings in an .ini file, than the console should sit on the taskbar (or whatever it's called down where the clock is) and run in the background. The only way to change settings is to run the GUI which would be ran separately and it would command the console. Why would you do such a crazy thing? So you could put the dedicated server in startup and it wouldn't bother you when your computer starts up. It would just sit in the background and run. And you could always unload it by right clicking and clicking quit or exit or something.

Jerrythabest Jun 19, 2007 01:58 PM

It's called the system tray. ;p And I don't think it's meant to be running while you are doing whatever you are doing at your PC.

Dermo Jun 19, 2007 04:08 PM

If it's got all the features of an anti-crash and it won't lock up your PC I don't see a problem with it running while you do whatever you want. It could be a plugin or something for the dedicated server. Occasionally i'll run 1.23+ and SalLog and use SalLog to minimize both jj2 and sallog to the system tray while i do whatever I feel like. In the meanwhile jj2 will be hosting a test server. Whenever I do that I get no issues except an occasional lock-up which fixes itself after about 2 or 3 minutes. So it sounds like a good idea to me.

Jerrythabest Jun 20, 2007 04:24 AM

Though still, your server isn't as dedictated as when it's the only thing running, and not in the background... ;) A tray icon plugin is still a nice idea =)

Cpp Jun 20, 2007 11:55 AM

Why a plugin? Features like those can be easily integrated into the program itself ;)

Jerrythabest Jun 20, 2007 12:16 PM

The more things are plugins, the less things will be loaded by default. If you need something you can just order the program to load it while starting, other things will remain unloaded. Saves resources and performance. ;)

Dermo Jun 20, 2007 03:30 PM

I was about to say it would make it easier if you put the most limited amount of commands required to run a program like this. Maybe /startserver /endserver /banplayer etc would all be required but when you get commands like /minimizetray and you add too many commands, it confuses so easily. So an .ini is a given on this program. Aside from an .ini file, yes a plugin would make it a lot easier. /loadplugin "minimizetray.dll" /loadplugin "autobanajazz.dll" would make it easier because you only have to remember one command and the file name which you can more than easily change to your liking.

EDIT: I'm supposed to be presenting ideas so here's one. Make it so you can set the command for certain things. Like if you want the command to change the level to be /changelevel, you should be able to edit the .ini file and change the level change command to /changelevel.

Stijn Jun 20, 2007 03:36 PM

I think it's time Neobeo gives some update on how this is all going to work or people will keep making suggestions that won't really fit in how the program is (afaik) going to work.

Dermo Jun 20, 2007 04:05 PM

I think it's time you look at his signature.

http://www.jazz2online.com/jcf/member.php?u=810

Birdie Jun 20, 2007 05:18 PM

Right now it's a console, and I see no reason for neobeo to give it a GUI.

Dermo Jun 20, 2007 05:52 PM

so you don't have to type a bunch of confusing commands. Giving it a GUI would make it easier.

Cpp Jun 21, 2007 12:54 AM

I do not see a reason why tray icon has to be a plugin. Small pieces of code like this can easily be integrated into the program engine. You can later edit the INI settings to disable parts of the program you do not wish to load. I like the GUI plugin idea for it allows users to make their own GUIs that way. The console window needs to be part of the engine in either case, but users can still choose not to display it on startup (can access it later via system tray icon).

Jerrythabest Jun 21, 2007 05:09 AM

A great idea: perform multiple commands while typing only one. In some kind of options file, maybe just the program's ini file, you can specify a command (like /doallthis) that will perform multiple core/plugin commands (like /ban# or /restartlevel etc etc). It should also be possible to use parameters. This way, I'd make a command /switchtobattle "levelname" score which will rename the server to RR Server ..Battle.., change to gametype Battle, loads level levelname.j2l and changes the needed score to win to score.

Cpp Jun 21, 2007 05:13 AM

Jerry: Well you have two ways of doing that. Either write a new function inside the script that does all that and then invoke it, or you can use console macros, which you can use by typing "exec macro.txt" where this macro.txt file contains a number of console commands.

Jerrythabest Jun 21, 2007 06:35 AM

You mean it's already implemented?

Dermo Jun 21, 2007 08:48 AM

Now I really like Overlord's idea. But I still like the idea of an .ini file better.

Stijn Jun 21, 2007 03:18 PM

Quote:

Originally Posted by Drmoo (Post 407714)
I think it's time you look at his signature.

http://www.jazz2online.com/jcf/member.php?u=810

That was not what I meant :H

I don't want to show off or anything, but I dare say I'd know more than most here about this program, having used an early version of it. Judging by my expierence with this program several things mentioned here are quite unfeasible or very easy to implement yourself. However, I do not know what Neobeo wants people to know about his program, so I was asking him to react on this matter in person.

R3ptile Jun 21, 2007 11:39 PM

once this program is released
i'm planning to make an irc gather bot
each player simply types "!add"
once it gets the required X amountation of players
it automatically starts a server for them
to play their 2o2\3o3\4o4

Jerrythabest Jun 22, 2007 05:03 AM

I wonder if it's easy to add features to a program if they only know Dutch, English, some German, HTML, PHP and a tiny bit of Javascript. ;p

Cpp Jun 22, 2007 09:24 AM

A PHP plugin is possible. This way you could control your server directly from the web. Maybe this is a better way of administrating the server than over the regular chat in jj22 itself, but both could be useful.

Dermo Jun 22, 2007 09:57 AM

lawl. I like that. Since a lot of us own websites. But I find that to be a funny and weird way to control a server.

EDIT: I finished my Flash course this year. Could you control the server using an embedded swf/flv file somehow?

Jerrythabest Jun 22, 2007 10:41 AM

The point is that the server program will need to understand what I'm writing. And I know no more languages than the ones mentioned in the previous post... So it's only easy to add functions for most people if it supports such scripts.

Neobeo Jun 22, 2007 06:15 PM

Well, seeing as the last post I made here was 6 weeks ago, I dare say I'm overdue for an official project status update. I probably should have for another 4 replies or so, so that this would at the top of a new page. Nevertheless, here are the current list of features.

What already works:
  • Listing/delisting the server
  • Movement and shooting of clients
  • Normal chatting
  • Downloading of levels and tilesets

What is buggy/still in progress:
  • Collision detection when shooting
  • Capturing the flag
  • Object pickups

Currently codenamed azure moon, the official name is still not being made known yet. The official scripting language to be used with this project is Lua. Support for DLL plugin has been considered, but will probably not be added until the later stages.

The scripting language, for maximum flexibility, has been designed to intercept events, such as onRoast, onChat, onJoin, onCapture. As such, Lua was chosen because it will be easy for beginners to pick up. Ideally, each gamemode would run as its own .lua file.

Commands will act as functions, and can be handled globally or locally. Examples of the former are "/kick", "/n", or "/instagib on". These are functions which, when you call, will be handled internally by the server so you don't really need to know how they work. You can also define your own function, such as defining "/spaztagib" to be "player.health = 1; if player.character = jazz then kick player". (That was pseudocode though, and doesn't reflect what Lua actually looks like).

The final issue is, as much as I'd like to make this project open source, plenty of obstacles have popped up along the way making the opensourceness of this project a very controversial decision. Said discussion is still being held by the board of directors. As at time of publishing this project is still closed source.

Finally, time for the Q&A:
  1. The dedicated server will run entirely on console. For those who have used console, this decision will be an easy one to support since it calls for much more effective and efficient means of modifying the server. If you really need a GUI, there might be a possibility of creating one from the script.
  2. Minimizing the console to the system tray is trivial, and doesn't require a plugin. However, it could be modified with the scripting language.
  3. I really never intended this to work with PHP or Flash. However, the plugin system is flexible. If you could get them to communicate with the server by means of DLL or otherwise, then be my guest.

Jerrythabest Jun 23, 2007 03:15 AM

Quote:

Originally Posted by Neobeo (Post 407894)
Well, seeing as the last post I made here was 6 weeks ago, I dare say I'm overdue for an official project status update. I probably should have for another 4 replies or so, so that this would at the top of a new page. Nevertheless, here are the current list of features.

The first one to post on a new page must quote your post! =D ;p

Quote:

Originally Posted by Neobeo (Post 407894)
Currently codenamed azure moon, the official name is still not being made known yet.

I've always liked that codename. If you don't have a name yet, stop thinking. It's a really nice name.

Quote:

Originally Posted by Neobeo (Post 407894)
The official scripting language to be used with this project is Lua. Support for DLL plugin has been considered, but will probably not be added until the later stages. The scripting language, for maximum flexibility, has been designed to intercept events, such as onRoast, onChat, onJoin, onCapture. As such, Lua was chosen because it will be easy for beginners to pick up. Ideally, each gamemode would run as its own .lua file.

Commands will act as functions, and can be handled globally or locally. Examples of the former are "/kick", "/n", or "/instagib on". These are functions which, when you call, will be handled internally by the server so you don't really need to know how they work. You can also define your own function, such as defining "/spaztagib" to be "player.health = 1; if player.character = jazz then kick player". (That was pseudocode though, and doesn't reflect what Lua actually looks like).

Sounds good. A scripting code that's easy to pick up is a very good choice indeed.

Quote:

Originally Posted by Neobeo (Post 407894)
The final issue is, as much as I'd like to make this project open source, plenty of obstacles have popped up along the way making the opensourceness of this project a very controversial decision. Said discussion is still being held by the board of directors. As at time of publishing this project is still closed source.

Just keep it closed source, unless you are going to do what Epic did with Jazz. If you make it opensource you get all kinds of incompatible edits which is not very useful.

Quote:

Originally Posted by Neobeo (Post 407894)
Finally, time for the Q&A:
  1. The dedicated server will run entirely on console. For those who have used console, this decision will be an easy one to support since it calls for much more effective and efficient means of modifying the server. If you really need a GUI, there might be a possibility of creating one from the script.
  2. Minimizing the console to the system tray is trivial, and doesn't require a plugin. However, it could be modified with the scripting language.
  3. I really never intended this to work with PHP or Flash. However, the plugin system is flexible. If you could get them to communicate with the server by means of DLL or otherwise, then be my guest.

Heh, lemme try to make a link with PHP. That'll really improve my PHP skills as well for sure, though it won't be easy =)

Cataphract Jun 25, 2007 08:10 PM

Quote:

Originally Posted by Neobeo (Post 407894)
The final issue is, as much as I'd like to make this project open source, plenty of obstacles have popped up along the way making the opensourceness of this project a very controversial decision. Said discussion is still being held by the board of directors. As at time of publishing this project is still closed source.

Hum? Obstacles? The only valid reasons I can think right now for making a program not free is if 1) one has licensed code from a third party and wasn't given permission to disclose it or 2) the business model depends upon it.

I hope it's not some silly objection such as Jerrythabest's or something like "it'll make it easier for someone to write an exploit and run arbitrary code on the clients".

It's not like there are many skilled programmers in this community that would benefit from making the program free, but it would probably be a good incentive to attract more people -- it's not just the stand-alone server program, anyone would have access to the JJ2 protocol and a reference implementation of it. That certainly creates interesting possibilities.

It could also accelerate the development, since everyone would be able to contribute with patches.

So I hope the "board of directors" decides to release this under a free license.

Jerrythabest Jun 25, 2007 10:37 PM

Hmm you actually made me doubt now! GJ :p


All times are GMT -8. The time now is 09:54 AM.

Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
JCF © 2001-Infinity Jazz2Online