Project name: OGF - Open Game Finder
Game type: Multiplayer
Links: http://www.ractoc.com/opengamefinder/svn
http://www.ractoc.com/opengamefinder/forums
License: Not sure yet, but definately opensource.
Recruiting: People who know their way around Nifty.
Contact: ractoc_AT_ractoc_DOT_com
Status: Active, working my way towards alpha 1
Group: open-game-finder
Abstract:
The Open Game Finder is used as a component eople can use in their own game. It will allow players to log. After logging in they are taken to a lobby where they can talk with other people playing the same game. From the lobby they can also look at pending multplayer games and ongoing multiplayer games. Through this screen people will be able to start a new multiplayer game, join a multiplayer game or (perhaps) view a multiplayer game in progress.
OGF makes use of SpiderMonkey for the network stuff. This means it will use the chat functionality that comes with SpiderMonkey and eventually it will also support the VOICE capabilities of SpiderMonkey.
OGF also makes use of my other project, PluginFramework for Java (PFfJ). By using PFfJ OGF becomes fully extendable. PFfJ makes use of plugins. The actual logic is coded into these plugins. OGF will come with a set of standard plugins, but these you can all replace with your own where needed. This is most usefull for the GuiPlugin. This plugin currently is built around Nifty, but by replacing the plugin you OGF supports any GUI, even your own custom one.
On the server side, the use of PFfJ is even more important. The reason for this is the other major feature of PFfJ, it allows for distributed computing with just a simple config file change. So you can start with just 1 server and when your game grows, you can simply add more servers without having to do any work on your code at all. PFfJ will take care of he messaging between the JVMs.
At the moment the server is something every game will have to install and run for themselves. But it would also be possible to have one server support multiple different games without much problems.
Used API’s:
jME3
NIFTY
PFfJ
SpiderMonkey
Active Members:
Name Role Status
Mark Schrijver Project leader, main developer Active
A bit more info:
What hole are you trying to fill?
Well, OGF tries to be a standard library to add multiplayer matching capabilities to any multiplayer game. This should allow the game developers to concentrate on the actual game instead of such byproduct.
Are you looking for additional contributors?
Currently the coding is progrssing nicely. I am however looking for someone with a bit more Nifty experience to help out from time to time. Not necesarily as a full member, but every now and again I would need a new screen and for this I could use some help.
Is it done or are you committed to further development?
OGF is by no means done, there’s not even an alpha version yet. And I am very dedicated to seeing this thing completed.
I hope this clarifies things a bit and I would love to hear your thoughts on this. I will keep working on it for the foreseeable future. But any feature requests or other pointers would be more then welcome.
Screenshots will be put up when availlable. The code is readable to all in the svn provided. Changes will have to go through me though.
Mark
Yay, I've been looking forward to seeing a hands on use case of your plugin framework. Coolest thing about this I think is because it ties in with Nifty and SpiderMonkey it can demo these projects from a whole new angle. It's also a very nice way for developers across projects to have something in common that encourages a little more co-ordination of efforts.
atm I have the NiftyPlugin working as well as the AccountPlugin and I have a placeholder for the SpiderMonkeyPlugin.
The hardest part thusfar was getting all the Nifty code contained inside the plugin. The idea behind that being that people should be able to swap the NiftyPlugin with a Plugin containing their own GUI of choice.
The cool thing about have a contained NiftyPlugin is that every other plugin can control the GUI without needing to know about the inner workings of the specific GUI used. The same goes for the SpiderMonkeyPlugin, you should be able to swap that one with JGN for instance with needing to change any other code.
As it stands now, the whole thing is beginning to look like something that just might work. Next up is the lobby screen containing a chat window. Or perhaps I'll eventually have the lobby be just a listing of rooms, not sure yet on that one.
Once I get a basic chat in there along with a server connection (this depends a lot on the progress Lars makes on spidermonkey) then I'll start documenting the code and perhaps even dedicate a tutorial if I can find the time for that.
Ok, the basic chat for the lobby is in as well.
It has a standard chat functionality with the added feature of being able to display a player icon in front of the chat-line. This can be used for a character protret for instance.
At the moment there is one issue remaining with the chat, but that should be fixed in the next release for Nifty. This project is turning into a test bed for 4 alpha stage technologies at the same time: Nifty, JME3, SpiderMonkey and PFfJ. While this is not a bad thing per se, it does come with it's own share of problems and some extra work on my end.
Ok, after getting some signals that my description wasn't all that clear I did a small rewrite.
I updated the description in the main post to better fit the actual goal of the project.
Thanks for the extended description, that helped The Open Game Finder is pretty straight forward, but the PFFJ still has me confused. I'll refer to the dedicated thread with my questions though.
That's why there are two threads. I'll look into that one as well, see if it needs clarification somehow.
But first to test the new Nifty Chat panel
Ok, I started work on the database on the server. That should be working now through hibernate. Only problem now is that my messages don't seem to arrive on the server correctly. Looks like a problem with the serialiser in SpiderMonkey. Ah well, I'll get in touch with Lars about that tomorrow.
Other then that, things are progressing nicely. One of the two Nifty bugs has been fixed, thanks to Void. Once I get the registration on the server done I'll see about setting up some sort of test version for you guys to play with. Although you can always check the progress by checking out the project from my svn, that one has quite a few dependencies that aren't in there correctly yet, sorry.
Another day, Another milestone…
I got the main login / registration working. There are still some issues with the spidermonkey lib, it sometimes gives me an out of memory exception. But that'being worked on. Other then that I did some major rework on the SpiderMonkeyPlugin both on the client and the server, putting all the shared code in a central class. I also updated the build path and the lib dir. Now, all the needed libs are in the lib dir. The only exception at this time is Nifty, since I use code from Nifty that's only in their SVN version and I'm relying on them to do the building for me.
Also, I added Hibernate and a mySQL database on the server. In the build.xml there is a task that generates a piece of sql code to create the database for you. It also runs this against the database as defined in the hibernate.cfg.xml file, so after running this task you "should" have a running, functioning database and be ready to test what there is so far.
commiting now…
Ok, some major changes today. Fixed the code to use the new SpiderMonkey from the JME3 SVN.
Aside from that, the login now actually waits for a response from the server before proceeding to the lobby. Next up is the chat in the lobby. After that I’ll see if I can make a nice alpha version for you guys to play with.
Depending on work and the kids I may have that one done early next week. Chat is always morework then you think.
This sounds really cool. Good idea.
Hey there,
Well, it’s been a while since I’ve been able to put any time into this. I still have some ideas on where to go next, but time has become limited with the second kid.
I am still committed but could use some help to get the project up to speed again. Especially the front end (Nifty plugin) could use someone with a bit more time and Nifty experience. UIs always take up a lot of time to get right, time better spent working on the actual technical stuff. But if you are interested, you are more then welcome to come on board and help out.
I’d love to help. I have 0 experience with Nifty tho. Plenty of time right now. I have some basic/intermediate experience with JME2 and have done some basic stuff in JME3.
Just point me in the right direction and I’ll start taking a look at it.
@ractoc very glad to see this one’s still moving along.
@monkeyBrainz I fully endorse this project. ractoc is a very capable developer with an idea that we’re all very curious to see realized. Nifty seems to be a real challenge to some, while others embrace its concepts in a heartbeat; I hope you’re the latter. Either way, the library author @void256 is active on this board and he keeps on top of all new posts within the GUI board, so you’re not on your own if you get stuck.
You can actually get started without direction. Just read up on the nifty docs and you’ll figure out quickly enough if this is the type of jME-related work you could see yourself committing to.
Yeah, sorry this thing got sidetracked for so long/ The new kid, combined with a new, demanding job ate up all my spare time.
MonkeyBrainz, I sent you a private message with the svn details.
Yeah, sorry this thing got sidetracked for so long/ The new kid, combined with a new, demanding job ate up all my spare time.
MonkeyBrainz, I sent you a private message with the svn details.
Interesting. A bit what Steam does, except for the updates/downloads and ads.
I have two questions sofar
- what do you need jME for? (it’s a networking component. I can imagine using it for a 2D game using Slick.)
- Will it be free to use in commercial games? (would increase acceptance)
At the moment I’m using Nifty for the gui. As a result I’m using JME as a short cut to instantiate Nifty, but that’s about it. And Spidermonkey is now integrated in JME3, which is another reason I’m using the JME3 libs.
But since Spidermonkey can be used without JME3, and the GUI is in a seperate, confined, plugin, it should be easy enough to integrate OGF into any game you want. You should even be able to integrate it into a swing app if you really wanted to.
At the moment I haven’t put any real thought into the licencing part of things. First priority would be to get a working alpha version. Making it free to use in commercial games would mean people would demand things from me with regards to time and such. So not sure on that end. But I would definatelly consider it is a commercial game would be interested in picking it up.
Ok a short update is on order I think. Over the last week I’ve made a lot of progress. On the server side I now have a working session plugin. This means I can keep track of everything related to a client way more easily then before.
On the client side I have the chat plugin all but finished. Over the next weel I’ll be working on the server side chat plugon. Once that’s done, I should have a working alpha version. One requirement for going alpha is that Lars incorporates my suggestrd changes into SpiderMonley, as he said he would.
Well there you have it. After along absence, this project is once
more alive and kicking.
Mark.
Awesome work! I’m currently working on a game that would benefit greatly from something like this. I’m pretty new to JME3 and java, but I’ve managed to get some basic things working in Nifty (i.e. switching screens/loading functions/exiting to main game).
I know MonkeyBrainz said he’d help with this, but if you could use some additional help I’d gladly help out with that.