My Homebrew Shmup-ish: Superlumenal.


Adventus

GP Mania
Joined
Oct 1, 2007
Messages
487
Age
35
Location
Canberra, Australia
Over the last few weeks i've been learning OpenGL ES 2.0 by making a highscore based minigame. I haven't entirely thought out the gameplay yet, but I want it to be pretty fast paced and intense (I'm a big fan of DoDonPachi). The basic idea at the moment is you can grab an enemy, use them as a shield which spans a user controllable (via an analog stick) 90 degrees for a limited number of hits.... then throw them to stun (or kill) other enemies. I haven't decided on whether to have randomly spawned enemies of not, if i do i'll have visual ques which describe the upcoming attack pattern. Actually, I'll probably do both a random and level based mode.

Anyway, Here's what it looks like sofar (Compiled in X86 Windows with PVR OGLES2.0 emulation):
screenshot001ak5.jpg


It should be completely cross platform, The libraries I'm using are: SDL, SDL_ttf and OGLES2.0. So i may release a PC version utilising OGL2.0.

The underlying engine/tools are pretty much complete (except the physics engine). Currently it features:
  • Post processing: Radial/guassian/motion blur and distortions (eg the shock wave you can see in the pic)
  • Particle engine. eg the flames coming off the player/bottom right.
  • Alpha mapped ttf font rendering library. eg "Score: 2350"
  • Shader interfacing code generated from your GLSL source code (so you don't have to remember all your different uniform/attrib datatype's, etc).
My main worry is the SGX performance, most of the rendering doesn't really make use of the advantages a TBDR provide (I'm using lots of additive/alpha blending, no depth buffer, etc). Its also heavily dependant on floats, so some Neon optimisation will probably be in order (Which should be a good learning experience, i haven't written much ASM).

Im calling it "SuperLumenal" (as in faster than light) at the moment, but that could easily change. I'll keep these thread updated as it evolves. Feel free to chip in if you have any ideas.
 
As no one else as commented, let me.

I think it looks really interesting - nice idea and soooo colourful. Good luck with it.


This thread on documentation may be of interest if you haven't seen it. Apparently you should use Neon a lot or not at all.
 
Last edited by a moderator:
For pre-programmed enemy attack patterns:

It would be awesome if they were synchronized to music. Like, take some freeware or foreign music, and build stages that are synchronized to the music; waves that come in with the beat, heavy waves, wobbly waves, light waves, etc. Having stages like that would make the game 10000000% more awesome if I were playing it to some awesome music.
 
Graphics look awesesome! hope SGX lives up to its hype!

QUOTE
Actually, I'll probably do both a random and level based mode.



I think that would be wise, plus i can't imagine setting up a random mode, where difficulty gradually increases would be too hard, plus it'd be nice for a scoreboard!
 
If I read the SDKPackage/Documentation/Migration\ from\ SW\ to\ 3D\ HW.Khronos\ Kolumn.1.1f.External.pdf that came with the PVR emulator correctly using 2d libs like SDL/SDL_ttf may really cost you. Read that and see if you agree it might be better to make a texture with freetype2 instead.
 
QUOTE
This thread on documentation may be of interest if you haven't seen it. Apparently you should use Neon a lot or not at all.
Thats interesting, I hadn't read that before. I hope my code is appropiately structured to make good use of the Neon. Most of my floats are contained within matrix and vector classes.

QUOTE
It would be awesome if they were synchronized to music. Like, take some freeware or foreign music, and build stages that are synchronized to the music; waves that come in with the beat, heavy waves, wobbly waves, light waves, etc. Having stages like that would make the game 10000000% more awesome if I were playing it to some awesome music.
Yea that sounds pretty awesome. Ideally it would be best if the user could drop an mp3 in a folder and the have game generate a level by recognising certain patterns in the music. I almost always prefer the algorithmic route.

QUOTE
I love the grid background used to show the distortion effect. Will you be keeping that in the game or is it just there for testing?
I'll definitely keep it in if performance permits. BTW the distortion affects all the rendering (except the GUI).... but its not very obvious in the pic.

QUOTE
If I read the SDKPackage/Documentation/Migration\ from\ SW\ to\ 3D\ HW.Khronos\ Kolumn.1.1f.External.pdf that came with the PVR emulator correctly using 2d libs like SDL/SDL_ttf may really cost you. Read that and see if you agree it might be better to make a texture with freetype2 instead.
Your right, rendering with SDL/SDL_ttf would be really bad for performance. I'm not doing that. Instead, at Start up i render all the characters to a texture, then based on the provided string it draws the correct regions of that texture. I'll probably cache the bitmap to file if the start up times are too bad.
 
Adventus said:
My main worry is the SGX performance, most of the rendering doesn't really make use of the advantages a TBDR provide (I'm using lots of additive/alpha blending, no depth buffer, etc).

