Welcome, Guest. Please Login or Register.  • Help
SMF Underground
+ SHMUP-DEV » SHMUP DEV FORUMS » Showcase
|-+ Transdimensional Hellspider (full version 23 December 2009)

Pages: [1] 2  All   Go Down
0 Members and 1 Guest are viewing this topic. Topic Tools  
Read October 27, 2009, 12:44:17 pm #0
Linley

Transdimensional Hellspider (full version 23 December 2009)

UPDATE 23/12: and it's finished! Here's the post with downloads.

UPDATE 30/11: and there's another demo here.

UPDATE 26/11: there's a demo attached to this post below.

It's not finished yet, but I'm about 80% through my latest game, working title: Transdimensional Hellspider.

(Edit: I was going to call it "Messenger Omega", but when I did a Google search, like I should have done before I posted, I found some kind of messaging program called Omega Messenger. So I've gone back to an even earlier working title. Let me know if you hate it.)

The best way I can think of to describe it is as Spacewar! versus Warning Forever. That is, it's like WF but with thrust and inertia. It even has a fixed-forwards viewpoint, which was a bit tricky to get right but seems to work okay despite requiring a vast number of arctangents.

Here's a couple of screenshots:

 

Should be ready in a couple of weeks. As usual, the sound is my least favourite part and I've left it to last, so final preparations will drag a bit. But now that I've finished God Hand I'll have more time to devote to it.
« Last Edit: December 23, 2009, 12:48:27 pm by Linley »

Offline  
Read October 27, 2009, 09:18:47 pm #1
kdmiller3

Re: Messenger Omega (screenshots 27 October 2009)

Looks great!   Cool

The camera view reminds me of the Psygnosis/Reflections game Awesome.
« Last Edit: October 27, 2009, 10:32:57 pm by kdmiller3 »
Offline  
Read October 28, 2009, 12:05:03 am #2
the2bears

Re: Messenger Omega (screenshots 27 October 2009)

I am always excited to see a post about a new game Linley Smiley  Looking forward to this.

Bill


the2bears - the indie shmup blog
Offline  
Read October 28, 2009, 02:18:14 am #3
jakman4242

Re: Messenger Omega (screenshots 27 October 2009)

I am always excited to see a post about a new game Linley Smiley  Looking forward to this.

Bill

Every time Linley announces a new game, I feel the same as a Blizzard fan feels after hearing about a sequal/expansion to one of their games.

Looking forward to playing this! Grin

Also, are those lives in the top right corner? You cheater.  Roll Eyes


My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read November 10, 2009, 01:42:37 pm #4
jph

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

As usual, the sound is my least favourite part and I've left it to last, so final preparations will drag a bit.

Well if you don't enjoy doing sound work perhaps you should farm some of it out? I would of course lov to contribute to one of your games as I am a huge fan,.  Unless you are talking of the codeing and not the samples?  Anyway, let me know!  Ive got a big old analog mono synth sitting here beside me and she is feeling a bit neglected.

http://www.youtube.com/watch?v=W4PEAKNtbVw  (cs-15 vid)


iterationGAMES.com
 remember when we used to play ?
Offline  
Read November 10, 2009, 03:59:08 pm #5
kdmiller3

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

It even has a fixed-forwards viewpoint, which was a bit tricky to get right but seems to work okay despite requiring a vast number of arctangents.
Hmm.  How are you using those?

2D transform matrices are relatively simple to compute from an angle and position, and subsequent computation involves nothing but multiplies and adds.  If you're interested, I can provide sample code for how to do that.

Quote
As usual, the sound is my least favourite part and I've left it to last,
Is this sound effects or the music?  I know you've written custom music generation code in the past, which would indeed be a drag.  Unfortunately, Allegro doesn't seem to support MOD/XM/S3M/IT tracker-type music formats, so you'd be left with MIDI... Sad

As for analog synth sounds, I'm totally for it.  That CS-15 video was fun to watch.  Cool
« Last Edit: November 10, 2009, 05:12:27 pm by kdmiller3 »
Offline  
Read November 12, 2009, 11:51:33 am #6
Linley

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

It even has a fixed-forwards viewpoint, which was a bit tricky to get right but seems to work okay despite requiring a vast number of arctangents.
Hmm.  How are you using those?

2D transform matrices are relatively simple to compute from an angle and position, and subsequent computation involves nothing but multiplies and adds.  If you're interested, I can provide sample code for how to do that.

Basically I'm using them in two slightly different ways. In one, I have x, y and facing angle (relative to the reference frame) for the player and x and y for an object. Positions need to be handled with coordinates and numbers because of the way the shabbily coded physics engine works.

I use atan to get the angle between the two sets of coordinates (the object angle) and hypot to get the distance. I then subtract the player's facing angle from the object angle to get the angle (drawing_angle) which the object needs to be drawn at to maintain the player's forward-facing perspective. Then it's time for cos(drawing_angle)*distance (and sin) to draw the object in the right position on the screen.

Hope that makes sense. I know there's a way to do this using vectors, but I don't know how to use vectors and anyway it involves some kind of inverse square root thing which I doubt is that much better than atan.

The other way I'm using it, which may be more amenable to optimisation, is for the star background. Basically each star in the background is handled the same way as an object, which means, yes, that there is an atan operation for each one every frame. But since the stars only ever do two things - translate to account for player speed, and rotate around the player to account for player rotation - the coordinate system isn't necessary and there might be an easier way to do this.

Actually all the arctangents take way less time than I thought they would; the game runs perfectly even on my old and not very fast computer. But if there's a simple optimisation, particularly for the starfield, I'd love to know how to do it.

Quote
Quote
As usual, the sound is my least favourite part and I've left it to last,
Is this sound effects or the music?  I know you've written custom music generation code in the past, which would indeed be a drag.  Unfortunately, Allegro doesn't seem to support MOD/XM/S3M/IT tracker-type music formats, so you'd be left with MIDI... Sad

Mostly the music Smiley. The code is pretty easy considering that most of it can be pasted in from my previous games, it's thinking of something that sounds good that's hard.

Well if you don't enjoy doing sound work perhaps you should farm some of it out? I would of course lov to contribute to one of your games as I am a huge fan,.  Unless you are talking of the codeing and not the samples?  Anyway, let me know!  Ive got a big old analog mono synth sitting here beside me and she is feeling a bit neglected.

That would be great! If you could send me some samples I'll definitely use them.
Also, are those lives in the top right corner? You cheater.  Roll Eyes
It's true, I am bad even at my own games.

Thanks for the comments so far! Now I just have to finish it.
Offline  
Read November 12, 2009, 01:37:01 pm #7
Odessi

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

Actually all the arctangents take way less time than I thought they would; the game runs perfectly even on my old and not very fast computer. But if there's a simple optimisation, particularly for the starfield, I'd love to know how to do it.
I don't know what graphics API you're using but surely you must be able to set the world transform and let the API handle rotation, rather than doing it individually for each object?
Offline  
Read November 12, 2009, 02:52:56 pm #8
kdmiller3

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

I don't know what graphics API you're using but surely you must be able to set the world transform and let the API handle rotation, rather than doing it individually for each object?
Linley's previous games used Allegro, so I'm pretty sure this one uses Allegro as well.  Unfortunately, Allegro is purely screen-oriented and does not support rotation.  (The upcoming Allegro 5 might, but that's still in development.)
Offline  
Read November 12, 2009, 03:15:17 pm #9
Odessi

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

Linley's previous games used Allegro, so I'm pretty sure this one uses Allegro as well.  Unfortunately, Allegro is purely screen-oriented and does not support rotation.  (The upcoming Allegro 5 might, but that's still in development.)
Ah.  I remember Allegro back from the 90s, didn't know it was still around!  Looking around it seems that there's AllegroGL if you can't wait for v5.  Surely that would be the best bet for optimisation.

Anyway, Transdimensional Hellspider's looking neat, looking forward to it!
Offline  
Read November 12, 2009, 03:24:14 pm #10
kdmiller3

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

Basically I'm using them in two slightly different ways. In one, I have x, y and facing angle (relative to the reference frame) for the player and x and y for an object. Positions need to be handled with coordinates and numbers because of the way the shabbily coded physics engine works.
Heh.  Grin

(I picked Box2D early on because I wanted to make a game and building a collision system was a distraction.  Box2D is way more sophisticated than I need, but beats anything I could have come up with hands down.)

Quote
Hope that makes sense. I know there's a way to do this using vectors, but I don't know how to use vectors and anyway it involves some kind of inverse square root thing which I doubt is that much better than atan.
Based on your description, it seems you're doing everything in polar coordinates.

Vectors should be fairly simple to pick up since you already know trigonometry.  Based on the geometric definitions of sine and cosine, they're already just components of a unit vector in the direction of the angle.  Smiley

Quote
Actually all the arctangents take way less time than I thought they would; the game runs perfectly even on my old and not very fast computer. But if there's a simple optimisation, particularly for the starfield, I'd love to know how to do it.
I use a similar (x, y, angle) representation for transforms in my own project since it's much smaller than a full matrix and very easy to rotate and interpolate.  The only thing I did different was the methods to rotate, transform, unrotate, and untransform vectors.

I'll post these methods soon because I need to head out to work.  There's several sines and cosines involved, but those are fairly cheap.  They're even cheaper if you use the "fast" floating point model, which turns them into single machine instructions.

In the case of stars, you can compute those sines and cosines once and apply the transform in bulk.  At that point, though, you're just applying a matrix, making it the "gateway drug" to vector math.  Grin

(If you look at my 2D transform and 2D matrix classes, you'll see how the two relate to one another.  I built them as "partners", performing the same operations on vectors and easily converting back and forth.)
« Last Edit: November 12, 2009, 04:44:56 pm by kdmiller3 »
Offline  
Read November 13, 2009, 12:56:58 am #11
jakman4242

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

You know, I'd love to make a collision engine myself. Although Box2D is good. It'd be nice to have something simple and fast.  Lips Sealed

Gah, I just can't figure out how to check an intersection between two triangles!  Embarrassed


My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read November 13, 2009, 03:04:02 pm #12
N

Re: vector transformation (was Transdimensional Hellspider)

Linley: I believe this is what Mr. Miller's been talking about as an easy way to transform your object coordinates from absolute to relative to player view angle.

(I just woke up and started writing vector math, so if someone could check my math on this I'd appreciate it)

Multiply your position vectors by this matrix, which you can precalculate pretty quickly
Code:
[cos Θ  -sin Θ]
[sin Θ   cos Θ]

So when you take your positional vector multiplied by the rotational matrix
[X Y] x [cos Θ  -sin Θ]
        [sin Θ   cos Θ]
 
You get the output vector [X2 Y2] where
X2 = (X * cos Θ) + (Y * sin Θ)
Y2 = (X * -sin Θ) + (Y * cos Θ)
(these are the important lines)

For example, rotating everything 90 degrees clockwise would use the following matrix:
[cos(90) -sin(90)] = [0 -1]
[sin(90)  cos(90)]   [1  0]
Ex: [2, -1] by that matrix gives [-1, -2], which you can verify makes sense pretty quickly.

Another easy one is 180 degree rotation:
[-1 0]
[0 -1]
Which you can also see makes sense and helps me verify I'm doing something correct here.

Ok, so the other thing you need to know is that computer graphics use a left-handed coordinate system (Y increases going down instead of up) so you need to flip the angle to get the results you want - otherwise everything will be rotating clockwise instead of counterclockwise, or vice versa.

Wiki fun: http://en.wikipedia.org/wiki/Rotation_matrix


Jakman: intersecting 2 triangles: check to see if any point of triangle B is enclosed by the area of triangle A and vice-versa?  It's early and I'm going to have to get some coffee and do a bit of reading before I can give the real answer, but I believe you start by taking the dot product of your test point and each line segment in the testing triangle.  Or was it cross product?
Offline  
Read November 13, 2009, 03:49:45 pm #13
kdmiller3

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

I set up my OpenGL projection matrix so I could use right-handed coordinates for the world.  Smiley
Offline  
Read November 13, 2009, 06:32:18 pm #14
N

Re: vector transformation (was Transdimensional Hellspider)

Sorry to hijack a thread with a tutorial.  If a mod wants to put this elsewhere, I can clean it up a bit more and make it standalone.
Jakman: intersecting 2 triangles: check to see if any point of triangle B is enclosed by the area of triangle A and vice-versa?  It's early and I'm going to have to get some coffee and do a bit of reading before I can give the real answer, but I believe you start by taking the dot product of your test point and each line segment in the testing triangle.  Or was it cross product?

Right, now I remember it.  This probably isn't the fastest method, but I don't have a copy of Graphics Gems handy so I'm deriving this from first principles and all that.

You have a convex polygon - for simplicity, let's say it's a triangle, with points A,B,C.  You want to know if point D is inside that triangle.  What you can do is project the vector from a vertex of the triangle to D onto the corresponding side.  Just go around the poly clockwise - or CCW, as long as you're consistant - testing e.g. AB dot AD, BC dot BD, and CA dot CD.  If all of those values are >= 0 and <= the length of the corresponding side squared, then D is inside the poly.

(a quick math note - V1 dot (V2 / |V2|)... that is, V1 dot (V2 / length of V2) gives the scalar projection of V1 onto V2.  This actually saves quite a bit of trouble when doing the math, because by not normalizing V2 to a unit vector we multiply both sides of the inequality by |V2|, which means we just can check against |V2|^2 and skip the sqrt when finding the length of the triangle sides)

Picture might help. (not to scale)
Offline  
Read November 13, 2009, 06:48:18 pm #15
Odessi

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

That doesn't help for this case:


It's not hard to find robust, fast tri-tri intersection code on the net.  It's one of those things that's just not worth writing yourself.
Offline  
Read November 13, 2009, 07:10:15 pm #16
N

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

That doesn't help for this case:
(image)

It's not hard to find robust, fast tri-tri intersection code on the net.  It's one of those things that's just not worth writing yourself.

Whups, knew there was something missing.  And I agree re: using libraries, but people were talking about writing their own collision engine.

To get the conversation back on track a bit, looking forward to this game.  I do hope it has some sort of continuation method like White Butterfly though.  Hate to say it, but I eventually ragequit GoCL for good after roughly my hundredth playthrough of levels 1 and 2.
Offline  
Read November 14, 2009, 10:05:31 pm #17
Linley

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

The discussion of triangle collisions just makes me glad that almost everything in my game is round. hypot ftw.

N, thanks for the rotation matrix explanation - that looks really useful and makes me wish I'd paid more attention in maths classes. I'm going to try the matrix on the stars; it looks like it will be much faster than atan, leaving me more space in the 20ms per frame to fit in more and larger explosions. Sadly there won't be a White-Butterfly style continue option as that wouldn't really make sense in this game (the enemy evolves depending on how you defeat it, so skipping to a later level wouldn't make so much sense). But so far TDHS is looking like it might be a bit easier than some of my other games :)

Linley's previous games used Allegro, so I'm pretty sure this one uses Allegro as well.  Unfortunately, Allegro is purely screen-oriented and does not support rotation.  (The upcoming Allegro 5 might, but that's still in development.)
Ah.  I remember Allegro back from the 90s, didn't know it was still around!  Looking around it seems that there's AllegroGL if you can't wait for v5.  Surely that would be the best bet for optimisation.

It's true, I am trapped in the past. I really like Allegro's support for 8-bit graphics, which lets you do cool things with transparencies that would be impossible in other graphics modes. And I like the direct control it gives you over the display buffer at the pixel level, which allows things like reading the pixels making up the player's ship to calculate collisions. It's also C, which I like more than C++ (not that I understand C++ well enough to really be able to compare them).

Minor update: work on the sound is proceeding well. Effects now pan and fade according to motion (rather than just their original position) and there is even a doppler effect, which makes little sense considering that the game appears to be taking place in space but whatever. Today I'll start work on the music, using the great samples jph sent me. Then it might even be ready.
Offline  
Read November 15, 2009, 12:14:40 am #18
jakman4242

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

One small thing I found:

It looks like the large shot/orange explosion effect to the right of the screen is covering up the little HUD bar.

Looking forward to the release of this game!(and about ready to give up on my failed attempts at triangle collision and go to Box2D.)


Personally, I've just recently given up Allegro in favor of SFML. While it was solid, when I wanted to do things like transparency or simple AA it became far too trivial. It also helps that SFML has (basically seamless) OpenGL integration. Grin


My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read November 15, 2009, 01:39:24 am #19
kdmiller3

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

Quote
(and about ready to give up on my failed attempts at triangle collision and go to Box2D.)
Join ussssss.... Grin
Offline  
Read November 15, 2009, 02:39:45 am #20
kdmiller3

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

The discussion of triangle collisions just makes me glad that almost everything in my game is round. hypot ftw.
Circles do make everything easier.  I started with those too.

Quote
N, thanks for the rotation matrix explanation - that looks really useful and makes me wish I'd paid more attention in maths classes. I'm going to try the matrix on the stars; it looks like it will be much faster than atan, leaving me more space in the 20ms per frame to fit in more and larger explosions.
That was definitely helpful.  The main thing I would have added was translation (change of position), but you can do that as a separate step.  In the case of stars, you'll want to build a rotation matrix with the player's angle negated, and then for each star subtract the player's world position, apply the rotation matrix, and add the player's screen position.  You can actually compute a 2x3 matrix to to it all in one shot, but the translation part gets sort of complicated to work out.

If you describe your coordinate system (the directions positive X and Y point, which direction the zero angle points, and whether angles are clockwise or counterclockwise), I could try writing some C functions for you.  I think you'll need to get a transform matrix given a position and angle, get the inverse of a transform matrix, rotate (local direction to world direction), unrotate (world direction to local direction), transform (local position to world position), and untransform (world position to local position).

Quote
It's true, I am trapped in the past. I really like Allegro's support for 8-bit graphics, which lets you do cool things with transparencies that would be impossible in other graphics modes. And I like the direct control it gives you over the display buffer at the pixel level, which allows things like reading the pixels making up the player's ship to calculate collisions.
If it still works for you, is there a big reason to change?

I'm a big fan of OpenGL myself, and I think your visual style would translate well to solid-filled GL primitives.  It'd certainly make camera transforms and transparency effects a lot easier!  Grin

You'd lose the frame buffer tricks, but a good 2D physics engine would take the pain out of that and give you a lot of new toys to play with.

Quote
It's also C, which I like more than C++ (not that I understand C++ well enough to really be able to compare them).
While I work with C++ extensively, I do like the relative simplicity of C for libraries.  C++ is a horrible, horrible languages that happens to be very popular.  Tongue

Quick note: Box2D is C++, which will make it somewhat difficult to integrate into a pure C engine.
Offline  
Read November 15, 2009, 02:58:08 am #21
jakman4242

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

Again, when people say C++ is horrible(or otherwise), I can't help say:
Just think of the English language. Think about it's relation to other languages in this world. Then think about the relations from C++ to other languages available to program in.

And as I say about English:
It's full of consistent inconsistencies, and from that most of you probably say it's a clunky, tough, or otherwise hard to read. In the end, it's just dynamic, and it keeps growing.

Although I completely understand where people are coming from when they say they dislike the language. Grin
Personally, I find it a lot easier and pleasureful to write in straight C rather than C++.


My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read November 15, 2009, 03:59:19 am #22
monoRAIL

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

Looks good Linley - and I like the name. Can't wait to play another of your shmups.

off topic, but on the Box2D topic - the next version of Torque Game Builder (they're calling it Torque2D again) will include Box2D physics.
Offline  
Read November 17, 2009, 12:16:22 pm #23
Linley

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

If you describe your coordinate system (the directions positive X and Y point, which direction the zero angle points, and whether angles are clockwise or counterclockwise), I could try writing some C functions for you.  I think you'll need to get a transform matrix given a position and angle, get the inverse of a transform matrix, rotate (local direction to world direction), unrotate (world direction to local direction), transform (local position to world position), and untransform (world position to local position).
That does sound useful, if you have the time. Thanks! It wouldn't need to be in C; N's equations to calculate the output vector [X2, Y2] were very useful in that form. I just don't know how to do actual vector calculations (dot product etc).

I tried N's rotation matrix for the stars and it worked perfectly, with far fewer floating-point operations than before. I didn't even need to flip any angles (not sure what that says about the way I was doing it before).

Anyway, the coordinate system I use is simple: positive x points right, y points up. Angles start at 0 for up and go clockwise.

Quote
I'm a big fan of OpenGL myself, and I think your visual style would translate well to solid-filled GL primitives.  It'd certainly make camera transforms and transparency effects a lot easier!  Grin

You'd lose the frame buffer tricks, but a good 2D physics engine would take the pain out of that and give you a lot of new toys to play with.

True, I've been thinking of maybe giving SDL a try sometime.

It looks like the large shot/orange explosion effect to the right of the screen is covering up the little HUD bar.
Yeah, that bar probably doesn't need to be transparent, thanks.
Offline  
Read November 17, 2009, 04:34:59 pm #24
kdmiller3

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

That does sound useful, if you have the time. Thanks! It wouldn't need to be in C; N's equations to calculate the output vector [X2, Y2] were very useful in that form. I just don't know how to do actual vector calculations (dot product etc).
I'll try to whip up something tonight, but you can poke around inside my Matrix2 class to see how it works in the meantime.

Quote
I tried N's rotation matrix for the stars and it worked perfectly, with far fewer floating-point operations than before. I didn't even need to flip any angles (not sure what that says about the way I was doing it before).
Nice!

He might use the opposite "handedness" of rotation since there's two ways to do it.  In any case, switching between the two comes down to swapping sin Θ and -sin Θ.

Quote
Anyway, the coordinate system I use is simple: positive x points right, y points up. Angles start at 0 for up and go clockwise.
OK.  Mine is similar except for positive x pointing left ("west").  I'm not sure about which direction my angles point, though...  Grin

Quote
True, I've been thinking of maybe giving SDL a try sometime.
I used SDL and OpenGL for well over a year, and switched to GLFW mostly because I was using a tiny fraction of SDL's functionality.  GLFW is easy to use and a lot smaller.  (It's a static library that adds only 21 KB to my executable.)
Offline  
Read November 19, 2009, 12:18:31 pm #25
Linley

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

kdmiller3, I had a look at your matrix classes and I have to admit that, um, although I've heard of classes I don't really know what they do. But I'm sufficiently impressed by how simple and elegant N's rotation function is that I think I have the motivation to look into matrices and work out how to implement them in C. I'll check out wikipedia and come back here if I can't work it out.
Offline  
Read November 19, 2009, 04:11:40 pm #26
kdmiller3

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

kdmiller3, I had a look at your matrix classes and I have to admit that, um, although I've heard of classes I don't really know what they do.
Classes are just structs with members private by default (accessible only to member functions).  Member functions have a hidden "this" pointer to their class/struct, which the compiler can use to access member data.  Otherwise, they work like normal functions.

Quote
But I'm sufficiently impressed by how simple and elegant N's rotation function is that I think I have the motivation to look into matrices and work out how to implement them in C. I'll check out wikipedia and come back here if I can't work it out.
OK.  I'll try to unpack my class stuff into C functions for you as well.  Smiley
Offline  
Read November 20, 2009, 06:30:44 am #27
kdmiller3

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

I've only done some a few simple unit tests, but I've attached my first attempt at a C vector and math library.  Going back to C was a lot harder than I thought it would be.  It's easy to forget how much member functions and operator overloading streamline things until they're taken away from you. Grin

(Returning vectors by value might have simplified things.)
« Last Edit: November 20, 2009, 06:59:09 am by kdmiller3 »
Offline  
Read November 22, 2009, 11:40:35 pm #28
jakman4242

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

Partly unrelated to this topic, but I think it could come in handy for Linley as well.

A great alternative to Box2D, while not as entirely robust, is Chipmunk. It's simple and fast, and so far I've liked it. It feels much cleaner and easier to use, I think. It also has a simple and clean documentation, which is very readable.

Did I mention it was made in C?(Linley!!)

Check it out.

Sounds like some shameless lame advertisement. Grin
Anyway, enjoy!


My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read November 25, 2009, 08:33:54 pm #29
Linley

Re: Transdimensional Hellspider (was Messenger Omega) (screenshots 27 October 2009)

Sorry I haven't been communicating for a while - been very busy doing various things, including getting ready to move house. Anyway, here's a demo (attached to this message; shmup-dev members will be able to download it). The sound effects are not finished, the music isn't done, and the game is probably not as well balanced as it could be. It might even be too easy. But all features are there.

Let me know what you think! I'm interested in comments about anything.
Offline  
Read November 25, 2009, 11:04:43 pm #30
kdmiller3

Re: Transdimensional Hellspider (demo 26 November 2009)

I'm definitely liking it so far.  Maybe I screwed up my keys, but down doesn't seem to do anything.

Just so you know, the palette is all messed up in full screen for me.  However, Battlezone's software renderer is also screwed up so it might be a video driver problem on 64-bit Windows 7.
Offline  
Read November 25, 2009, 11:51:40 pm #31
jakman4242

Re: Transdimensional Hellspider (demo 26 November 2009)

I could make this really long and detailed, but I'd like to make it simple. Grin

The controls are impossible.
I love the constant-vertical orientation you have, I had been thinking about doing this for a while.

But PLEASE. Allow us to strafe and move backwards. It would make this game much more playable. As it is, I can barely manage past the second hellspider.

And for the most part, the current controls make almost all of the weapons basically useless, since it's so hard to aim. The only one I was able to really get with were the worms, because they locked on and followed.

Now that I play it more, I'm getting more used to the controls. Of course, I should have suspected this with a Linley game. Grin
Nonetheless, I think strafing is a necessary addition.

[EDIT]
Also, the windowed option in init.txt doesn't actually do anything.
« Last Edit: November 26, 2009, 06:35:44 am by jakman4242 »

My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read November 26, 2009, 08:20:42 am #32
Linley

Re: Transdimensional Hellspider (demo 26 November 2009)

I'm definitely liking it so far.  Maybe I screwed up my keys, but down doesn't seem to do anything.
Down activates the brakes, which increase drag. You probably won't notice unless you have at least one level of the glide powerup.
Quote
Just so you know, the palette is all messed up in full screen for me.  However, Battlezone's software renderer is also screwed up so it might be a video driver problem on 64-bit Windows 7.
Hm, sounds like a problem with either video drivers or Allegro. Probably not much I can do about this, although I'll check the code to see if I'm doing anything out of order or otherwise in a way that could cause problems.
But PLEASE. Allow us to strafe and move backwards. It would make this game much more playable. As it is, I can barely manage past the second hellspider.
Ha! Sorry, but it's Spacewar/Asteroids controls only (plus braking, which I feel is almost too generous). It definitely takes a bit of getting used to; try using the longer-range weapons (particularly the one at the top of the list, and the claw things) and staying well away from the hellspider. Also try moving around it in a circle and only turn inwards to fire when it's safe to do so. Attacking from the front is not recommended :)

And something else I forgot to mention: avoid destroying the core without destroying any of the parts first. It gets much stronger if you do that.
Quote
Also, the windowed option in init.txt doesn't actually do anything.
Ah, I think I know why this is. It should work if you set it from the options/settings menu. I'll fix that.

Thanks for the feedback so far!
Offline  
Read November 26, 2009, 10:48:44 am #33
N

Re: Transdimensional Hellspider (demo 26 November 2009)

I liked it a lot.  Please keep that in mind.
I've also only played about an hour, but I think that's certainly enough to give some first impressions.  I'm going to try out some different upgrades and I'll post again if my opinion on some of the math significantly changes.

First I'd like to say I didn't find it nearly as hopeless as Jakman, but the option to reverse would be very useful.  Still, I got to Tau once and was hanging out with Xi on a regular basis - when I picked the right weapons.

Another early impression is that it felt a little (lot) unfair that the hellspider upgraded significantly every level and I got a small incremental upgrade every third victory, in addition to the player ship starting out pretty weak.  Reminds me of Lacewing in that particular respect; no matter how well you play, you just keep falling farther behind because the system is rigged.

I also felt like the only really successful method of fighting was sniping.  My upgrade path generally went something like weapon power -> weapon power -> shield (to allow the boss 2 lucky hits instead of 1) -> weapon range -> weapon range.

The art was very pleasant to look at, but it was very difficult to tell which joints had a dangerous gun on them and which could be left alone.  I played the game at least half an hour before I even noticed that the guns were visibile on the nodes.  Something like, say, tinting them by weapon type or even just increasing the contrast would help a lot.  Compare, for instance, the ship and guns in WF. 

I appreciate the... more subtle? particle effects in this game compared to some of your previous releases.  I never got anywhere with the Anemone in White Butterfly due to losing bullets in the visual noise of the swinging sword.  In Hellspider, I've never been confused about what is and isn't dangerous.


Ok, specific critique time.
The side guns were not created equal.  Chaos Mouth and Drifting (?) Eye just don't do enough damage to justify getting so close to the 'spider.  In fact, the standard pew-pew laser seems to have a higher damage/sec rate than either of those - I was expecting something amazing, but even after the first damage upgrade the mouth couldn't take out 3 of the smallest-size joints at the same time.

Blazing claw was really good.  Outranges nearly all of the low-level hellspider guns and does good damage.  It might also actually be the only gun that can be used solo to kill a spider in less than the time limit.  Furious Eye and Worms of Anguish(? - the seeker) also felt slightly less useful than just getting in and blazing away, but Worms of Despair felt pretty ok.

So the most effective tactic with the upgrades I chose was to shoot at the enemy while it was slightly offscreen, then run away and repeat when it started moving into range.  It was pretty successful but also a rather boring route to victory.

Not all of the upgrades felt equal, either.  I never invested heavily in the mobility boosters for two reasons.  First off, I simply couldn't survive long enough when skipping weapon upgrades to try many of them.  Second, they felt pretty self-negating.  The purpose of being more maneuverable was to slip behind the enemy and attack their weak spot, right?  The problem is that the enemy evolves to protect their weaknesses.  The level immediately after I had shot out both engines and laughed at my crippled opponent as I pruned it like an unruly shrub, it had upgraded to dual thrusters and cancelled out half of my speed advantage.  The level after that, it felt like I was back on equal footing speed- and rotation-wise, except the hellspider had also added another 20 or so guns while it was cancelling out my upgrades.

edit: I did just try three different all-speed upgrade routes - bomb, shotgun, and rear-firing seekers - and got it maxed each time but couldn't get to the third upgrade.  I never said "wow, my ship is fast" or "if I'd just been a little slower, I couldn't have dodged that!"  Instead, I mostly said "how am I supposed to kill this hellspider in less than 2 minutes?  I've only taken out 5 nodes thus far."

A high-level version of the hellspider gun that goes "bloop" and shoots orange ovals is the only thing I was afraid of while fighting at long-range.  They're too fast to dodge and do a lot of damage.  Fighting at close-range, change that list to "everything, except maybe the solid lasers."


Other stuff:
Please orient the player to face the hellspider on respawn.

Dying while the boss is exploding is really annoying.

Are scoring / extra lives coming along in a later version?

The player ship really is not agile at all.  In the 60-90 minutes I've put into the game all the fights felt like a brutal slugfest (that I lost) or a kind of long-range swapping of broadsides with battleships.


Despite these comments, still lots of fun. 
(Wow, this was a long post.  Once a designer, always a back-seat game designer.)
« Last Edit: November 26, 2009, 11:12:32 am by N »
Offline  
Read November 26, 2009, 04:13:42 pm #34
jph

Re: Transdimensional Hellspider (demo 26 November 2009)

Very cool!  It is quite interesting so far,. yup, at first I wanted reverse and strafe as well, however game design limitations are what creates unique gameplay. I think i can see what you are going for here.  It is hard, but therein lays it's charm. As always, I lov your visual style unique elements built together and actuating to function!  Those synth samples are working great, with your melodic ambiant style of musical generation. (I will send another batch!)  One thing that bothers me is the moment between Spiders when my ship (and the stars) dissapear and are respawned,. if they could remain while the new Spider aproaches a more cohesive flow may be achived. Although I do enjoy having my shilds reset!  Perhaps if the destroyed Spider droped pods/crystals/whatever (and left some debrei?) that the player needs to gather (avoide) to re-gain sheilds??  this could create a bit of a race to re-group befor the next Spider warpes in form the Hyperdimention., just a thought.  also perhaps some asteroides to hid behind (and mine crystal from),  oh,. . perhaps i should just go play Sinistar! lol anyway my design direction dreams aside, this is looking great so far.., good luck with the move, remember lift with your knees/legs not your back!!  Peace.


iterationGAMES.com
 remember when we used to play ?
Offline  
Read November 26, 2009, 05:46:02 pm #35
Odessi

Re: Transdimensional Hellspider (demo 26 November 2009)

I'll echo the thoughts about the control system: I don't think it works so well for a fixed orientation.  I'd either implement reverse, or make turning quicker.

I love the motion blur on the stars during rotation though, it's a nice effect.
Offline  
Read November 26, 2009, 07:24:53 pm #36
jakman4242

Re: Transdimensional Hellspider (demo 26 November 2009)

I'd like to mention that it was me that was hopeless, not the game.  Roll Eyes

Anyway, after much more playing, it seems N has beat me to most of my critiques, so just consider this post me backing what he says. Smiley

The only other one I have is the time available. Personally, I don't think it's enough for how long it generally takes to defeat the spiders, especially when they start reaching higher levels and gain insane amounts of weapons.


My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read November 27, 2009, 01:58:40 am #37
kdmiller3

Re: Transdimensional Hellspider (demo 26 November 2009)

Though it took me close to a dozen attempts, I found a strategy that let me beat the game.  I picked the long-range semi-homing weapon, but soon discovered that my choice became irrelevant before long.  I got a lot more mileage out of fully-upgraded main guns and fully-upgraded shields.  Those let me charge in at an angle and concentrate fire on the large segments rooting the legs to the main body.  Once those were destroyed, I could just pound on the core until it exploded.
Offline  
Read November 27, 2009, 03:58:15 am #38
jakman4242

Re: Transdimensional Hellspider (demo 26 November 2009)

On second thought, the time for most of it is pretty fair. After you get to around Theta time becomes a challenge if you're not taking huge risks.

Small suggestion:
Make the minimap's scope smaller, so the things on there are larger and more precise, perhaps show the actual pieces of the spider on it.

The green long range weapons seem really low-par. I never once took them over the straight-shot or the shotgun. They seemed excessively weak, even though the descriptions of one of them mentioned it was strong.

The worms were great weapons, but I think their initial range is a bit weak, and results in an upgrade to increase that range, where you'd really need to be making an upgrade for something more important to help you survive. I think the turn speed on them should be increased, just a little bit, to make up for this.(if any change would be made)


My game design blog -- A bit outdated, but you might like to take a read anyway~
Or read my new blog!~ (which I do update)
My blog.
Offline  
Read November 27, 2009, 06:57:47 am #39
N

Re: Transdimensional Hellspider (demo 26 November 2009)

All right, now I've beaten the game twice and have a few more comments to make.  Maybe 3 hours of play by now - not much for a tester, but probably close to the limit of what most downloaders would spare?  Don't worry, it's not as much as the last time.

My first successful run was with the burning claw, and it has easily become my favorite weapon.  I don't know if that says more about my personal preference or the power of the weapon, but I had good luck with two long-range barrages followed by one last charge and then dive-bombing through the enemy with the primary as the claws fire to take out a big chunk of the weakened links.

I also surprised myself by beating Omega with the Chaos Mouth, though it took half a dozen tries.  The critical decisions were at 3 and 6 when I had to choose between weapon power and shield, and I always felt like I chose the wrong thing.  Either way, my first 4 were always maxing out weapon power and shield.  The way these fights played out was similar, but I found I could hang out inside the nodes with the largest guns and the most dangerous attacks would automiss. 

I still got hit once or twice per fight, which seemed to force the evolution to stick to the blue single-shot, blue dual cannons, and orange ovals.  It was harder than the other win, but in both runs I went through the last dozen with no deaths - which was good, because I lost two lives during the first six o hellspiders.  I still wish chaos mouth did more damage - most of my damage was with the primary gun after the first charged shot.  I also missed a lot from extremely close range when the spider started spinning at high speed, so I'll go ahead and say it'd also be nice if the blast moved faster.  Possibly I'm just terrible.

Minor stuff:
Levels 2-9 are the hardest in the game.  If I can make it past #12 with a life in reserve, I'm pretty sure I'm home-free.  Usually I die twice by #6.

A little chirp when the alt weapon is fully charged would help, especially with the homing worms.

Taking out the root nodes ASAP seems to the the optimal strategy.  Perhaps they need a health multipler based on the number of living child nodes.  Trimming back the leaves is much slower and thus more dangerous, even disregarding the nastier guns the big nodes have.

I've occasionally seen the charged-fire particle effect detached from the player ship.  It may be specific to the backblast on the mouth.  Sorry, I don't have a screenshot.  Incidence was low and I couldn't find any correlating factors.  It might have happened more often when the hellspider was largely destroyed, or I may have just noticed it more easily in that case.
Offline  
Pages: [1] 2  All   Go Up
Jump to:  

Page created in 0.234 seconds with 21 queries.