Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (498)
Games in Android Showcase (115)
games submitted by our members
Games in WIP (562)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Ice Fighters  (Read 9829 times)
0 Members and 1 Guest are viewing this topic.
Offline Paladin

Senior Newbie


Projects: 1



« Posted 2009-01-16 11:23:37 »

Feeling bloody thirsty? (Well, without the blood). A nice, mindless shoot 'em up game in which you get to kill lots of evil fire-breathing aliens. Just the thing for a bit of stress relief. All you need to do is escape with your life to win.

There are 3 levels to escape from, but to escape from the last level you need to clear it of monsters...



Visit the website here or play via webstart.

Use the arrow keys to move / turn, ctrl + left / right arrow to strafe and shift to fire.

Any feedback greatly appreciated. I'm not a huge fan of the keys myself, and would be very happy to listen to suggestions. (I didn't want to use Alt to fire because if you press it and don't press anything else before you release it, you get a system menu which makes your player pretty unresponsive for a while...  Cry)

Tim
Offline irreversible_kev

Junior Member





« Reply #1 - Posted 2009-01-16 12:42:10 »

The third level was rediculous - so many of those "fire elementals" !  Cheesy
Offline Eli Delventhal

JGO Kernel


Medals: 42
Projects: 11
Exp: 10 years


Game Engineer


« Reply #2 - Posted 2009-01-16 20:01:07 »

Pretty cool! I'd use different buttons to strafe/move. My not WASD and Q/E for strafing? You could export two different versions, one for QWERTY and one for ADVORK.

See my work:
OTC Software
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Paladin

Senior Newbie


Projects: 1



« Reply #3 - Posted 2009-01-23 06:32:44 »

Thanks for the suggestions. I've released a new version incorporating these.

Now there are 7 levels of difficulty (1-7) with 1 being very easy and 7 being, well, not very easy.

The keys have changed to WSAD + QE for strafe and Enter to fire. At the moment I've only got a version for QWERTY keyboards, but I'll do a DVORAK one soon.

If you die, just hit enter to restart.
Offline Paladin

Senior Newbie


Projects: 1



« Reply #4 - Posted 2009-02-25 12:06:18 »

Ok, I've cut the levels of difficulty down to 4, but level 4 is much harder than level 1. The graphics are also a bit cooler now, with some nice reflections coming off the floor.  Cool

I'd be very interested to hear any feedback. Are the levels too hard or too easy? (Yes, it's possible to win on level 4!) Are there any changes you'd like to see to improve the game play?
Offline cylab

JGO Ninja


Medals: 49



« Reply #5 - Posted 2009-02-25 12:30:27 »

Some more keyboard suggestions:

Create multiple bindings for :

QWERTY:
- move forward -> up cursor | numpad 8 | w
- move backward -> down cursor | numpad 5 | s
- turn left -> numpad 7 | a
- turn right -> numpad 9 | d
- stafe left -> left cursor | numpad 4 | q
- stafe right -> right cursor  | numpad 6 | e
- fire -> space | return | numpad enter | numpad 0 | right CTRL

AZERTY (even the french need love Wink):
- move forward -> up cursor | numpad 8 | z
- move backward -> down cursor, numpad 5 | s
- turn left -> numpad 7 | q
- turn right -> numpad 9 | d
- stafe left -> left cursor | numpad 4 | a
- stafe right -> right cursor | numpad 6 | e
- fire -> space | return | numpad enter | numpad 0 | right CTRL

Dvorak:
- move forward -> up cursor | numpad 8 | ,
- move backward -> down cursor | numpad 5 | o
- turn left -> numpad 7 | a
- turn right -> numpad 9 | e
- stafe left -> left cursor | numpad 4 | '
- stafe right -> right cursor | numpad 6 | .
- fire -> space | return | numpad enter | numpad 0 | right CTRL

This should suite everyone  Grin

Mathias - I Know What [you] Did Last Summer!
Offline zammbi

JGO Coder


Medals: 4



« Reply #6 - Posted 2009-02-25 12:38:22 »

Very cool.
I found it easy, but the last stage is crazy on hard. It just lagged to much. Maybe would be playable if it used both of my cores...

Current project - Rename and Sort
Offline jasonjohnson

Senior Newbie





« Reply #7 - Posted 2009-02-26 00:27:56 »

Very good execution. I'm surprised you got this kind of gameplay out of 4k.

A little food for thought, however. At a distance it is difficult to target the creatures because the left/right turning seems to jump a little far to be helpful. I got around this by strafing (which seemed to be smoother than turning) and sprayed in their general direction. If the turning action could be progressive and not jerky this might make for a very useful engine.

Again, good stuff.

Offline Paladin

Senior Newbie


Projects: 1



« Reply #8 - Posted 2009-02-26 04:23:28 »

Thanks for the suggestions, cylab. I like your suggestions and they make a lot of sense, but I'm pretty sure I don't have the bytes available to be able to support multiple different key strokes for the same action. I'll give it a try though, but I've already had to do a lot of horrible things to get it under 4k

I will put out different version for different keyboards though, and thanks for the reminder about the French keyboard.

One question: I notice that you've put the strafe next to the "backwards" key, and turn next to the "forwards" key, whereas from memory games like HalfLife start off with the turn next to the "backwards" key. I'm assuming you put it this way because you find it easier to play with keys set up like this?
Offline Paladin

Senior Newbie


Projects: 1



« Reply #9 - Posted 2009-02-26 04:27:51 »

zammbi, can I ask which difficulty level you were playing on? I know that level 4 has some issues with speed if you're facing towards a large group of monsters on the last level and they're all firing as it does a painter's algorithm based render. Maybe I'll put a couple of walls in on the last level so there aren't so many shots on screen at the same time or something...
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Paladin

Senior Newbie


Projects: 1



« Reply #10 - Posted 2009-02-26 04:31:44 »

Jason, I've got to agree with you. I thought it was just me...  Angry I tried having it turn slower so you could fire more accurately, but then it turned too slowly. I think the solution might be accelerating into a turn. (ie turn 1 degree the first frame, 2 degrees the next frame, 4 the next and so on up to the maximum turn rate) Is this what you mean by "progressive"?

Oh, for more bytes to play with...  Cry

Thanks for the feedback to all...
Offline zammbi

JGO Coder


Medals: 4



« Reply #11 - Posted 2009-02-26 05:36:43 »

zammbi, can I ask which difficulty level you were playing on? I know that level 4 has some issues with speed if you're facing towards a large group of monsters on the last level and they're all firing as it does a painter's algorithm based render. Maybe I'll put a couple of walls in on the last level so there aren't so many shots on screen at the same time or something...
I was on lvl4. Yea some walls might solve it. I wasn't lagging too bad at the start.

Current project - Rename and Sort
Offline cylab

JGO Ninja


Medals: 49



« Reply #12 - Posted 2009-02-26 08:31:00 »

One question: I notice that you've put the strafe next to the "backwards" key, and turn next to the "forwards" key, whereas from memory games like HalfLife start off with the turn next to the "backwards" key. I'm assuming you put it this way because you find it easier to play with keys set up like this?

