creating a 3D chat room applet for web browsers

793b9f066e166f2b0ca1bcec992ce38e
0
Gon_NCO 101 Jul 31, 2009 at 12:55

Hello DevMaster.net community

some words of introduction:
Me and two of my friends are starting a “small” web project. There might be other “chat rooms” like ours, maybe even established commercial products. Our idea is to get used to Java programming, graphic design and project management. We are not native english speakers but we all know enough to get around, read manuals and work with english software.

our goal:
- an interactive 3D chat room accessible through the web browser -

We are aiming for a browser-applet based little world where users can chat and interact with the world and other users. Our primary goal is to create a 3D chat room where multiple users can communicate with each other. Moving through the room with their little avatar and chatting with each other, not necessarily with speach bubbles, a chat window below (or floating above) the 3D view of the room would be enough. Other avatars should be clickable to open a little window with user informations and context options like “remember as a friend” or “send privat message”.
Later on, after having a stable “stage” for our little performers (which might take quite a long time to achieve) it would be great to upgrade the world with objects for those users to play with. Having chairs, tables, doors, flowers and trees to interact with would be the second step. Maybe we are able to expand the “world” a bit to have a small village, a town or even a little world (granted that we have a userbase to populate it).

We decided to use java, because it is platform independable and we believe that it is possible to create good games and stuff with it. I am now collecting all the information I can get about programming a game with java. I am not a programmer (I know a bit of c, java but only basics) but see myself as the project manager and designer. My colleague is a java programmer (with a bit more then basic knowledge) an is willing to learn all that is needed to master such a task. We both know that this is nothing of a few weeks or even months and that we won’t start with programming for our actual project before he got his head full of java knowlegde, which might take some time.
I searched the web for informations on java programming during the last week and stumbled upon this discussion board.

the actual question
- what do we need to know, understand and have to master such a project -

I understand we need an engine, a development enviroment and have to create a client side applet as well as the server based java stuff. Therefor we need a server to run our “chat game”. Furthermore we need to have the server do most of the stuff with the client knowing as little as possible other than the stuff he need to display everything, because we want to implement mini games (tic tac toe, 4wins and the like) and we don’t want users messing with the game client/applet in any way. I am not yet familiar with security issues for java applets.

# We will start with a local server/test enviroment for our tests and will move on to a hosted server when the project is ready for having it tested by a few selected users.

# I ran across JME (Java Monkey Engine) as a 3D engine. I’m not yet sure whether this is a graphic engine or a 3d game engine yet (I have lots of reading to do…)

# I also discovered Project Darkstar
This might be a little bit of an overkill for our project, when we start but I’d like to keep myself some options and starting the project with this software infrastructure might be easier on the long run than starting to work with it after creating the basics without it.

# As a programming tool we settled for Eclipse
It’s free and I worked with eclipse in webdesign before.

# I have nothing for the graphics so far. My other colleague is a skilled artist and willing to learn 3D modeling and stuff but she has to start with very little knowledge in this area. Therefore we don’t have any ideas what tools and environments we need in this area. I heard alot about Blender but as I haven’t yet been able to research everything I don’t know whether there are other/better options or whether we need something special to work with JME.

Here is a short explanation to shed some light on how our project should look like.
For the start we planned to go with a isometric like view. 4 possible camera positions (north, south, east and west), always centered on your own avatar. The models should be simple, more comic-like than photorealistic. Light sources like lamps and the sun would be a nice bonus.
What we want for the future is an option to change the avatars apearance during the session. Change the shirt, put on a hat or take a flower in the hand. I want to plan this from the beginning to prevent problems when adding this feature.

Ok, I hope I did a good job on explaining the project, our goals and our needs right now. I’m glad for every sort of help we get and any information that helps me to plan the route and progress of this project (possible costs, effort, resources, technical details for the server and such like)

Thanks alot
Gon

15 Replies

Please log in or register to post a reply.

A638aa42130293f319eda7fa4ba121f4
0
fireside 141 Jul 31, 2009 at 22:21

I hope you are doing this mainly for the experience because 3d chat rooms don’t tend to be very popular and usually aren’t worth the server time. It might be a good introduction into social gaming, but personally, I think it would be better to start with designing single player games and then moving into multi-player. I admit I’m not a social gamer at all. The choices of engine, etc. seem pretty good.

