[java] Mazeland in Beta
May I introduce you to a game that I wrote. It is my first one, so please
give me any feedback that I can use to make it better.
We want some feedback from other java game developers before we
go ''live'' in a broader market than the development community.
Any hints on reaching ''the market'' would be helpfull as well
Five years ago I had no idea of developing games but I
wanted to create a multiplayer game as an Applet.
Since then I tried several approaches including https, jdbc
and several java servers.
The most frustrating issue was the blocking I/O that was/is
present in the 1.1 io methods.
In the end the following conditions where the
one that determined most of the choices I have been
making:
- 1.1 Applet
- No certification / signing
- Never lose objects you need
- Multiplay
The idea of the game is to have mind puzzles together with
SOME RPG elements. It is by no means a RPG and it isn´t
intended to be a Massive Online game.
The only way you can play is TOGETHER and not AGAINST eachother.
Maybe that can change if there is a great demand for it. (bomberman like)
In the end the following techniques are used:
- a little bit HTML
- a lot of Java
- PHP and MySQL are the brain of the game
The benefits of the above approach is that you can have your ''server'' to
reside on cheap hosts. I am not sure of the bandwidth costs if it
actually becomes a popular game.
In the end we want to make our money by in-game sponsoring.
The current beta site is running on a slow (Cable) connection
but it is used as a way of performance testing when there
are a lot of users online.
There are 100 levels in both single- and teamplay. That will
satisfy your current desire. There are about 40
other ideas on paper but we thought to actually launch something
before extending the game. There should be something left for
a second version ;-)
The area that took much of the time is the teamplay. It is
also the least tested environment and I would like to know
what you think of it!!!!!
The following environments have been reported as working
- Windows XP & Internet Explorer
- windows 98 & Internet Explorer & Netscape 7
- Windows ME & Internet Explorer
- Sun Solaris with Netscape 7
There were some problems reported with Linux when
changing levels. I think it is related to a AWT problem
but I didn''t figure it out just yet.
Please report any other combination that is either
working or crashing.
Thank you for your time.
ME
Mazemaster on http://www.mazeland.net
Very interesting game! My only concern is the graphics. First of all, you should use some pixel-editing program like Windows Paint to draw the sprites, not scan them in - they''re too small to look good from scanned images. That would make the game look much nicer and more like an old-fashioned 2D game. It shouldn''t be too time-consuming either. Also, make the images GIF or PNG, not JPG, because JPG uses "lossy compression" so there are a lot of pixels whose values are slightly off what you want, and this is very visible for small images. Second, it would help to move objects gradually between tiles instead of having them jump instantly (that is, make each move last, say, 0.1 seconds, but repaint 3-4 times during that period and draw all the objects partway between where they started and where they''re ending up on that frame). Third, use double buffering to reduce flickering, for example when a cannonball shoots. These things combined would make the game look a lot nicer.
Other than that, I really like the concept and the gameplay. The fact that progress is saved when you log back on is very nice because you can continue any time, form any computer that supports Java. I haven''t tried it with team play yet, but it should be even better then.
Will you provide some way for users to create their own levels? That would help extend the game community.
Also, what is the issue with blocking I/O, and how was it fixed after 1.1? You can always run the I/O in its own thread I think.
Other than that, I really like the concept and the gameplay. The fact that progress is saved when you log back on is very nice because you can continue any time, form any computer that supports Java. I haven''t tried it with team play yet, but it should be even better then.
Will you provide some way for users to create their own levels? That would help extend the game community.
Also, what is the issue with blocking I/O, and how was it fixed after 1.1? You can always run the I/O in its own thread I think.
Thank you very much for your reply.
First issue was regarding the images.
They were not scanned in. They were made with PhotoShop
and took a long while to make. What OS are you running
and which browser are you using?
Smooth move of objects.
I will consider this if I can make the double buffering
work. There seems to be a whole lot of flickering going on
for some players. The main problem is that I want to make the game work without the java plugin.
Level editor.
There is a level editor but it is not something that is
foolproof, or even standard - user - proof. If the game
is a success I will make a level editor to be used by
others. There are 200 levels to play with so that should
satisfy your and others desires at the moment!
Blocking I/O.
Unfortunately you can''t use a Thread to work around the
blocking I/O methods. If you are going to read from an
InputStream with a while loop it will not continue unless there is data waiting. If you have an example or know of an article
that says differently I am very interested in it.
The only way I have got it to work in 1.1 compiled classes is
to use https with certification and stuff like that to connect to a server process.
From what I understood is that the NIO routines should be used
to read from streams where you want to have a continuous stream of data.
Thanks again for your response! I appreciate it!
Regards from
The Mazemaster
First issue was regarding the images.
They were not scanned in. They were made with PhotoShop
and took a long while to make. What OS are you running
and which browser are you using?
Smooth move of objects.
I will consider this if I can make the double buffering
work. There seems to be a whole lot of flickering going on
for some players. The main problem is that I want to make the game work without the java plugin.
Level editor.
There is a level editor but it is not something that is
foolproof, or even standard - user - proof. If the game
is a success I will make a level editor to be used by
others. There are 200 levels to play with so that should
satisfy your and others desires at the moment!
Blocking I/O.
Unfortunately you can''t use a Thread to work around the
blocking I/O methods. If you are going to read from an
InputStream with a while loop it will not continue unless there is data waiting. If you have an example or know of an article
that says differently I am very interested in it.
The only way I have got it to work in 1.1 compiled classes is
to use https with certification and stuff like that to connect to a server process.
From what I understood is that the NIO routines should be used
to read from streams where you want to have a continuous stream of data.
Thanks again for your response! I appreciate it!
Regards from
The Mazemaster
By the way the flickering of the player when the
canon is hitting is intentional! Maybe I have to
change that behaviour so that it is clear that you
cannot move the player anymore.
That said it isn''t a smooth animation as suggested!
Regards
from
The Mazemaster
canon is hitting is intentional! Maybe I have to
change that behaviour so that it is clear that you
cannot move the player anymore.
That said it isn''t a smooth animation as suggested!
Regards
from
The Mazemaster
About the images: I''m using Internet Explorer 6 with Java 1.4.2 on XP at 32 bits-per-pixel color resolution. I don''t think that''s really a problem. The main issue is that the images look like drawings you would draw on paper, which would be fine for larger images, but causes too much loss of detail on 16x16 tiles. Take a look at http://pixeltutorial.cjb.net/ for some examples of really good small-tile art (especially chapter 5). You''re not restricted to 256 colors like they are, so you have even more freedom. That kind of art is very hard to make, but looks very consistent. There are also libraries with free art that you could also use. Try http://www.molotov.nu/?page=graphics.
About the double buffering: http://modena.intergate.ca/personal/iago/javatut/jtp4.htm describes how to do it, even in Java 1.0. It should be simple to add into your existing code, since you just paint on a different Graphics object then draw an image on the screen.
About the double buffering: http://modena.intergate.ca/personal/iago/javatut/jtp4.htm describes how to do it, even in Java 1.0. It should be simple to add into your existing code, since you just paint on a different Graphics object then draw an image on the screen.
Hello Matei,
Thank you very much for the indepth answer you provided me.
Those pixelart pages looks like something we definetely
want to check out! I will ask Peter who made most of the
art work to take a look at it!
That double buffering technique was something that I am
using. But the problem might be that I start off with an
applet which adds a panel. Since I have a hard time
creating a graphics context from a panel I provide the
panel extended class with the graphics buffer of the applet
pseudo code:
public class start extends applet{
public void init(){
image=createImage(1024,768); // dimension etc..
buffer=image.getGraphics();
PanelClass p=new PanelClass(buffer);
}
}
In PanelClass I have the paint and update methods. The
paint method uses g.drawImage(buffer, 0, 0, this);
Maybe I am on the wrong track regarding this.
I have tried to change it so that the ImageObserver is the
applet and not the Panel.
The idea of having to use a panel is so that I can setVisible
it true or false and show a levelchange progress. Again i
might be on totaly a wrong track and you might guide me to
a better road!
Thank you very much for the indepth answer you provided me.
Those pixelart pages looks like something we definetely
want to check out! I will ask Peter who made most of the
art work to take a look at it!
That double buffering technique was something that I am
using. But the problem might be that I start off with an
applet which adds a panel. Since I have a hard time
creating a graphics context from a panel I provide the
panel extended class with the graphics buffer of the applet
pseudo code:
public class start extends applet{
public void init(){
image=createImage(1024,768); // dimension etc..
buffer=image.getGraphics();
PanelClass p=new PanelClass(buffer);
}
}
In PanelClass I have the paint and update methods. The
paint method uses g.drawImage(buffer, 0, 0, this);
Maybe I am on the wrong track regarding this.
I have tried to change it so that the ImageObserver is the
applet and not the Panel.
The idea of having to use a panel is so that I can setVisible
it true or false and show a levelchange progress. Again i
might be on totaly a wrong track and you might guide me to
a better road!
I think you can even pass null as the image observer and it will work, since the image isn''t really being loaded from anywhere but should be ready as soon as you create it. Also, you can make the full applet double-buffered instead of the panel; that is, keep the panel the way it originally was, and override the applet''s paint method to call super.paint(image.getGraphics()) then g.drawImage(image,0,0,this).
Hey Matei,
Thanks a lot for the advice!
I fixed it a bit differently by adding a
thread in the applet to launch the actually applet.
The progressionbar thread could then take hold of the
applets graphics environment and update/paint worked
fine.
The flickering has gone, but the images are still
the way they were. The person whom I made the game with
is looking at the sites you have suggested to us.
I tried converting the current JPGs to GIFs but there is a
great loss of information when doing the convert. I guess
that is caused by the limitation of 256 colors inside a gif?
For the moment we will stick with what we have and we are
going to focus on a version 2 of the game. Maybe we will
incorporate more graphics things in that version.
Regards from
the Mazemaster
Thanks a lot for the advice!
I fixed it a bit differently by adding a
thread in the applet to launch the actually applet.
The progressionbar thread could then take hold of the
applets graphics environment and update/paint worked
fine.
The flickering has gone, but the images are still
the way they were. The person whom I made the game with
is looking at the sites you have suggested to us.
I tried converting the current JPGs to GIFs but there is a
great loss of information when doing the convert. I guess
that is caused by the limitation of 256 colors inside a gif?
For the moment we will stick with what we have and we are
going to focus on a version 2 of the game. Maybe we will
incorporate more graphics things in that version.
Regards from
the Mazemaster
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement