Omnimaga
Calculator Community => Other Calc-Related Projects and Ideas => TI-Nspire => Topic started by: Matrefeytontias on May 10, 2014, 10:28:08 am
-
Yes. Apparently I wasn't completely satisfied with IkarugaX for z80 calcs (in action here : ), so I thought "mh, what if I add colors, moar pixels and moar CPU". I thought about it and the answer popped in my head : moar awesome.
It's being programmed in C++, and I'll try to stay true to the original on the level design side. Of course it won't have super-amazing 3D graphics, 2D motion blur and all that shit (unless I find a GPU that works on Nspire calcs), but I'll really try to make it beautiful.
Screenshot coming in a minute.
EDIT : here you go
(http://img.ourl.ca/first-1.gif)
Of course the questionable quality is because of the recording.
-
Looks pretty nice so far. I wonder if you'll add backgrounds when the engine is mostly done?
-
Of course I will. I will also add an option to disable them though, both for performance and for TI-Nspire non-CX support (for now the .tns works on every Nspire, but backgrounds will make the game difficult to see).
By the way, something I was wondering : would the game be better played vertical (like in the screenshot) or horizontal, due to the screen's dimensions ?
-
It's being programmed in C++, and I'll try to stay true to the original on the level design side. Of course it won't have super-amazing 3D graphics, 2D motion blur and all that shit (unless I find a GPU that works on Nspire calcs), but I'll really try to make it beautiful.
Your two lines encouraged me to make nGL monochrome-ready. I published a beta, but it should make it easier to develop a application compatible with both CX and non-CX support. Motion blur could be implemented by reading storing a few older screen buffers, making everything transparent with Z=0x7FFFFFFF and drawing it on top. That should scale linear performance-wise with more blur, but if you optimize it a bit, you should get >30 fps out of it if you don't draw too many triangles.
By the way, something I was wondering : would the game be better played vertical (like in the screenshot) or horizontal, due to the screen's dimensions ?
If you implement different levels, I guess it should alternate, maybe even upside-down?
-
Of course I will. I will also add an option to disable them though, both for performance and for TI-Nspire non-CX support (for now the .tns works on every Nspire, but backgrounds will make the game difficult to see).
By the way, something I was wondering : would the game be better played vertical (like in the screenshot) or horizontal, due to the screen's dimensions ?
as long as I don't have to hold my calc sideways to play the game I am fine.
-
By the way, something I was wondering : would the game be better played vertical (like in the screenshot) or horizontal, due to the screen's dimensions ?
I don't know if you plan to include a GUI but if you do, you can get your screen to become a square by putting the GUI either on the left or on the right and then the problem doesn't exist anymore :P
Anyway, nice work :)
-
Motion blur could be implemented by reading storing a few older screen buffers, making everything transparent with Z=0x7FFFFFFF and drawing it on top. That should scale linear performance-wise with more blur, but if you optimize it a bit, you should get >30 fps out of it if you don't draw too many triangles.
Maybe that's possible with crafti but that's because you put motion blur on everything. For a SHMUP, motion blur must apply only to bullets and explosion, so you can't go with a per-buffer basis.
By the way, something I was wondering : would the game be better played vertical (like in the screenshot) or horizontal, due to the screen's dimensions ?
If you implement different levels, I guess it should alternate, maybe even upside-down?
I'm trying to stay relatively true to the original, so it's going to be either one way or another. I was wondering if I should privilege screen width or screen height.
EDIT : ninja'd by Hayleia
By the way, something I was wondering : would the game be better played vertical (like in the screenshot) or horizontal, due to the screen's dimensions ?
I don't know if you plan to include a GUI but if you do, you can get your screen to become a square by putting the GUI either on the left or on the right and then the problem doesn't exist anymore :P
Yeah, but I'm more referring to the actual game.
Anyway, nice work :)
Thanks ;D
-
Already looks pretty sweet. Looking forward to it. :D I already love IkarugaX. By the way when you say the original do you mean that or the GameCube game ?
-
I mean Ikaruga, the Dreamcast game by Treasure ;D (and later the GameCube, XBox and Android port).
Although I love IkarugaX, I'm not porting it since it's already a clone :P
EDIT : poll added
-
Oh OK LOL. Didn't know it was for the DC originally, but again most of this console's game library was ported to the GameCube.
About the poll I'd say vertically with letterbox borders. That gives you space for the HUD too.
-
Update !
I've done a very great part of the main engine done - I don't really know how to call that lol, I've done many things. That includes a custom Enemy engine, Bullet engine, patterns engine, and others.
Anyway~, the engine right now is capable of beautiful things like this without getting any noticeable speed hit (although there's no collision) :
(http://www.mirari.fr/hAk3)
Pretty amazing right ? :) and I'm using floating-point calculation for each bullet (only because I was lazy to create a fixed version of cosine and sine, otherwise the whole program uses fixed-point), so it can even be made a lot faster :w00t:
What I'm rather proud of is that the engine is 100% modular. That is, the game uses a LUT for images, and even for callbacks, the specific code that each enemy executes when it's checked - its behaviour. So all I have to do to add moar enemies or moar gfx is only to add the corresponding data to the corresponding file, and add an entry or two in an enum :D
-
Beautiful. :D I like the modularity; it makes life so much easier.
-
Bump,
Great news : Metarro (from PixelJoint and DeviantArt) agreed to help me with the sprites ! :D
I replaced all of the previous sprites by his - I actually took the previous ship sprite from his page, and I even added an animation when you switch polarities :w00t:
Give a look to his amazing pixel-artist talents :
(http://www.mirari.fr/CWnG)
Next on the list : collisions and level streams ! That means I'll have actual level design to be done.
-
Fixed.c (https://gist.githubusercontent.com/Eiyeron/9394041/raw/71ed4d598ddf32a17f340864a098a6ce89772e37/fixed.c)
Fixed.h (https://gist.githubusercontent.com/Eiyeron/9394041/raw/456a789edf678c314c9b206e516542270ce1b73e/fixed.h)
Here you go.
-
Hum ... what ? I never asked for ... well, anything.
Besides, I already have FP stuffs, and in a form that suits the project.
-
Maybe he accidentally posted in the wrong topic? :P
Also this looks very promising Matref, especially speed-wise O.O
-
Maybe he accidentally posted in the wrong topic? :P
Well that's a possibility ;D
Also this looks very promising Matref, especially speed-wise O.O
Thanks :) and yeah, I'm trying my best to execute only micro-operations that takes a very small amount of cycles. Though, let me stop being lazy and change the ugly cos()/sin() calls into a cosine table and that will be even faster :P I hope it won't do like with IkarugaX and keep bullets super-fast while making enemies an extreme hit to speed (because bullets are just 2 additions, 4 tests and one sprite drawing, and each enemy has its own AI).
-
Hehe Eiyeron. :P
Also it does look awesome indeed. Do you plan to add a background cause white looks pretty plain. :/
-
<_< I already talked about that :
Of course I will [add backgrounds]. I will also add an option to disable them though, both for performance and for TI-Nspire non-CX support (for now the .tns works on every Nspire, but backgrounds will make the game difficult to see).
-
Whoopsie. ::)
-
One simple word :
wow :p
(http://i.imgur.com/2VMpZwH.png)
-
Maybe he accidentally posted in the wrong topic? :P
NO, in case you want to switch to Fixed Point, here is a mini library for it. It greatly increase the speed.
-
So in the original Ikaruga, this enemy that you can see in the previous screenshots - the most basic enemies - rotates. First, I wanted to recreate that by using SDL_gfx's rotozoomSurface function, but as the framerate dropped by nearly 60 FPS (!!!) I decided to create my own custom_rotosprite function. As a result, the speed loss is hardly noticeable :
(http://www.mirari.fr/JJcJ)
So the sprite rotation is *nearly* perfect, obviously because of the use of fixed-point cos and sin, but as you can see it does the job pretty well. Also, I really didn't try to make it optimized, so I'm sure I can *at least* double the speed of the rotation routine (I do 4 multiplication per loop, and I'm sure I can instead do 2 additions).
EDIT (ninja'd by Eiyeron, yes I took 45 minutes to write that post) : I'm already using fixed-point, what were you thinking, that I could get that speed with floating-point ? <_<
-
Minor improvements, I greatly sped up the rotosprite routine, throwing 4 multiplications and 2 additions out of the main loop at the (minor) cost of 4 additions. Although that worked well, that's not really worth a screenshot.
-
EDIT (ninja'd by Eiyeron, yes I took 45 minutes to write that post) : I'm already using fixed-point, what were you thinking, that I could get that speed with floating-point ? <_<
I didn' t say that, I supposed you were sticking with floating point. I just wanted to help you.
-
Yeah well, thanks for trying to help and sorry if I sounded rude, but I really can't find any post where I said that I needed anything else than a binary cosine LUT :P
-
On a more positive note, update !
I've implemented level streams ! :D That means that enemies can now arrive on-screen in an organized manner, without me having to declare several enemies in the code - a single array of enemies is enough for the whole game, as there will be a definite maximal number of enemies on the screen at once. :)
The "levels" are scripted, and easy enough to design. Here is the current example level script :
int levelStream[] = {
enemy(110, 0, image_LUT_enemy_ship_0_light, image_LUT_enemy_bullet_1_light, callback_LUT_0, LIGHT, 1),
enemy(220, 0, image_LUT_enemy_ship_0_shadow, image_LUT_enemy_bullet_1_light, callback_LUT_0, SHADOW, 1),
cmd_killed,
LVLSTR_END
};
Here, an enemy() instruction adds an enemy to the scene. The prototype is the following :
enemy(x, y, imgID, bulletImgID, callbackID, polarity, hasRotation)
Due to the project using LUTs to speed up ... well, everything that can be speeded up, no images or pointers to functions are passed. Everything is handled by IDs that are looked up in the corresponding tables. So yeah, for now that makes level editing impossible to anyone but me, but at that point of development, who cares, really :P
Next, there's the cmd_killed instruction. It's a level stream command, waiting for every active enemy to be killed or having exited the map before carrying on the level stream. I also implemented the cmd_wait(frames) instruction, whose purpose is obvious, but it's not used yet.
Then, the end of the level stream is marked by LVLSTR_END. When this point is reached, the game waits for every enemies to be killed, then quits - although for now you can't kill enemies so we'll see if that works when I'll implement collisions :P
Here's a screenshot of the above level stream :
(http://www.mirari.fr/Lp9X)
This time, I'll really work on collision detection :P I just hope it won't slow things too much - although I'm certain that it will.
-
Fasten = attached.
/me runs
-
Oh yeah forgot that. Vocabulary corrected.
-
Hehe. :P
Anyway nice update ! :D
-
Then, the end of the level stream is marked by LVLSTR_END. When this point is reached, the game waits for every enemies to be killed, then quits - although for now you can't kill enemies so we'll see if that works when I'll implement collisions :P
^That was the part I forgot when I was seaching how to dsign a SHMUP. THanks!
/me is gonna write some things for that. Someday...
-
Yay, collisions ! They're still nice even without actual HP ;D
(http://www.mirari.fr/65ew)
Also, the level stream does work correctly :D
-
Idea: If you use a function that takes an index as a wrapper instead of directly accessing the array, then you could use both the current level stream idea and use a streamy stream, such as something infinite or random or better than what I can think of right now.
-
I don't really understand what you mean ... could you be more precise please ? :/
Anyway, as some people on TI-Planet told me that the sprites were too big for the screen, I tried to use sprites of half their original size (until then, I was using sprites 3/4 of their size). Which one do you prefer ? I personally think the smaller sprites will permit more things to happen on-screen.
Three-quartered size :
(http://www.mirari.fr/9Ks8)
Halved size :
(http://www.mirari.fr/JAkG)
Which one do you prefer ?
Also, these patterns are the exact first ten seconds of the original Ikaruga game ;D
-
I do indeed prefer the half sized sprites. You might then just ask the creator to make new sprites that are that size, though, as they look a bit messed up by the scaling right now.
-
Yeah I think I'll do that.
-
Example code:
So you have this:
int levelStream[] = {
enemy(110, 0, image_LUT_enemy_ship_0_light, image_LUT_enemy_bullet_1_light, callback_LUT_0, LIGHT, 1),
enemy(220, 0, image_LUT_enemy_ship_0_shadow, image_LUT_enemy_bullet_1_light, callback_LUT_0, SHADOW, 1),
cmd_killed,
LVLSTR_END
};
and you (probably) access it like this:
levelStream[n]
If you did this:
int levelStreamAArray = {enemy(...),enemy(...),cmd_killed,LVLSTR_END};
int levelStreamA(int n) = levelStreamArray[n];
int (*levelStream)(int);
levelStream = &levelStreamA
and accessed like this:
levelStream(n)
then you could also do this with just a change to your levelStream pointer:
int levelStreamB(n) = switch (n%3)
case 0:
return enemy(110, 0, image_LUT_enemy_ship_0_light, image_LUT_enemy_bullet_1_light, callback_LUT_0, LIGHT, 1);
break;
case 1:
return enemy(220, 0, image_LUT_enemy_ship_0_shadow, image_LUT_enemy_bullet_1_light, callback_LUT_0, SHADOW, 1),
break;
case 2:
return cmd_killed;
break;
default: // Stops the compiler from yelling at you and is probably good in case of lobsters
return LVLSTR_END;
levelStream = &levelStreamB
You access it the same:
levelStream(n)
Make sure your functions don't grab the whole array/function at once, and you're great! (New idea: survive for X amount of time; you could just put a case at top that gives LVLSTR_END if the time is done)
-
I don't really see the point as the stream is intended to be read sequentially anyway (though the level script will include some conditional jumps).
About surviving, in Ikaruga you beat the last boss by surviving 60 seconds while being unable to fire any bullet :P
-
Bump,
So while waiting for better sprites, I started implementing the first level of the original Ikaruga. Well, I really didn't think I would have to use parametric functions and second/third degree polynomials for trajectories x.x
The result is pretty nice anyway :
(http://www.mirari.fr/PCy9)
-
Damn that looks great. O.O
-
Damn that looks great. O.O
'nuff said.
Looks awesome :D
-
So I made a Github repository here : https://github.com/matrefeytontias/nKaruga . Feel free to fork it and contribute if you want :)
Any help, valuable commit or feature request is of course greatly appreciated :)
-
Playing with the patterns engine. That's why "danmaku" means "bullet hell".
(https://raw.githubusercontent.com/matrefeytontias/nKaruga/6e3920f222fdd7feabc3a3a28b823c5e51b30213/screenshots/epicBoss.png)
-
Playing with the patterns engine. That's why "danmaku" means "bullet hell".
(https://raw.githubusercontent.com/matrefeytontias/nKaruga/6e3920f222fdd7feabc3a3a28b823c5e51b30213/screenshots/epicBoss.png)
*.*
-
Omg this is epic. *.*
-
I thought that it would be funny to show you how it really plays ;D I had to change all bullets to the same polarity so, you know, you have the time to see something before I die.
(https://raw.githubusercontent.com/matrefeytontias/nKaruga/master/screenshots/epicBossAnimated.gif)
-
is the player supposed to survive that????
I'll bug my friend to get it
-
The point of Ikaruga (and thus nKaruga) is that only bullets of the opposite polarity hurts you, when bullets of the same polarity get absorbed and fill you power gauge (not implemented yet). So yeah, against this type of enemy (which is in the real Ikaruga, chapter 5 end of intro), just being in light polarity makes you unbeatable.
-
It would be a disaster if that couldn't happen...
-
That looks crazy sick O.O
-
I added fireback ! That's what makes the game cool ;D Basically, when you kill an enemy with a bullet that has the same polarity as him, it explodes in 16 bullets of its own polarity aimed towards you. That can go pretty far. Oh, I also added another wave, the intro of level 1 is now nearly done :D
(https://raw.githubusercontent.com/matrefeytontias/nKaruga/master/screenshots/fireback.gif)
If someone could test it on a color TI-Nspire, that would be really cool, because I know that the monochrome version is broken (and crashes your Nspire), so I can know if it works and if it goes fast enough :D all you need is the attached nKaruga.tns. Fire with [esc], switch polarity with [tab] and quit with [clear].
-
Testing nao! :O
-
I added fireback ! That's what makes the game cool ;D Basically, when you kill an enemy with a bullet that has the same polarity as him, it explodes in 16 bullets of its own polarity aimed towards you. That can go pretty far. Oh, I also added another wave, the intro of level 1 is now nearly done :D
(https://raw.githubusercontent.com/matrefeytontias/nKaruga/master/screenshots/fireback.gif)
If someone could test it on a color TI-Nspire, that would be really cool, because I know that the monochrome version is broken (and crashes your Nspire), so I can know if it works and if it goes fast enough :D all you need is the attached nKaruga.tns. Fire with [esc], switch polarity with [tab] and quit with [clear].
THat's a pretty sick demo of the nSpire's power. Well done!
/me is now thinking about porting an unfinished game.
-
If someone could test it on a color TI-Nspire, that would be really cool, because I know that the monochrome version is broken (and crashes your Nspire), so I can know if it works and if it goes fast enough :D all you need is the attached nKaruga.tns. Fire with [esc], switch polarity with [tab] and quit with [clear].
Mr. compatibility can't get the monochrome version working? Awww... D:
-
What are you calling me again :P
And don't worry, I'm working on it - besides it's n2DLib's fault, not nKaruga's.
-
Okay, fixed o/
Working-everywhere executable attached :D
So Mr. Compatibility struck again ...
-
tehe. I'm going to test this now.
-
Beware that it's very hard to play on monochrome screens though. Don't blame me, that's TI's fault for using such lame screens.
-
Just played it. Nicely done! I think it needs to have more enemies firing at you in the first stages, though :P
-
Man, I'm telling you hundreds of times I'm porting the real Ikaruga levels :P
Just have a look at the actual level 1 intro (https://www.youtube.com/watch?v=V_W9sqktszg) and then look at my level 1 intro (https://raw.githubusercontent.com/matrefeytontias/nKaruga/master/screenshots/fireback.gif) (of course disregard my last enemy, it's just a test enemy).
-
Okay. That's good, then :P Keep up the good work!
-
Wow that's sick indeed. I'd even say it's ill.
/me runs
-
Erm, those screenshots do look appealing but on calc, it's not so fun :P
- It is slow, maybe you forgot to remove the sleeps or whatever
- Why don't you use numkeys to move ? It is very annoying on CXes and other touchpad Nspires
- Why the heck is ESC for firing ? I tried all the obvious keys but this one to fire, then I was about quit and pressed ESC (to quit, as I said) and it fired x.x Then I was wondering what was the key to exit, and found out it was DEL but seriously, why ESC for something else than quitting ? Every Nspire program quits with ESC
So of course, do what you want, but if you don't do "numpad to move, ctrl to fire and shift/tab to change polarity" (tab is what you use already), make a good readme about it :P
-
Oh wait a minute.
(http://img.ourl.ca/stoopidMe.png)
Correct program attached.
Guess who uses ESC as A ? GBC4Npsire. And I found that pretty logical since you can hold your Nspire like a gamepad → use the (click|touch)pad as arrows. I've always been uneasy with numkeys as arrows. But you know what, I'll do a controls configuration menu.
Also it's not like I didn't detailed it in previous posts --'
-
Lol you did that to throttle the emu ? :P
-
Exactly <_< now I can't test it on emu, neither the monochrome or color version. At least it's super-fast, so I'm happy ;D
-
New pattern using Hayleia's sprites :D
(https://raw.githubusercontent.com/matrefeytontias/nKaruga/master/screenshots/enemynormal.gif)
Yeah I know bullets aren't coming from the right spot.
-
So many bullets O.O Also, awesome pattern :)
-
Bullet hell indeed. *.* Looks epic. :thumbsup:
-
Is the point of fireback to heal you? Because that would seem counterproductive to what the developers would likely want, to have you fight the enemies on the opposite polarity.
-
The bullets don't heal you. They simply don't hurt you.
-
Bullets of your polarity don't have no effect : upon absorbing one, you earn points (only a few) and it also charges your power gauge - though it's not implemented yet. The point of fireback is to give you bullets to absorb so that you can have access to a power release (todo too, it's like homing lasers - shut up Hayleia that's actually in the original), but it also becomes a danger if you have to switch polarity.
So a tough point of a the game is to chose wether you want to kill an enemy fast or to charge your laz0r, with the risk that you'll have to switch polarity in the middle of the fireback.
-
(todo too, it's like homing lasers - shut up Hayleia that's actually in the original)
I didn't say anything :P
Plus, I tried the original (on GameCube) and I saw them.
And don't ask me why I tried the last level on the hardest difficulty. I didn't understand anything in that checkerboard at the end :P
-
So I replaced the big test enemy by pierrotdu18's sprite, since I thought the amount of bullet fired was in correct proportion with the enemy itself :P it works amazingly well !
(https://raw.githubusercontent.com/matrefeytontias/nKaruga/master/screenshots/bigenemy.gif)
Also, I shrank the enemy from 80*80 to 60*60 because it was obviously too large (1/3 of the screen vertically ? Really ?)
-
I like the part where there are ships and bullets. :thumbsup:
-
I like the part where there are ships and bullets. :thumbsup:
That. Also the scaling destroyed the sprite a bit. :/
-
Well it's not that bad IMO. This is still a calculator game, keep that in mind.
Also, instead of redoing the sprites so they look 2D, pierrotdu18 accepted to work on every ship sprites to make them look 3D :D so the game will certainly have an awesome feel to it :w00t:
-
I do hope so ! :D
-
So Metaru delivered the new cel-shaded sprites ! :D
Until now I was using scaled-down versions of his bigger sprites, but he made other ones to the right size so it doesn't look blocky and shit like my scaled-down versions did :P
Take a look at that !
(https://raw.githubusercontent.com/matrefeytontias/nKaruga/master/screenshots/newCel-shadedSprites.gif)
-
/me prods matref to add explosion animations :P
-
Well yeah, give me one and I'll implement it :P
-
Awwww yeah. <insert epic guitarist here>
-
Great new sprites !
For explosions, what you can do is draw orange growing circles around the place of the explosion (not concentric). I think this was what used in Kirby Super Star but I can't find any video of explosions -.-
-
I would prefer actual explosion sprites :)
Also, you were day-dreaming of it without daring mentioning it, but here it is ... scrolling background awesomeness !
(http://www.mirari.fr/toLw)
As I said, you'll be able to turn it off in the final game, for speed and/or monochrome screen issues :)
This is possible because I noticed that memcpy could be made 4 times faster in the context of nKaruga because I can refresh the buffer by moving unsigned ints (4 bytes at a time) instead of char (1 bytes at a time, what does memcpy). So the speed loss is even hardly noticeable ! :D
DL attached so you can test by yourself :) I would appreciate if someone with a color Nspire could tell me what the speed looks like (remember Nover too). It's now much larger because of the background of course.
Don't even try to test on monochrome Nspires though. You can't see shit with that on, I'll soon add a button to toogle bg on/off.
EDIT : updated the attachment to not contain emulator debug commands <_<
-
Is it just me or is the BG a bit choppy?
Anyways, it is looking awesome :D
-
It's not you, it's the gif :P
-
It's true that on my non-CX the speed loss is really bearable, but on CX it's still very slow :-\
On CX, with the old version, you needed 7 seconds to cross the screen with your ship, while on the new version, you need 9 seconds :(
On non-CX though, you needed not even 4 seconds, and now you need 5 seconds.
edit no, I didn't underclock my CX and no I didn't overclock my non-CX.
-
Great new sprites !
For explosions, what you can do is draw orange growing circles around the place of the explosion (not concentric). I think this was what used in Kirby Super Star but I can't find any video of explosions -.-
For explosions, I gave matref two animated gifs, as realistic as possible ;D
He was very glad, so I think it's gonna be great :)
-
Oh shit, I forgot to comment #define DEBUG_NKARUGA -_-
Post updated, download it again to have the version where there's no sleep(3) <_<
-
Yay ! Only 8 seconds to cross the screen now D:
Seriously, what did you change in n2DL between my version of Jetpack Impossible and now (not that the version I am talking about doesn't have double buffering) ?
-
Hum I can't say for sure :(
I changed g++'s compiler settings to -O3, just to try. New version attached.
EDIT : this time with -Ofast.
EDIT 2 : changed some things in the bullet checking code
-
Hi, i'm Metaru, im the artist behind those sprites. i'll try to post from time to time to show some of the sprites i'm doing for the game as i deliver them. i have to say, i'm a big fan of ikaruga and i'm really glad i can be part of this.
as people requested, here are some needed explosion effects, both in Positive and Negative form.
(http://i.imgur.com/1FIXx4B.gif)(http://i.imgur.com/viSITRT.gif)
-
Oh hey, welcome on Omnimaga :D I guess I'll be using those explosion sprites for the cel-shaded spriteset and pierrotdu18's for the depth one.
-
In fact, Excale said that there was no point in replacing the .c by a .cpp...
Maybe, with a lot of luck, the problem is c++ gcc ;D
-
Hi Metaru, welcome to Omni ! :D
Nice sprites and holycrap this background is epic. O.O
-
Bump,
Breaking news : thanks to the tests of aeTIos, Streetwalrus, Adriweb, pierrotdu18 and Nspirecas (from TI-Planet), I was able to fix the speed problem on color calcs ! :D
The truth is, I didn't only fix the speed problems on color calcs, rather I accelerated the program so much that it's become playable on color calcs :w00t: so of course it's now lightning-fast on GS calcs - so much it became unplayable, but the other way, the good one, since I can more easily slow it down than speed it up :P
So yeah, "proper" development can continue again ! First I'll finish the level 1 intro, then I'll start actual level 1.
Binaries attached for the ones that want to test ! Commands are described here (https://github.com/matrefeytontias/nKaruga/blob/master/README.md).
-
I should
force ask my friend to try this. Only person that I know who owns a N-spire.
-
So a friend made a video of it running on a TI-Nspire CX CAS :D
http://www.mirari.fr/GrlI
-
Great to hear :)
So how did you speed it up ?
-
Frame- and key-skipping.
And that's pretty awesome to hear ! :D (read : zomgzomgzomgthisisgonnabeepic!!!!1one!one hundred and eleven!!1)
-
So I added the beautiful title screen pierrotdu18 gave me ;D it also made me reorganize the game so it can have a proper sub-menu system (not done already, but at least it can).
https://mediacru.sh/wVzXgctYcBez (https://mediacru.sh/wVzXgctYcBez)
I also made the patterns cleaner by adding a per-wave timer, so it can have nice timed behaviors and shit.
Demo attached ! It's much larger because of the hard-coded pics.
-
Whoa that looks sick ! O.O
-
Oh wait I forgot to remove debug mode again. TNS updated on the above post <_<
-
Alright so I added aeTIos's sprites aaaaand ... a nice transition between intros and chapters :D I'm also glad to say that given that I now have every sprite I needed, introduction of level 1 is now completely done ! :D
Coming soon ;) (that's an in-game shot !)
(http://img.ourl.ca/transitionStill.png)
-
That looks great ! :D
-
my sprites kind of feel out of place :x idk imo they dont blend in too well. I'll try to make them a bit better.
-
Okay so I improved both the transition and n2DLib, so if anyone wants to try it on color calcs to see if it's any better :)
http://www.mirari.fr/eTV6
-
Hmmm it seems to work well. I got a freeze which made the calc reboot after a minute but the rest works. Also if you turn off the background it's insanely fast. O.O
-
So I started working on level 1 patterns, that's what it gives what now :
(http://www.mirari.fr/AaJf)
I also planned to make the transition better, so that it ends with the black rectangle slowly disappearing instead of brutally like now. Also, fade-in the text at the beginning :E
Updated TNS : http://www.mirari.fr/eTV6
-
A friend thought that I could do kinda like in the original Ikaruga and put the HUD at the left of the game window ; at first I thought that this latter would be too small compared to the sprites, but then I tested and it appeared so it works kinda well.
Reserved space :
(http://img.ourl.ca/preHUD.png)
Image I made to put in reserved space :
(http://img.ourl.ca/hud.png)
What do you think ?
-
Looking cool to me. :)
-
Quick screenshot of both combined :
(http://img.ourl.ca/preHUD-1.png)
On there will be the score, the chain status and the power charging.
-
I don't know if it's really necessary tbh. I think I'd rather see the whole screen used and just put lives etc. along the top or bottom of the screen.
-
I'd not necessarily use the whole screen, but I'd still use a bigger part of the screen. Can't the score be displayed on top with a font that supports transparency, and bars be displayed on the left but in a smaller area ?
-
With the HUD, the game window is a 240*240 square. Really it doesn't show on the screenshot but it's fitting the screen rather well.
If you really want to widen the game window, I can turn the HUD from 60*240 to 30*240, display score where it doesn't bother the player - ie the corner where the player is not - and bars and chaining status in the HUD.
-
If you really want to widen the game window, I can turn the HUD from 60*240 to 30*240, display score where it doesn't bother the player - ie the corner where the player is not - and bars and chaining status in the HUD.
That's exactly what I said, probably with poor wording :P
So yeah, I'd agree with that solution :)
-
It's worth noting that I can't use the top of the screen because the enemies' lifebar will be there.
-
So after some discussion on IRC I decided to drop the idea of the HUD as the screen is small enough already. Instead I'll draw everything on the left or right of the screen, depending on where the player isn't.
-
Triple post <_<
I added score counting to the game. Here's how it (will) work(s) :
- Each time your bullet hits an enemy (not necessarily kill it), you get 100 points. So the stronger the enemy, the more points it gives.
- Each time you absorb a bullet of your polarity, you get 10 points.
- Each time you kill an enemy, its polarity is remembered and will be displayed. If you kill three enemies of the same polarity in a row, your chain count increases.
- If you kill an enemy of a different polarity than the precedent, you break your chain : you lose your chain count and your chain status - the memory of the previously killed enemies. This only happens if you fail to kill three enemies of the same polarity in a row ; killing blue-blue-blue-red doesn't break your chain - it switches it to red, but killing blue-blue-blue-red-red-blue breaks it.
- Each time you kill an enemy, you get 100 * 2chain count points, up to 25 600 points at once (chain count of 8 ).
Someone was asking what was the point of firing at an enemy with the same polarity as his since the opposite polarity does double damages. Well, this is the point : since the opposite polarity does double damages, you have to hit it less times before killing it → less points. On the other hand, killing it with the same polarity fires bullets back, which can be good (absorbing them) or bad (when for example you kill a blue enemy with blue bullets while a red enemy fires at you). So it can get complicated very quickly.
Since I didn't start implementing chaining yet, you can only win 100 points by hitting an enemy and 10 points by absorbing a bullet.
-
You make it look like the goal is to make points, but to me, the goal is to survive first :P
Also, I just tried your latest update and I am glad to confirm that speed issues are a thing from the past ^^
However, it is really unplayable with the touchpad -.-
At worst, if you don't want to replace the touchpad with numpad, can you make that we don't need to click on the touchpad ? This way, we wouldn't try to play as with keys, put two fingers on it and go a random direction that the touchpad decided; we would put one finger on it and move it left/right to move (as on a virtual joystick).
-
You make it look like the goal is to make points, but to me, the goal is to survive first :P
In my case, the goal is to survive more than 1 second. :P
Anyway I saw screenshots of this over the last few weeks here and there and awesome job. I like the look of the game so far and unlike many other calc games, it isn't just a plain white or black background (although some of those game are excellent as well).
-
Good news guys :D the scoring system has been fully implemented now :D
Look what it gives :
(http://www.mirari.fr/9wWc)
I show how the chaining system works, and I intentionally break the chain to show what it does.
Nevermind the fact that the text is cut, it's because of the recording software.
Attached version if you wanna test :)
-
I'm on FreeWifi with my phone atm so I can't really see much but it sure looks cool. :)
-
Here's a video as you asked. See how I suck at it too. :P
https://mediacru.sh/cZ0-CYV1ObYw
-
Thanks :D (I wanted to see what it was like to have a color screen ;D )
Now that I see you, you know the chain breaks only when you kill the wrong enemy when you don't have 3 balls of the same color, right ? :P I see you avoided killing red ships although your blue chain was already complete.
-
Hehe yes I noticed that. :P
-
Here's a video as you asked. See how I suck at it too. :P
https://mediacru.sh/cZ0-CYV1ObYw (https://mediacru.sh/cZ0-CYV1ObYw)
Whats open on your monitor?
-
It looks really good on the video. Also this Ikaruga clone looks much faster-paced than other calc clones out there. :P
-
Here's a video as you asked. See how I suck at it too. :P
https://mediacru.sh/cZ0-CYV1ObYw (https://mediacru.sh/cZ0-CYV1ObYw)
Wats open on your monitor?
It looks like a firefox window with the console thing (F12) open.
On-topic: That looks really nice, especially with such good speed :)
/me should order a new battery for his CX
-
Here's a video as you asked. See how I suck at it too. :P
https://mediacru.sh/cZ0-CYV1ObYw (https://mediacru.sh/cZ0-CYV1ObYw)
Wats open on your monitor?
It looks like a firefox window with the console thing (F12) open.
On-topic: That looks really nice, especially with such good speed :)
/me should order a new battery for his CX
That was your wip site you showed me a screenie of :P
-
I added the explosion sprites Metaru made some time ago :) it looks great if you ask me !
(http://www.mirari.fr/PXda)
Next task : implement touchpad support. I looked to Ndless examples using it, it looks easy enough, so it should be fast. I'll need someone to test each build though, as I don't have any TP Nspire.
-
Alright so that was fast :P touchpad support is here ! Test version attached, press 4 to enable touchpad and 5 to disable it.
-
Triple post <_<
Still continuing level 1, so if anyone wants to test, go ahead.
-
Quadruple post, but this time for an awesome pre-update :D
(https://mediacru.sh/CwDGWb2lpe4-.gif)
-
Now this sir, is looking awesome :thumbsup:
-
Now there's more ! :D
I've finished implementing everything around the power releases system, that is, power absorption, storing and release. So let's get a quick look at it :
Basically, you build up power by absorbing bullets of your polarity. You can build up up to 120 power units at once, absorbing one bullet giving you one power unit. When you have at least 10 power units, you can execute a power release : your ship then fires one auto-guided power laser per ten of power units. That is, if you have 23 power units when releasing power, you will fire two power lasers ; if you have 109, you will release 10. After a power release, you lose all of your power units, regardless of the amount being divisible by 10 or not. To avoid wasting power units, you can see completed power slots (on the left of the screen) blinking, and the one that you're currently filling is not blinking.
A power laser (generated by a power release, opposed to a normal laser) is very fast and cannot miss its target, but since it goes straight to the enemy that is the nearest to it, it will break your chain easily. It's also very powerful as it inflicts 10 damages at once, and 20 to an enemy of the opposite polarity ! So it's particularly useful if you want to quickly clear a mess around you or badly hurt big enemies.
One clever thing to do is to kill big enemies with power lasers of their polarity ; that way when dying it will fire a lot of bullets back and you'll can quickly reload your power gauge.
And here's a demonstration of it working :
(http://www.mirari.fr/M64k)
And here's the link for those who want to try :w00t: : http://www.mirari.fr/eTV6
Beware though, I've changed commands to make it better-played on emulator :
Commands for this beta :
CTRL : fire
SHIFT : switch polarity
DEL : release power
arrows : move
ESC : quit
Temporary debug commands:
4 : enable touchpad (obviously, it only works with touchpad Nspires)
5 : disable touchpad
7 : enable background
8 : disable background
The beta ends when all enemies are defeated or quitted the screen.
Enjoy and share your scores ! :D
-
Bump,
I've added enemies' big lasers, along with a basic particles engine for fanciness :P
(http://www.mirari.fr/6L6j)
Download : http://www.mirari.fr/eTV6
EDIT : changed the code to make particles more visible, not shown on screenshot
-
Wow, this looks REALLY good! I don't have an Nspire, but now I kinda wish I did. ;)
You have earned one more internet... ;)
-
For instance a +1 on my post would be better :3 I wanna reach +300 !
/me runs
Thanks for the kind words ^^
-
This is looking amazing, i love the explosions and points. The laser looks cool, too, though it feels like it's just cut off at the end.
-
Well technically it is :/ I have no idea of a workaround for this. Except maybe make particles spray from the tip at all times and not only when the player is absorbing the laser. How about that ?
-
Bump,
nKaruga now has a startup menu where you can set up various things :)
(http://img.ourl.ca/startupMenu.png)
And those things include custom keys :D
(http://img.ourl.ca/customKeys.png)
Keys default to CTRL to fire, SHIFT to switch polarity and DEL to release power, but if you modify them once, they are stored in a config file so you don't have to re-enter them anymore :) (you should move the config file along with nKaruga.tns if you move the latter to another directory).
(http://img.ourl.ca/configFile.png)
I'm also thinking about storing the other settings in the config file, but I don't think it's really necessary. What do you think ?
A word about difficulties : there are 3 difficulties, Easy, Normal and Hard. The whole game is the same regardless of the difficulty, but there is a slight difference nonetheless :- In Easy mode, there is no fire-back. You're free to kill any enemy with the polarity you want.
- In Normal mode, only enemies that are killed with weapons of their polarity fire back.
- In Hard mode, every enemy fires back. The only thing is that they fire only half of the intended bullets if you kill them with their opposite polarity.
While this doesn't look like much of a difference, just try beating what I've already coded of the level in Hard mode ... even if you can't get killed (for now), you'll quickly understand the real difficulty ;) and if you don't, well, think that it's just level 1 :P
Download demo : http://www.mirari.fr/eTV6
-
For instance a +1 on my post would be better :3 I wanna reach +300 !
Granted you that now that you support custom keys :P
edit but is +300-10 really +300 ? :P
/me runs :P
-
I said +300, not 300 ;D Thanks anyway ! Also, about the config file ? Should I save everything in it or just the controls ?
-
Well, here's some ironical reflexion :P
1) Where do you store the other settings if not in the same file ? In another file to have the Documents screen take longer to refresh ? Or nowhere to annoy people by forcing them into re-setting their preferences ?
2) Are there so many settings to have you be afraid of saving them into a little file that would get bigger than the amount of memory of an empty CX if you saved them in that file ?
For those reasons, I think that yeah, they should be saved in the same file :P
Even if i's not really necessary, it still makes the difference between an easy-to-use (thanks to configuration) game, and an easy-to-use-and-convenient game ;)
-
Well I meant either this or to not store them at all <_< but yeah, I'll store them anyway.
-
So, well, yeah, I did it :P make sure you delete the previous config file if you had one though.
http://www.mirari.fr/eTV6
-
I like that option menu above. :D sadly I can't watch the other screenshot, though, since Tapatalk doesn't play most animated GIFs so I'll try to watch it at home.
-
Great news : chapter 1's level stream is now complete ! :D That means all of level 1 is now playable !
What's left before beta release v0.1 is the boss itself. To be fair, I have no idea how I'll do it for now, so that might take quite some time. Meanwhile, you can still train yourself on chapter 1 and in the 3 difficulties offered by the game ! It's true that you can't be killed yet, but that might come anytime soon :P
So finishing the whole chapter without firing once ("dot eater" achievement) takes you 5'43. It will actually be funnier when you'll be able to get hurt and die ;D
But for now, just try to kill every enemy (I can), and then try to make a single chain during the whole level, without breaking it once :D (I can't)
Download : same link as above, or attached :)
Screenshots of what's waiting for you :
(http://img.ourl.ca/preview0.png)
(http://img.ourl.ca/preview1.png)
(http://img.ourl.ca/preview2.png)
(http://img.ourl.ca/preview3.png)
(http://img.ourl.ca/preview4.png)
(http://img.ourl.ca/preview5.png)
(http://img.ourl.ca/preview6.png)
Have fun !
-
Progress : you can die now ;D Isn't that marvelous ?
(http://img.ourl.ca/playerDeath.png)
http://www.mirari.fr/eTV6
I still have to display remaining lives though.
-
Out of interest: are there missiles like the 83+ version?
(as that's the only version I play)
-
Look who didn't read the topic before asking :P
It's been a while since power fragments have been implemented.
(http://www.mirari.fr/M64k)
-
Ah, sorry :P
I just... didn't really follow as closely as I should of...
-
This, is, beautiful O.O
-
IMO it doesn't seem as much as hell as the 83+ version, but the sprites and everything look awesome!
-
That's because it's just level 1. There're 5 levels, so don't worry :P
-
I think it's good it doesn't start too insane, because in CaDan you can't even survive more than 3 seconds after the cutscenes unless you played Danmaku shooters before. >.<
-
That's because it's just level 1. There're 5 levels, so don't worry :P
I've gotten to level 3 on the 83+, insanity :P (and lag)I think it's good it doesn't start too insane, because in CaDan you can't even survive more than 3 seconds after the cutscenes unless you played Danmaku shooters before. >.<
I managed to beat it with no experience with the "Netham45" ship... with mostly bombs...
-
I think it's good it doesn't start too insane, because in CaDan you can't even survive more than 3 seconds after the cutscenes unless you played Danmaku shooters before. >.<
I managed to beat it with no experience with the "Netham45" ship... with mostly bombs...
Are you serious?? O.O
That reminds me, the Netham45 ship would be a nice easter egg in nKaruga :P
-
Yeah, I'm serious... but only once... I didn't read the last words so I'm re-trying.
(bombs in focus do awesome things)
(I only got this because I beat candan's demo)
Netham should be a lobster if he's implemented, not a spork :P
-
Hey ! This is not dead ! Holy shit !
As school has been violent on me lastly, I quite put this on hold. But now it's back, because that one project I really want to get done !
So what I did first is implementing an idea I had had since quite a long time, that is, a "drawing candidates" system.
So what is that ? Basically, it's a way of ensuring that every drawing is synced together and with the screen refreshes. So instead of directly drawing a sprite to the buffer, I create a drawing candidate with the X, Y coordinates of the sprite and the sprite itself (and a few more things, like angle of rotation, if rotation is needed at all etc). It acts kind of like a "drawing hook", meaning I can make special things happen each time a drawing is being performed. That's not the only advantage : since I use frameskipping, bringing all drawing in a single loop means I can do only one check to see if we actually have to draw anything or not, instead of one test per drawing !
I also started on the boss system, as I FIIIINALLY figured out how to do it. It's been hard, and it'll be even harder to code <_< but brace yourselves for impact when it's done ;D
So yeah, I don't have anything new to show, but my future life has been made a lot easier today (drawing candidates will be extremely useful, if not needed, in levels 2, 3 and 4).
But but wait what am I talking about ! I also set up this nice procedural explosion generation engine !
(http://www.mirari.fr/qtnt)
Can someone with a color Nspire tell me what the speed is like ? http://www.mirari.fr/eTV6
-
But but wait what am I talking about ! I also set up this nice procedural explosion generation engine !
[img]http://www.mirari.fr/qtnt[/img]
That explosion is beautiful.
So what I did first is implementing an idea I had had since quite a long time, that is, a "drawing candidates" system.
So what is that ? Basically, it's a way of ensuring that every drawing is synced together and with the screen refreshes. So instead of directly drawing a sprite to the buffer, I create a drawing candidate with the X, Y coordinates of the sprite and the sprite itself (and a few more things, like angle of rotation, if rotation is needed at all etc). It acts kind of like a "drawing hook", meaning I can make special things happen each time a drawing is being performed. That's not the only advantage : since I use frameskipping, bringing all drawing in a single loop means I can do only one check to see if we actually have to draw anything or not, instead of one test per drawing !
Will you be releasing a library for this at some point? I'm intrigued.
-
Woah matref, that explosion was beautiful and I like the intro banners :D
Btw, will Netham45 be a playable character finally? :P
-
bb010g & DJ: thanks :)
bb010g: I don't think so, because the code is just so tiny. You can have a look at it on the GitHub repo: https://github.com/matrefeytontias/nKaruga, in src/DrawingCandidate.cpp and src/DrawingCandidates.cpp . Also, for examples of use, see src/Enemy.cpp, in Enemy::handle().
DJ: I'll get the game done before adding anything fancy that's not required :P
-
Bump,
I'm done with the boss system ! :w00t:
It's actually a pretty complex system, that allows for nearly infinite customization and flexibility for bosses. It takes advantage of the fact that bosses have definite, non-modular behaviors, and thus always know exactly what hitbox to check or things like this. So let's see how that works :
- First, when cmd_boss is encountered in the level stream, a new boss is created and initialized. Upon creation, an initialization hook is executed, in the form of a function pointer. The goal of this hook is basically to set the boss up, and having it in the form of a function pointer allows me to use very generic code, while actually doing purpose-written tasks, since each boss is initialized differently.
- When the boss is created, the game enters "fight boss" mode, meaning that in addition to enemies and bullets, the boss will also be handled and updated when necessary.
- When the handle() function of the boss is created, a really simple process takes place : what it does is only call its callback code (you can call it an "update hook") and return whether the boss is dead or not. That way, I can do everything I want in the callback itself, and it works for every boss, even if they have so little in common ! For example, I can make the boss have several behaviors by simply testing the amount of HP left, and doing different things depending on the result.
- Exceptionally, drawing is handled within the callback (via drawing candidates, which is normal). This allows me to have whatever graphical complexity I want !
- When bullets are handled, no collision is checked between them and the boss ; a collision callback (call it a "collision checking hook" if you want) is executed, allowing the boss to have special or esoteric hitboxes - or even special or esoteric ways of checking collisions -, instead of checking collision the way I do it with any other objects, by simply testing if the images of both objects intersect.
As I said, all of this allows me to have virtually infinite liberty on what the bosses do, so wait for them, 'cause it's going to be awesome :w00t:
-
I'M not familiar with non-modular behaviors. Does it means the bosses will follow a pattern you can memorize to beat them easier? I remember doing that in Metroid II Evolution for the 84+ and it was annoying to code, although I did the mistake of hard-coding everything rather than making a list of events that the program cycles through (although I think the latter might have been too slow in BASIC)
-
Yep that's it. A non-modular behavior means that the boss will have a fixed behavior, and if you memorize it it will act as expected everytime.
-
Which means we can "cheat" on this by memorizing the pattern? :trollface:
-
You are supposed to memorize the pattern :P you won't last long if you don't.
-
:P
I barely lasted past level two on the 83+ version, and I memorized the pattern (I think there was one) :P
-
Today is a special day, and do you know why ?
Because the first public beta of nKaruga is released :w00t:
Thanks to the (painful for me) switch to the Ndless 3.6 SDK and to the help of geekboy for the last bug, the game has been purged of all previous (known) bugs and is also faster ! The game works with both Ndless 3.1 and 3.6, and also on both color and grayscales Nspire calcs.
So far the game features a gorgeous title screen thanks to pierrotdu18, customizable controls including the use of the touchpad, a scrolling background thanks to Metaru, an enemies system, a fully-fledged bullets engine including normal bullets, power fragments, enemy homing and heavy lasers ; a working polarity, scoring and chaining system, a boss fighting system and three difficulty modes ! Since this is only a beta release, only level 1 is playable, but 99% of the final mechanics are already implemented (lacks continues), and the boss battle is available at the end of the level !
Everything you need to know is in the readme ; you can go download the beta right away: http://www.ticalc.org/archives/files/fileinfo/461/46162.html
The final game will have 4 other levels and their corresponding bosses, highscore saving and possibly a replay system.
Don't forget to give feedback ;)
-
Awesome! I'll have to try this version (and survive more than 1 second) right away :D
-
Yay! I played the tech demo and it was great. What new stuff is there in this version?
-
Ok I just tried now and the graphics and smoothness are just amazing. It's very polished per Nspire standards O.O
Also it's quite hard although not as much as CaDan. :P It got signifiantly easier after I figured out that we could hold down the fire button rather than mashing it non-stop, though.
-
Thanks to the (painful for me) switch to the Ndless 3.6 SDK and to the help of geekboy for the last bug, the game has been purged of all previous (known) bugs and is also faster ! The game works with both Ndless 3.1 and 3.6, and also on both color and grayscales Nspire calcs.
So far the game features a gorgeous title screen thanks to pierrotdu18, customizable controls including the use of the touchpad, a scrolling background thanks to Metaru, an enemies system, a fully-fledged bullets engine including normal bullets, power fragments, enemy homing and heavy lasers ; a working polarity, scoring and chaining system, a boss fighting system and three difficulty modes ! Since this is only a beta release, only level 1 is playable, but 99% of the final mechanics are already implemented (lacks continues), and the boss battle is available at the end of the level !
I am not even in your credits list D:
/me sues matref
jk :P
Great work for the boss (and thanks for the three difficulty modes :P) ! I don't know what are the other programs competing for the POTY but this one should be a serious entry :)
-
You're in the readme though, that shows you didn't read it D:<
Also yeah I hope it'll make a good score :X
-
You're in the readme though, that shows you didn't read it D:<
Nope, I'll probably read it when I have less than 3 school projects at the same time, which is not going to happen soon considering they announced a new project will start next week and we already have 3 of them -.-
-
I went full lazy mode and did CTRL-F -> aeTIos in the readme :P
-
And you found yourself :P
By the way beware, Vogtinator found memory leaks in the version that's currenty at ticalc. I'll try to fix it and submit the fixes as soon as possible. Sorry 'bout that :/
EDIT : actually maybe not. There might be a misunderstanding, waiting for more details from Vogtinator.
EDIT : yep, just as I thought. There's no memory leak guys, you can go and download ;D
-
EDIT : yep, just as I thought. There's no memory leak guys, you can go and download :D
Actually, in rare circumstances it can leak and may actually crash the calc. As your code doesn't catch std::bad_alloc and you're using "new" sometimes, the exception doesn't get caught and terminates the program instantly, not freeing any resources. The solution is simple: Use std::shared_ptr and std::unique_ptr and your code is instantly exception safe. Just a FYI :)
-
And you found yourself :P
By the way beware, Vogtinator found memory leaks in the version that's currenty at ticalc. I'll try to fix it and submit the fixes as soon as possible. Sorry 'bout that :/
EDIT : actually maybe not. There might be a misunderstanding, waiting for more details from Vogtinator.
EDIT : yep, just as I thought. There's no memory leak guys, you can go and download ;D
Could this be why in one occasion it froze when I chose play? I rebooted my calc then never had any problem with the game again, though, and I have the same problem happening with almost every Ndless program. (I might be 1 version behind)
-
If it happens with every game, it can't be nKaruga's fault. You should probably update your Ndless revision.
-
EDIT : yep, just as I thought. There's no memory leak guys, you can go and download :D
Actually, in rare circumstances it can leak and may actually crash the calc. As your code doesn't catch std::bad_alloc and you're using "new" sometimes, the exception doesn't get caught and terminates the program instantly, not freeing any resources. The solution is simple: Use std::shared_ptr and std::unique_ptr and your code is instantly exception safe. Just a FYI :)
That might have been the thing you and geekboy encountered during last HCWP, matref.
Or not. Anyways I tried this and it's super awesome... except that I really want to have some real keys to control the ship. Maybe make them remappable so the user can configure it the way they prefer (I might be using the small keyboard in the bottom... I want to try how usable it is for controlling games). The reason for this is that sometimes, touchpad input gets ignored. This is killing especially in a game like this x.x
-
I really want to have some real keys to control the ship. Maybe make them remappable so the user can configure it the way they prefer (I might be using the small keyboard in the bottom... I want to try how usable it is for controlling games). The reason for this is that sometimes, touchpad input gets ignored. This is killing especially in a game like this x.x
I didn't try the update myself but matref said this:
customizable controls including the use of the touchpad
-
I really want to have some real keys to control the ship. Maybe make them remappable so the user can configure it the way they prefer (I might be using the small keyboard in the bottom... I want to try how usable it is for controlling games). The reason for this is that sometimes, touchpad input gets ignored. This is killing especially in a game like this x.x
I didn't try the update myself but matref said this:
customizable controls including the use of the touchpad
hmmm. That's just the option to use the touchpad "touch' abilities instead of having to click it.
-
What I can do for direction is choose between "touch controls", "click controls" or numpad. I don't really want full key customization for direction because the way I implemented it it'd be slowing the game down a little.
-
I hate you. This game.... *.*
...actually it's pretty awesome
-
Congratz for the feature on ticalc ! :D
Pretty well deserved in my opinion mainly thanks to awesome sprites :P
-
Congratulations on the feature! I've been following this for a while, and I'm as impressed as ever.
-
Yup, congrats for the feature on ticalc.org ^.^
-
Congratz for the feature on ticalc ! :D
Pretty well deserved in my opinion mainly thanks to awesome sprites :P
Well you can unstrike this :P if it featured ugly developer art, it wouldn't have been the same ^^ thanks to everyone who did sprites for that !
Thanks guys ! Also remember it's not even nearly done :P there is much more awesomeness to come !
-
Don't forget the amount of code that you had to write. O.O I don't even wanna know how many SLoC this thing is lol.
-
Bump, it's been a while.
School is getting harder and harder, and this won't stop before the end of next year or the year after if I fail said year. I don't have much time to work on things, so now that I'm nearly done with Axagon (one week or two should be enough to release it and call it done), I had to choose which one of Worms or nKaruga I'll be doing first, knowing that the loser won't get done before years (I'll definitely get around to finish it though).
Since nKaruga won, I started getting back on it by writing the TODO list for beta release 0.2. When I started the game, I decided to do a beta release each time I finish a level, so that 0.5 will be the last version before 1.0, which should just be small additions to 0.5 such as highscores or replays, provided I didn't implement them already at that time. tl;dr let's hope 0.5 never happens and 1.0 does instead.
You can consult the TODO list here : https://github.com/matrefeytontias/nKaruga/issues/15 . Feel free to emit any suggestion or request, while remembering that I want to stay as close to the original game as possible. A big gameplay evolution over Ikaruga, even if you feel like it might be an improvement, isn't likely to happen.
I'll go write a post in the sprite request thread while I'm at it. Also, now that I have several topics, can I have a sub-forum for nKaruga ? ;D
/me runs
-
Bump,
to remind everyone that without sprites I can't do anything. Just saying.
EDIT : actual sprite request : https://www.omnimaga.org/art/(request)-sprites-based-on-ikaruga-ships/msg399223/#msg399223
-
Yet another bump, but a productive one this time !
I wasn't happy with how the big lasers looked, so I decided to recode them, along with the particles system. And holy shit, that went really well :w00t: the lasers now look really awesome, and the particles also got some badass style ! (you also get a view of the start of level 2)
EDIT : nevermind the big-ass gif.
(http://giant.gfycat.com/IdolizedSeriousAdouri.gif)
-
That looks absolutely amazing in every way, shape, and form. I want it now!
-
Well, you couldn't have better timing because I'm just releasing beta version 0.2.0 :P see the GitHub comment to the release (https://github.com/matrefeytontias/nKaruga/releases/tag/0.2.0) to know what changed and to download it, and keep feedback going please !
By the way, not missing a combo really becomes freaking hard now. If anyone somehow manages to not combo-break or miss a single combo in the introduction of level 2, tell me your secrets, because I can't do it. I constantly combo break or have to let enemies pass by on the second wave, even if I make all combos in the 1st and 3rd wave.
-
Heaviest of bumps !
I finally found motivation to work on nKaruga again (thank Ivoah and gameblabla for this). There will be some changes though.
I will be porting nKaruga to PC, as a tribute to/demake of Ikaruga. I will be keeping n2DLib as a layer of abstration on top of SDL 1.2, so if any of you guys want to port it back to n2DLib itself when I'm 100% done with the game, it should take you around 1 minute :P
I won't port it to PC just now, I'll probably do it when I'll be done with level 2 (as a reminder, introduction 1, level 1, boss 1 and introduction 2 are fully done and playable). I want to have a completely playable second level and a fightable (English ?) second boss before any porting attempt takes place.
Which means, I'll need more sprites ! Again, yes :P If anyone wants to help with that, once again, feel free to tell me.
tl;dr : I'm back on this, I will finish level 2 and then port it to PC. Also, I need more sprites.