Even though alpha blending adds overdraw TBDRs still have a relative advantage there due to the blending being performed entirely on-chip. Of course you still have to limit the number of layers to a reasonable level.

Optimizing the post-processing shaders might be the most important step for good performance.
 
Last edited by a moderator:
finally a good looking homebrew
i hate all retro games (well not all)

but yeah colours fast pace and hopefully , music should make this a brilliant game

im currently developing my own homebrew at the mo, never programmed in C, but i getting on all right, the one thing im not to sure is compatibility, im use to making the entire "engine" myself

but id like to try box2d etc, and im currently using SDL primitives, so hopefully its fairly easy to get going on the pandora
 
QUOTE
Sorry, probably wouldn't ask such stupid questions if code posted.
No worries, it was a perfectly valid point.

QUOTE
Optimizing the post-processing shaders might be the most important step for good performance.
Yea, The distortion effect will hopefully be heavily used, Its rendered with a fullscreen triangle strip with degenerate vertices connecting each row. So its rendering complexity is constant (not dependant on the number of distortions). The guassian blur will probably only be used for when you pause the game.

QUOTE
finally a good looking homebrew
i hate all retro games (well not all)
In one sense i agree, the majority of Homebrew is lacking in the graphics department (obviously with some notable exceptions). But there's good reason for that, The programmers capable of making good games can rarely produce large quantites of good artwork. My artwork is decent because i intentionally limited my scope.

QUOTE
im currently developing my own homebrew at the mo, never programmed in C, but i getting on all right, the one thing im not to sure is compatibility, im use to making the entire "engine" myself
Yea making the entire engine is probably the most fun bit for me (aswell as producing fancy, abliet useless effects). Good luck with your project, the best advice i would give any new dev is to start small and work your way up.

QUOTE
but id like to try box2d etc, and im currently using SDL primitives, so hopefully its fairly easy to get going on the pandora
box2d is likely heavily float dependant, so getting good performance on the Pandora may require some serious reworking.

Its beginning to feel more like a game, here's my current build:
screenshot002vt5.jpg


Whats changed:
- added some basic enemies.
- made player animations for still, move, grab and punch actions (picture shows the grab animation).
- made explosion effect.
- made projectile engine and shotgun bullet.

Note: The bullet and enemy sprites are not final. Also realise that at the Pandora's screen size the dimensions of my sprites make more sense.

Thanks all for your comments.
 
I made some progress so i made a quick video showing you the basic gameplay.

You can see it here: http://au.youtube.com/watch?v=sZHi3YT3xuE

Changes:
- Combo System, The number of points each kill produces depends on: The number of kills this projectile has already made, the number of kills without letting an enemy past and a "Tricky" factor.
- 3 enemy varieties.
- Various graphics.
- Blood.

QUOTE
Looks good why not make low poly 3d characters of them?
I considered doing this but i think the only improvement would be gained in the animation department. I've also got absolutely no skill at modelling.
 
awesome

and damn about box2d, ive been trying to get the bloody mousejoint working for over a month, everything else im alright with but this is one pain lol

mmmmmm, is there any other alternative physic engines, (well im currently learning joint particles, which should be the only thing i need to make his game, so hopefully ill attempt to make my own engine)

anyway i take it your game controls are
L analogue to move
R analogue (point to rotate in direction)
hold R trigger to grab
release R trigger to chuck

its looking great
 
After having seen the video, I am starting to get all giddy over the lumines-esque visual effects that this could get. My idea for custom levels:

Have a beat file that allows users to create guidelines for the game to pulse and throb by according to the music.

First would be the bpm. This would be where most of the elements that are directly related to gameplay come in: The speed of the enemies depends on the bpm, the distance between enemies, when they choose to fire, and, what I think would add a really neat element to the game, bonus points could be granted to players who catch and throw enemies with the beat (say, closer to a 2x multiplier when it is on the beat, down to 1x multiplier if it is on a 8th or 16th division of the beat).

Second would be the visual pulsation effects. Purely for visual effect you could place 'beats' for these however you like, but the idea is to have it go with the music. It could affect things like causing the flaming auras to pulse larger and at a different color, the health bars changing colors, stuff like that.

Then third could be the visual theme. So you could include cues to change the visual theme of the environment, which could affect your appearance, the background, the GUI, all sorts of stuff. allowing for smooth, continuous transitions could allow for some really neat visuals.

So an example of this would be:
CODE

BPM:+---+---+---+---+---
VIS:+--+-+-++--+-+-++---
THM:1---------------2---


In this case, the visual beats are going along with the snyth leads that were shown in the trailer, and the theme is shifting back and fourth every four beats.

And of course, for music that is just randomly thrown into the folder, it could default to a logarithm-found bpm, with visual beats firing every half beat, and the theme randomly shifting every eight or sixteen beats.


Whew a long post. But I am really excited for this game!
 
Back
Top