virtually nobody is playing with keyboard turn, since mouselook is used widespread. Since everybody is used to two-hand-fps, you can use a keyboard mapping to allow left hand move/strafe and righthand turn/shoot (that's the reason for numpad 0 or right CTRL should be fire) or left hand move/turn and righthand strafe/shoot.

I would prefer left hand move/strafe and righthand turn/shoot, so have

- move forward -> w
- move backward ->s
- turn left -> left cursor
- turn right -> right cursor
- stafe left -> a
- stafe right -> d
- fire -> numpad 0

the last one is debatable, since especially on notebooks, you might miss a numpad...

Mathias - I Know What [you] Did Last Summer!
Offline h3ckboy

JGO Coder


Medals: 5



« Reply #13 - Posted 2009-02-26 08:33:33 »

are there only 2 lvls? or does taht first tiny room count as a lvl. cause I beat it in like 5 min. the last level was hard though, that was fun mowing al of those fire dudes down.


good game. keep up the good work.
Offline Paladin

Senior Newbie


Projects: 1



« Reply #14 - Posted 2009-02-26 20:16:28 »

Pah! Of course I'm counting it as a level!!  Smiley

I wanted something to "warm up" people as they entered the game and not have them have to fight too many monsters originally. I might try to put a couple of extra walls in if you think it would help, or I could add more monsters. Or both. (Maybe. It depends on finding those rather elusive spare bytes!)
Offline jasonjohnson

Senior Newbie





« Reply #15 - Posted 2009-02-26 22:11:20 »

Paladin,

I'm not sure I fully understood what I meant by "progressive"  Smiley - but I'll do what I can to better articulate myself.

Perhaps fading into and out of the motion would be most appropriate. You are on "ice" after all. When a player is holding either turning key, if you were to apply an additive force, up to a certain limit -- then once the key is released, degrade the force gradually. Slide in and out of the turn.

It helps me to walk through it with some dirty pseudo-code:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
set turnspeed to 0
set maxturnspeed to 10

while left turn key is pressed
   if 10 tics have passed since last increase
      if we have not reached maxturnspeed
         add 1 to turnspeed

when left turn key is released
   while turnspeed is greater than 0
      if 10 tics have passed since last decrease
         reduce turnspeed by 1


Do we have a math major in here who can turn this into some sort of equation to save some space?

Something along these lines would allow you to gradually increase the turn speed, and you could adjust both the rate of increase and the max turn speed until it feels right. Also, you could independently control increase and decrease rates, which might be handy if you want to immediately stop the turning action upon key release -- just set turnspeed to zero, or maybe something more graceful.

Offline Paladin

Senior Newbie


Projects: 1



« Reply #16 - Posted 2009-02-27 13:35:11 »

Thanks for the really helpful feed back, everyone.

I've changed the turning similar to what Jason suggested, having an accelerated turn (but no decelerated turn, I ran out of bytes!) and you can pretty much turn to anywhere if you tap the turn key quickly.

The first level is now expanded. Not much, but hopefully enough to qualify as a level in it's own right.  Roll Eyes

There are walls in the third level for you and the monsters to hide behind. Not too many, just enough to make it interesting. This seems to reduce the lag a little.

I've also beefed up the difficulty a fraction. Hopefully not too much so that the extra monsters on level 3 more than compensate for the speedup I get from the extra walls, but hopefully enough to make level 4 a fair challenge.

Haven't done the keyboard remapping yet, but it's on the list. I do find I'm using turn more often, now I can turn to pretty much anywhere I want to.
Offline zeroone
« Reply #17 - Posted 2009-03-08 20:15:35 »

Very impressive graphics for a 4K game.  How is the maze generated/stored?  I noticed that some of the walls are diagonal.  I played through the game on the easiest level, which is a tad too easy.  I have a 1.8 MHz single-core WinXP machine.  The game ran a bit slow on my machine.  It’s difficult to aim and it’s difficult to avoid enemy bullets.  As with many 3D games, it’s hard to get a sense of relative depth between the player and obstacles.
Offline Paladin

Senior Newbie


Projects: 1



« Reply #18 - Posted 2009-03-25 00:52:18 »

Sorry for the slow reply, been out of the loop for a little bit... (I hate it when work interferes with my hobbies!!)

The maze is hard coded in an octal-encoded string, so for example the simple level is:

String sMapData = "\001\001\055\260" + "\010\001\060\265\377\201\201\236\372\255\201";

The first number is the number of walls in each "wall chain", then the x and the y coordinate of the wall starting point. After that, there's either pairs of x,y coordinates (one byte each) or if the high bit is set then the wall is perpindicular to the last wall (or vertical, if it's the first wall)