793b9f066e166f2b0ca1bcec992ce38e
0
Gon_NCO 101 Aug 03, 2009 at 08:53

Our main Idea is to create some sort of a social game. Those Minigames are supposed to be the start. More games are ment to follow later on.

I would love to implement more features earlier on but I think my colleagues were right when they told me to take it slow. First get a working platform and then expand it.

We decided to go for a 3d Chatroom because mmo-games (especially rpgs) are a popular choice and giving the users a little world to perform those games with friends and personalising their avatars as well as interacting with each other are major apeals for many gamers.
I even thought about implementing some sort of combat system, because fighting is the #1 thing people do in many games but games like sims and other did show, that people also like to create their own enviroment and interact with the world surrounding them.

So, no combat for now and only something to walk around in and chat with people and once we got a running game thing, we can put in more stuff to do.

a little update because I said we would discuss matters this weekend… this weekend was full of entertainment and other stuff to do so we postponed the discussion for later this (or next) week.

8676d29610e6c98d6dd2d9c38528cd9c
0
alphadog 101 Aug 04, 2009 at 14:31

@Gon_NCO

We decided to use java, because it is platform independable and we believe that it is possible to create good games and stuff with it.

IMO, for a client/server game, Java is not the best option on the client-side. I would consider a Flash or Silverlight client.

On the server-side, platform-independence should not be a worry since you will select/control the server environment and you are likely not re-selling your code adn want to have a larger market to sell into. Furthermore, only novices to development think that Java is platform-independent. In a parallel way, many modern languages such as Python or Ruby, have similar independence. But, in any case, true independence takes active work on the part of the developer to guarantee in any language.

I would recommend you consider an alternate language on the server too, if marketable skills are a goal of yours. However, if you have an experienced Java developer in your mix, it may be best to work in Java.

8676d29610e6c98d6dd2d9c38528cd9c
0
alphadog 101 Aug 04, 2009 at 14:51

As for where to start, get a book that covers the whole game development world and start reading. This will help situate you. Then, you can go to the net to expand on the base you get from reading two or three books.

I would recommend the Game Development Essentials series, especially the intro and MMO books, for a broad base. And, then some books on Java game development, like Killer Game Programming in Java, which should give you the Java base you need to effectively google for deeper knowledge online.

A638aa42130293f319eda7fa4ba121f4
0
fireside 141 Aug 04, 2009 at 19:11

IMO, for a client/server game, Java is not the best option on the client-side. I would consider a Flash or Silverlight client.

If you want an accelerated 3d browser client, then Java is probably the best bet. Flash will do some non-accelerated 3d and it’s more probable that it will be on the computer without a download. There are a couple smaller java engines that you might want to look at, Jpct and 3dzzd. Google’s O3D might be worth looking into also, but it’s pretty new.

8676d29610e6c98d6dd2d9c38528cd9c
0
alphadog 101 Aug 04, 2009 at 20:33

fireside makes a good point. Depending on the complexity of what your final product is and how much 3D-ness is needed, Flash may not be suitable. OTOH, it isn’t like scraping the bottom of the barrel. Hell, even Valve is making an MMO with Flash as the client. (And, they will use PV3D too) But, they admit it isn’t the hardcore-gamer type of game…

793b9f066e166f2b0ca1bcec992ce38e
0
Gon_NCO 101 Aug 05, 2009 at 08:58

Our main reason to go the java applet route was that there are quadrillions of free mmorpg games and stuff out there. Take your pick, there is one for every taste, genre etc. Why would anybody download our “game” to chat and play around if there are so many alternatives with way more content and things to do. Thats why we had the idea to create something you don’t have to download and install. (I know that you will still have to download the applet and have a running jvm)
Platform-Indepence means to us that you can game on a mac, a pc, at home or at work or where ever you have access to the wired. If it takes extra work to get it running in all browsers… that is something I got used to from webdesign. o_O

To get this clear. I do apreciate every criticism and advice because we don’t have experience with running java apps and applets. It might very well be that we are headed in the wrong direction which is one of the reasons I’m doing all this research and asking professional and experienced users about java and applets.

@alphadog:
yeah, “Killer Game programming in Java” was one of the titles I found so far (besides “Black Art of Java Game Programming” and another one I can’t remember right now).
I just checked a few reviews on “Game Development Essentials”. Seems like those books are a real help for getting an idea of what I am planning to start (managment-wise).

@topic of 3d-ness and complexity
Even if it takes me a few years, I’d love to bring this project to a point, where it gets more complex and sophisticated, including better 3D models as well as more complex games (and maybe even a combat system and more rpg elements, if my team members let me do that).
This means we will start small (which might favor other solutions like flash) but want to have the option to go big anytime we are ready for it without rewriting everything because our first attempt didn’t keep that in mind.

05b28f0f31d5614f91dc629ed6d0f092
0
Wiredbomb0 101 Aug 05, 2009 at 09:14

@Gon_NCO

wired

:D

As for this, the idea of making multi-platform should be essential! From personal experience, most of the time, I just want it to work; no fancy instructions to follow, just a simple dialog box saying “Do you want to install <insert program here>?”. I find that making it too complex for the end user only confuses them, and even turns them away from it. Keeping it short and simple, in my mind, it one of the best things you can do.

8676d29610e6c98d6dd2d9c38528cd9c
0
alphadog 101 Aug 05, 2009 at 13:05

@Gon_NCO

Thats why we had the idea to create something you don’t have to download and install.

Flash penetration (meaning the percentage of systems out there with Flash on them, not a “midnight quickie”) is probably the most ideal one around at 96%. Everyone has it, and because so many common websites use it, and prompt for updating, most people are very up-to-date.

Java is somewhat lower with 80%. Silverlight is a much lower 25%, even with MS’ heavy push to get it out there. I do believe it will keep growing though.
@Gon_NCO

Even if it takes me a few years, I’d love to bring this project to a point, where it gets more complex and sophisticated, including better 3D models as well as more complex games

Which puts Flash back in the running. Although they have avoided hardware-acceleration, I think emerging trends make it practically impossible to ignore unless they want Flash to fade into obscurity. I guess using Flash would be based on how likely you think this is…

793b9f066e166f2b0ca1bcec992ce38e
0
Gon_NCO 101 Aug 05, 2009 at 16:27

@wired:
that was a LAIN reference (wired/web)

Should we be able to produce an applet that runs on every browser/jvm, you will have your usability and easiness. Visit the website, register, load applet and log in. Maybe even log in without register as a guest for a trial period.

@alphadog:
80% java penetration sounds good enough to me. I mean… i neglect to design for IE6 and there are still tons of IE6 users out there (thats again a completely different story)

My experience so far with flash is both good and bad. I like usefull flash tools and websites that are good looking without abusing flash but there are others. Another point for java is that the programmer on our team is learning java anyway so why not continue with that and use it at the same time. I as well am interested in Java and want to learn more about it. I wanted to add a programming language to my repertoire and java sounds interesting. I don’t think I will be able to contribute much to the development of this project any soon but why not learn and try anyway.

My point is, we pretty much decided to go with java and applets. What we are looking for is advice on how to start or reasons why we won’t succeed (like applets can’t do X or Y). We are not looking for a better programming language even though I thank you for offering alternatives.
The books you mentioned are a good start but I’m still looking for more like tutorials and more books (books are allways a good thing) as well as good advice (like “Don’t try x… it will cause havoc”) or maybe links to blogs/websites of other java game developers/projects.

8676d29610e6c98d6dd2d9c38528cd9c
0
alphadog 101 Aug 05, 2009 at 17:37

@Gon_NCO

Another point for java is that the programmer on our team is learning java anyway so why not continue with that and use it at the same time.

A point against Java is that it isn’t one of the most popular languages in game development. Not bad, but not the best. Python, C++, C or C# are much more useful on a resume than Java.
@Gon_NCO

What we are looking for is advice on how to start or reasons why we won’t succeed (like applets can’t do X or Y)… (like “Don’t try x… it will cause havoc”) or maybe links to blogs/websites of other java game developers/projects.

The problem is that there’s a million reasons why you won’t succeed. No one will have a list handy to post (or the time to type one out) that a forum won’t choke on out of sheer size! In fact, no one better ever compile that list, or they will kill the computing industry overnight. :)

As to how to start, I always hand out a link to an earlier post as reference and to save re-typing. Simply replace Python with Java.