So the first few walls on the second chain here ("\010\001\060\265\377\201\201\236\372\255\201") are:
- there are \010 (ie Cool walls in this chain
- the first wall starts at (\001, \060) ie (1, 48)
- the next number (\265) has it's high bit set on the first wall so it's a vertical wall, and we'll ignore the high bit, so the wall ends at \065 ie 53. Thus the first wall goes from (1, 48) to (1,53)
- the next number (\377) again has the high bit set, so it's perpendicular to the last wall (ie horizontal) and ends at (177) ie 127. Thus the second wall goes from (1,53) to (127,53)

And so on. This constrains my walls to be in the range (1, 1) to (127,127) but it means I get to effectively use one byte per wall, unless I want a diagonal wall in which case I need to give both x and y coordinates.

Aren't you glad you asked?  Cool

I'm happy to release the source code if anyone's interested, but it's rather a mess due to the optimisations...

Thanks for the comments though, it's much appreciated. I wanted to see what kind of cool graphics I could stuff into 4k, and I'm aware that it does tax the CPU a little, particularly at some of the harder levels when there are a bunch more monsters and sprites. I think even moderately high spec'd machines would grind a bit on level 4, but without many more bytes, the only way I could have sped it up would be by reducing the screen size, and that would have been a shame...  Smiley

I really wanted to put in a gun image on the screen which would have helped with the aiming, but I had exactly 1 byte to spare after my best optimisation attempts, so it went by the wayside. As did the mini-map...  Cry
Offline h3ckboy

JGO Coder


Medals: 5



« Reply #19 - Posted 2009-03-25 17:48:54 »

Quote
As did the mini-map

I like it without a mini-map cause then it adds a maze effect to the game.

pretty complicated way of saving levels.

would be cool if you continued this as a non-4k (is that allowed?). I think it has tons of potential. you oculd do those things oyu missed Smiley
Offline Paladin

Senior Newbie


Projects: 1



« Reply #20 - Posted 2009-03-26 11:21:07 »

I like it without a mini-map cause then it adds a maze effect to the game.
/quote]

Hmmm, good point. It would sort of give the game away particularly on the second level. I did toy with just showing what the user had seen, but again I ran out of bytes.

Yes, it's complex, but it was the only way I could find to compress the wall data down enough to fit! I'm definitely open to better ideas.

Thanks for the compliment!  Cheesy I might extended it. There's a lot of really cool things I wanted to do like bosses, different weapons, transparent walls and so on, and most of them actually won't require much work (or bytes!)
Offline pjt33
« Reply #21 - Posted 2009-03-27 09:59:42 »

Yes, it's complex, but it was the only way I could find to compress the wall data down enough to fit! I'm definitely open to better ideas.
If rather than encoding the end co-ord you encode the length then the data should compress a lot better (especially if you're clever in the way you order it) and you'll probably only need a few extra bytes for decoding.
Offline Paladin

Senior Newbie


Projects: 1



« Reply #22 - Posted 2009-03-29 12:46:59 »

If rather than encoding the end co-ord you encode the length then the data should compress a lot better (especially if you're clever in the way you order it) and you'll probably only need a few extra bytes for decoding.
I must confess I didn't think of encoding by length rather than endpoint. But I'm curious why you think it would compress better -- most of the rooms are different sizes and unless the rooms were square I don't see why one scheme would offer a better compression ratio than the other. A lot of points are re-used in a maze (eg point 127 is used in all mazes) so compression should be reasonable from the points currently.

Also, storing the lengths would mean that you'd need to cater for positive and negative numbers, thus halving the distance you could move in a single byte. For example a wall from 0,0 to 0, 127 could not be represented in a single byte unless I was to sacrifice the diagonal walls and the halving of the sample space that goes along with reserving the high bit of a byte for the "hey, I'm a perpindicular wall" indicator
Offline pjt33
« Reply #23 - Posted 2009-03-29 13:43:25 »

I assumed that a lot of the walls would be the same size.
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

BurntPizza (25 views)
2014-09-21 02:42:18

BurntPizza (17 views)
2014-09-21 01:30:30

moogie (19 views)
2014-09-21 00:26:15

UprightPath (26 views)
2014-09-20 20:14:06

BurntPizza (29 views)
2014-09-19 03:14:18

Dwinin (44 views)
2014-09-12 09:08:26

Norakomi (74 views)
2014-09-10 13:57:51

TehJavaDev (100 views)
2014-09-10 06:39:09

Tekkerue (50 views)
2014-09-09 02:24:56

mitcheeb (71 views)
2014-09-08 06:06:29
List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!