Good luck…

A638aa42130293f319eda7fa4ba121f4
0
fireside 141 Aug 05, 2009 at 17:51

80% java penetration sounds good enough to me. I mean… i neglect to design for IE6 and there are still tons of IE6 users out there (thats again a completely different story)

That’s a very misleading statistic. Windows has come default with a very old version of Java(1.1) for quite a while. It’s quite hard to write games for that version, so it’s necessary to ask users to upgrade and that can be a tedious process that many people avoid. It’s also the only way you can keep from getting warning boxes which is a put off for a lot of people. When they see it’s a signed applet, some can be put off by it because of all the security concerns now days. If you do an accelerated 3d game, they will have to sign off on the warning box before the applet loads. Jogl is supposed to be able to do an unsigned applet and still use acceleration but it doesn’t work very well in practice. Gamers are generally a little more tolerant of signing off on the security warnings than the average net user, however. You’ll avoid all that with a Flash game, but then you end up with an un-accelerated game. If it’s a fairly large game, most users will probably end up downloading the client anyway because it will be lost in the cache otherwise and they will need to re-download too many times, so it really doesn’t matter which language you use at that point.
I write small games as a hobby and it’s just ridiculous the difference between how many people will try a Flash game compared to how many will try a Java game. When I did a combined game with a friend in Flash it got thousands of downloads, when I did a Java game, it got hundreds. If you can keep it small, it’s way better to do it in Flash.

There are some promising things coming down the pipeline with html 5 and Webgl.

8676d29610e6c98d6dd2d9c38528cd9c
0
alphadog 101 Aug 05, 2009 at 18:14

@fireside

That’s a very misleading statistic.

Not unless you totally distrust StatOwl’s reporting. They state that 74% are at JRE v1.5 or v1.6. Or, try RIAstats. They say 63% for the same.

Basically, in plain English, almost all systems have a recent version of Flash, and 2 out of three systems have a recent version of the JRE. I do agree that most people will not want to futz with a JRE install or upgrade. OTOH, most gamers, and many casual gamers, I would assume already have a pretty recent JRE.

It really comes down to a) the amount of 3D, and :) your desire to make what you learn marketable. Java is not a sought-after skill in the game development job market, is it?

(And, yes, I stopped short of mentioning HTML 5’s canvas tag. That’s another neat option. See here: http://dev.opera.com/articles/view/creating-pseudo-3d-games-with-html-5-can-1/ And, your mention of O3D too…)

A638aa42130293f319eda7fa4ba121f4
0
fireside 141 Aug 05, 2009 at 18:33

It really comes down to a) the amount of 3D, and b) your desire to make what you learn marketable. Java is not a sought-after skill in the game development job market, is it?

No, not in games. It is a marketable skill though and you can’t be that fussy now days. AS3 is an awful lot like Java now, so it’s just getting used to the weird visual tie-ins with Flash and you basically know them both.

793b9f066e166f2b0ca1bcec992ce38e
0
Gon_NCO 101 Aug 06, 2009 at 10:55

I just read your other post (thanks for the link).
I think starting with a 2D or 2.5D MMO Game would be better… to get the hang of game developent and serverside programming. Using an isometric view will most likely be enough to start with.
What I’d love to have would be a mix of 2D and 3D. 3D Elements views in an isometric way, enabling a change of perspective and lightning and stuff but … well, better not. We better start with 2.5D

For my part, java might be usefull for me being a web developer (as would be flash). I asked our programmer and he seems to be sort of a java fanboy now. He’s willing to show the world, that great things can be done with java.

a) the amount of 3D
- a little bit at the beginning, as much as possible later on

b) your desire to make what you learn marketable
- for me, java is marketable, for my partner it might be if he’s not to fixed on game development. Programming a game with java will help him get used to java in a way that doesn’t only benefit his game programming skill (at least we both think so)

c) jre on clients
- I think that most of our “players” might allready have an up to date version or are willilng to update if they have a good reason to do so.

As for canvas, I am eager to see what else HTML5 will bring us. This is a topic I try to stay up to date as good as possible.
Maybe some day it might be possible to display only the “video” of what the player sees to the client and do all the computing on the servers… there are solutions like that out there allready but I think this is not likely the way for us to go any soon.