Author Topic: Java2hu - Upcoming Open-Source Danmaku Engine running on Java  (Read 11804 times)

Hey everyone, I'm java2hu, I'm 19 years old and a java programmer, someone from the Touhou subreddit (http://reddit.com/r/touhou) told me I should post here.
Ever since starting Touhou I've wanted to make my own danmaku games in the theme of Touhou, and I've started realizing that project since begin 2014.

I've tried to delve into danmakufu in the past, but it just really didn't appeal to me in a lot of ways.
Firstly because it used scripts, any programmer can tell you that scripts are always limited by the possibilities in the code, and for every possibility in the code, a method needs to be added in the script.
So knowing that, danmakufu can almost never be "molded" to the liking of the programmer.

Secondly the fact that a lot of the resources are in japanese and it's hard to get into, it's not really intuitive.
Now I may be wrong partially on this one since I just got frustrated with danmakufu after trying for a while.

With that in mind, I wanted to make an engine in the preference of programmers like me.

The projects is called Java Touhou in complete, shortened to Java2hu
The engine relies on the gaming library LibGDX on the back end, and features a ton of utility classes and objects.
As well as a lot of handling of bullets, bosses, players, etc.

It is also not limited by a standard danmaku field, but can instead be modified to the projects needs.

How the game works is controlled by a so called Game Flow Scheme, this is basically a thread that watches over the game and executes further based on requirements.
Ie.

Code: [Select]
Spawn Boss 1
Boss 1 Start Spellcard 1
(WAIT) Boss HP < 0
Boss 1 Stop Spellcard 1
Boss 1 Start Spellcard 2
(WAIT) Boss HP < 50
Boss 1 Stop Spellcard 2
Spawn Boss 2
Dialogue 1 Start
(WAIT) Dialogue 1 end
Spellcard 3 Start

As part of the philosophy behind this project, I document as much as possible, so starting is easy.

And a lot more, though a lot may change over the time to come.

Before this project will be released though I'm first working on something to make sure the engine has all the features it needs to serve a typical Touhou game as a start.
Which leads to the game I will be releasing alongside the release of the engine.

So you might know this video from youtube: http://www.youtube.com/watch?v=85bE4NlzrLE

This was actually something that inspired me to start doing this, a touhou game containing all previous characters and performance based on survival.
The maker of this game (yuke) decided not to release this game. Though it can be released under fair use laws, of course, I have tried to contact ZUN about this matter, because if he denied then I would have to look into replacements for well... everything aside from the code, because I'm not very talented outside of programming.
However, I've received no reply to date, so until then I will continue.

As of me writing this post, I've completed 5 characters, Sekibanki, Sukuna Shinmyoumaru, Seija Kijin, Fujiwara No Mokou and Raiko Horikawa. (I've also made a spell card for Hata no Kokoro, but I didn't really like it, so ignore that one.)
A video of all the single non-spell, single spell appearances of these characters can be seen on my youtube channel. https://www.youtube.com/channel/UClAKIy3wqaCpOGwJI5y1TAA
You can find all of my progress on my tumblr: http://java2hu.tumblr.com
To follow my progress just follow the tumblr page, or my twitter, which just reposts everything from my tumblr: http://www.twitter.com/java2hu

If you have any questions, or would like to give me feedback (if it is negative, please explain what you don't like), I'd love to hear it; just post here and I'll reply when I come back to this thread!

Sage Ω (Ultima)

  • CEO at Team Eternal Desire
  • ??? X
Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #1 on: June 13, 2014, 05:07:27 PM »
Firstly because it used scripts, any programmer can tell you that scripts are always limited by the possibilities in the code, and for every possibility in the code, a method needs to be added in the script.
So knowing that, danmakufu can almost never be "molded" to the liking of the programmer.
I'd like to point out that danmakufu has been molded by the scripters(us) ever since the engine was released. Even now, with ph3 being the most current engine it is still getting updated with bug fixes and new features as requested by us.

Secondly the fact that a lot of the resources are in japanese and it's hard to get into, it's not really intuitive.

Eh, just like we have english translation patches for the games, we can all work together to translated the documentation in english as well. Also guides help more. Danmakufu is so simple to understand that you really don't need to know japanese to understand it in my opinion. (coming from someone who doesn't know japanese at all)

gtbot

  • Master of ScreenSplit
Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #2 on: June 13, 2014, 06:01:45 PM »
So knowing that, danmakufu can almost never be "molded" to the liking of the programmer.
If Danmakufu was still in 0.12m I would wholeheartedly agree with you here, however, in its current iteration (ph3), I don't believe it's fair to say its as restrictive as you are making it out to be.

Here are some example videos:
http://youtu.be/YlgU3MhrML0 (東方偽異伝 ~ Fake Strange Legend)
http://youtu.be/aMygpYydxTs (Talos Mistake's Seija script)
http://youtu.be/UvWUCP01dYs (arby26's Seija Stage script)

http://dmf.shrinemaiden.org/wiki/Main_Page (also, here's most of the english documentation on Danmakufu)

Of course, I'm not telling you to use Danmakufu, nor that it does everything, just that it's pretty flexible in doing a lot of different things.

Sparen

  • Danmakufu Artist
  • Git ready, git set, PUUSH!
    • AFCDTech
Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #3 on: June 13, 2014, 11:22:49 PM »
You have stated that this is an Open-Source project. Is there a Github repo for this project where we can see current functionality of the engine?

Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #4 on: June 14, 2014, 01:09:22 AM »
The full open source will be released with the first game made with the engine, so by making I can figure out what I'm missing and when I release it, it's easy to use.

If Danmakufu was still in 0.12m I would wholeheartedly agree with you here, however, in its current iteration (ph3), I don't believe it's fair to say its as restrictive as you are making it out to be.

Here are some example videos:
http://youtu.be/YlgU3MhrML0 (東方偽異伝 ~ Fake Strange Legend)
http://youtu.be/aMygpYydxTs (Talos Mistake's Seija script)
http://youtu.be/UvWUCP01dYs (arby26's Seija Stage script)

http://dmf.shrinemaiden.org/wiki/Main_Page (also, here's most of the english documentation on Danmakufu)

Of course, I'm not telling you to use Danmakufu, nor that it does everything, just that it's pretty flexible in doing a lot of different things.

I'd like to point out that danmakufu has been molded by the scripters(us) ever since the engine was released. Even now, with ph3 being the most current engine it is still getting updated with bug fixes and new features as requested by us.

Eh, just like we have english translation patches for the games, we can all work together to translated the documentation in english as well. Also guides help more. Danmakufu is so simple to understand that you really don't need to know japanese to understand it in my opinion. (coming from someone who doesn't know japanese at all)

Right, I'm pretty sure I was using 0.12m, though I guess a lot of it's also preference, java or any other program language over scripts, and this is for people who also share that view, or anybody who isn't familiar with danmakufu's scripting language yet, but is with Java.

Drake

  • *
Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #5 on: June 14, 2014, 05:41:01 AM »
So you call this a game engine, but aren't developing a scripting engine. In that case, is this more of a framework and specific library full of abstracts and interfaces for the programmer to build on top of?

I'm also interested as to how exactly the "game flow" is structured, because from what I can tell it's just really one big main loop for game events. Relatedly, do you have any details on the programming interface? Do you have a good example of project flow yet (say, for one spell card), or is it too early to tell?

How are hitboxes calculated? Would it be feasible to roll your own?

A Colorful Calculating Creative and Cuddly Crafty Callipygous Clever Commander
- original art by Aiけん | ウサホリ -

ShadowNCS

  • Prinny Overlord
  • Highly Responsive to Jinxes
Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #6 on: June 14, 2014, 11:52:33 AM »
So someone else has made a Danmaku engine in Java too, huh. ^^
Good luck with your project! ^^

I can relate to your problem with Danmakufu. I just couldn't work properly with it, either. ^^;

Funny thing is, just a few weeks ago I ported my own Danmaku engine from Slick to LibGDX because Slick was causing more and more problems (like projectiles vanishing for no apparent reason, and my FPS counter being stuck on 63).

So, from what I understand, (the core mechanics of) your engine is finished?
I've got a coupe of questions for you, since I'm interested how you implemented some things compared to how I did. ^^

? Is your program real time based (causing frame loss with less frames) or frame based (causing slow down with less frames)?
? How do you implement the animations for a character, or any kind of object in general?
? How/ where do you implement the shot types/ patterns that enemies (or even other objects) shoot? Can you reuse your patterns for different objects (like, can you reuse an enemy's pattern for another kind of enemy, or even the player)?
? How exactly work your hitboxes? What kind of hitboxes do you have? (What I mean is, I have a standard hitbox for general hits, a graze hitbox, a physical hitbox for enemies to determine whether a player was too close to them (this one is smaller than the general hitbox) and an item collect box for the player)
? And while on the topic of hitboxes, how does your hit detection work?
? How do you do your Screen Handling, Stage Handling (in case you treat your stages not as different screens)? Do you have some kind of Wave Handling as well?
? How many projectiles can you create without your framerate dropping? (if you have ever tested this) (With my engine, it's about 18000 for one type of projectile and about 5000 for multiple kinds (getting this fixed is the next thing I do. It's a problem coming from not working with libGDX from the start))
? How do you handle conversations? Where do you store the conversations? (I'm using XML files to hold the conversations, for example)
? Lastly, how do you load and store your sprites? Do you use the libGDX loading structure?
I'm asking this specifically because I'm not used to libGDX that much yet, and back when I was using Slick I didn't understand their loading and resource storing structure at all, because of which I wrote my own thing completely. xD;
Well, I did use their methods to load the sprites into my game, but I wrote my own classes for storing the resources so I could load and unload them for each Stage specifically.

I think those are all the questions I had. ^^
Sorry for this amount of programming specific questions, but I'm just really curious. ^^

Failure McFailFace

  • I'm h...a...p...p...y...
  • Impor
Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #7 on: June 14, 2014, 03:58:38 PM »
Hi, I'm the one on Reddit who recommended you to post here.

Good luck on the project, I've been wanting to play the Touhou All Stars since I saw the original video.
1cc Easy: DDC (all) | 1cc Normal: UFO (SanA autobomb),  DDC (ReiA, SakA) , LoLK (Sanae PD)| EX clears: DDC (MarB Ultra) | Puzzle Games: StB: 10-X, DS: Hatate unlock, ISC: All clear

Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #8 on: June 14, 2014, 08:22:17 PM »
So you call this a game engine, but aren't developing a scripting engine. In that case, is this more of a framework and specific library full of abstracts and interfaces for the programmer to build on top of?

I'm also interested as to how exactly the "game flow" is structured, because from what I can tell it's just really one big main loop for game events. Relatedly, do you have any details on the programming interface? Do you have a good example of project flow yet (say, for one spell card), or is it too early to tell?

How are hitboxes calculated? Would it be feasible to roll your own?

I pretty much consider an engine as something that does the core functionality and has a lot of utility for making a game that the engine focuses on, but I guess a framework is also a good naming.
And no, it's not all abstracts and interfaces, a ton is actually ready to be implemented at all times, but specifics, like bosses, spellcards, stages, etc, need to be filled in.

Sure, I have a game flow schedule here for Sekibanki's stage.

In case you're not familiar with Java, any kind of object that's not inside the same object can only be referenced if it's an object with final.
Adding final though means you also can't replace that object anymore, however an object can contain other references to objects that can be changed.
That's what the SaveableObject is for, it's just an object containing another object, but only the SaveableObject is made final so it can be referenced in other objects, but the content can still be changed:

http://hastebin.com/zososayuha.java

This is basically my idea, a thread that runs on the background that waits for specific conditions to move on, and it should usually go into specific classes for Stages, Bosses, etc to not overcrowd the game flow scheme.
That is also the reason why for most things you need to use the built in scheduler to execute stuff on the main thread, since it will cause errors otherwise.

For hitboxes I actually have something pretty cool, I wrote a code which turns a texture into a hitbox by a specification, like this:

Code: [Select]
Polygon poly = HitboxUtil.makeHitboxFromSprite(texture, new HitboxSpecification()
{
  public boolean isHitbox(Color color, int x, int y)
  {
    // For most bullet I use a standard specification, anything with a transparancy under 40% is not hitbox, so:
    return color.a > 0.4f;
  }
});

Then the hitboxes are bound together with a sprite in a so called HitboxSprite, which basically makes any changes to the sprite uniform, so if you scale a sprite up twice, the hitbox will as well.
Together with that, there's also offsets for the hitbox, so ie. if you want to have a hitbox that's half the size of the sprite, you can set the scale offset to 0.5f and it will stay that way.
By default, all touhou bullets I added are half the hitbox of the sprite. And that seems to be a pretty good number.

So someone else has made a Danmaku engine in Java too, huh. ^^
Good luck with your project! ^^

I can relate to your problem with Danmakufu. I just couldn't work properly with it, either. ^^;

Funny thing is, just a few weeks ago I ported my own Danmaku engine from Slick to LibGDX because Slick was causing more and more problems (like projectiles vanishing for no apparent reason, and my FPS counter being stuck on 63).

So, from what I understand, (the core mechanics of) your engine is finished?
I've got a coupe of questions for you, since I'm interested how you implemented some things compared to how I did. ^^

? Is your program real time based (causing frame loss with less frames) or frame based (causing slow down with less frames)?
? How do you implement the animations for a character, or any kind of object in general?
? How/ where do you implement the shot types/ patterns that enemies (or even other objects) shoot? Can you reuse your patterns for different objects (like, can you reuse an enemy's pattern for another kind of enemy, or even the player)?
? How exactly work your hitboxes? What kind of hitboxes do you have? (What I mean is, I have a standard hitbox for general hits, a graze hitbox, a physical hitbox for enemies to determine whether a player was too close to them (this one is smaller than the general hitbox) and an item collect box for the player)
? And while on the topic of hitboxes, how does your hit detection work?
? How do you do your Screen Handling, Stage Handling (in case you treat your stages not as different screens)? Do you have some kind of Wave Handling as well?
? How many projectiles can you create without your framerate dropping? (if you have ever tested this) (With my engine, it's about 18000 for one type of projectile and about 5000 for multiple kinds (getting this fixed is the next thing I do. It's a problem coming from not working with libGDX from the start))
? How do you handle conversations? Where do you store the conversations? (I'm using XML files to hold the conversations, for example)
? Lastly, how do you load and store your sprites? Do you use the libGDX loading structure?
I'm asking this specifically because I'm not used to libGDX that much yet, and back when I was using Slick I didn't understand their loading and resource storing structure at all, because of which I wrote my own thing completely. xD;
Well, I did use their methods to load the sprites into my game, but I wrote my own classes for storing the resources so I could load and unload them for each Stage specifically.

I think those are all the questions I had. ^^
Sorry for this amount of programming specific questions, but I'm just really curious. ^^

Yeah, the core of my project for gameplay is done, bosses, bullets, backgrounds, etc, but there's undoubtedly stuff I missed.
I also ported this project from Slick to LibGDX, what a coincidence, yeah it was bringing in a lot of problems, and libgdx has a lot more options, and is "harder, but a lot more", which I like.

To answer your questions:
1. Frame based, I probably would have preferred a real time based or something that scales with the frame rate, but this was the default for LibGDX.
2. Using LibGDX's Animation object. I actually have a class that can read frames from an image (ie. http://i.imgur.com/PbSwWsc.png) and transform it into an Animation object with:

Code: [Select]
int chunkHeight = 160; // This is how high one frame is
int chunkWidth = 128; // This is how wide one frame is

                Texture sprite = new Texture("anm.png"); // This is the one I posted above

                Animation idle = ImageSplitter.getAnimationFromSprite(sprite, chunkHeight, chunkWidth, 0.2F, 1,2,3,4); // Reads the 4 frames, 0.2f is the time between frames.

Animation left = ImageSplitter.getAnimationFromSprite(sprite, chunkHeight, chunkWidth, 0.2F, 5,6,7,8); // Reads frames 5 to 8
Animation right = ImageSplitter.getAnimationFromSprite(sprite, chunkHeight, chunkWidth, 0.2F, 5,6,7,8); // Also frames 5 to 8, but this is going to get mirrored.

for(TextureRegion reg : left.getKeyFrames())
{
reg.flip(true, false); // Mirror it over y
}

Animation special = ImageSplitter.getAnimationFromSprite(sprite, chunkHeight, chunkWidth, 10F, 9,10,11,12,12,12,12,11,10,9); // Special uses a different timer so it starts at the beginning of the animation, that's why the frame difference is 10f.
special.setPlayMode(PlayMode.NORMAL);

3. I already answered this above, however on boss hitboxes, they have a simple rectangle 'hit' hitbox, where bullets can land, usually the bounds of the boss sprite.
And they also have a 'player' hitbox, where the player dies, this is a rectangle hitbox that's right in the middle of the boss, and it's a lot smaller, this is an image that shows them: http://i.imgur.com/sbXCUs4.png (Also showing the new effects I've been working on)

4. Hit detection works by using a polygon overlap method, every object that needs collision has a hitbox, I'm not sure how it works but LibGDX has a method for it.

5. A menu will have to be composed the same way as the game has to be composed, a stage consists of StageObjects, that have a simple x, y, draw method, and an update method, for a menu you'd make them take input and change states by keys and have a background object.
Though, I haven't worked yet on menu's, so once I get to those I'll have more utilities and classes to make easy menu's

Stages use a game flow scheme that I showed above, it works for pretty much everything
you can make waves by using the tick counter in the main class, and spell card objects have a counter themselves.
You can also make use of any objects getTicksAlive() method.

6. I've not really tried that yet, but I've had cards with up to 10000 bullets while trying working fine, but it depends on how good you pc is I reckon.

7. I don't have anything for conversations yet, but I assume I will make a framework for it, which should be pretty easy.
I'll probably make it load the conversation by making a class for it and use JSON to load it, of course users are free to input whatever they like.

8. I use LibGDX's interal loading, however every object has a list of Disposable objects, which get disposed once the entity gets deleted, and you just don't add any static objects to the disposable list.
This works fine for me right now, and doesn't cause for any lag, so I won't need to change that if it's not causing any lag, if it does, I'll reckon I need to load stuff over time before hand.
And yeah, Slicks system didn't really make sense to me either, considering I was new to game design from scratch, and I couldn't even gasp the fact you had to dispose stuff since it wasn't mentioned anywhere, probably why my first demo had a lot of RAM issues, though LibGDX has made it a lot easier since it's so "raw", I guess, you really work with openGL and a lot of stuff.

For bullet textures, I keep those loaded in memory at all times, since they could practically be spawned at any time. (Also because making a hitbox of a texture takes quite a bit of time to do with such an amount of bullet textures, at least if you make them dynamically like I do).
For the rest, like bosses, they load their textures on spawn, since that is pretty much instantly (And no boss should really be spawning when anything is going on), but you can also pre-load them by just not adding them to the active objects list.

Hi, I'm the one on Reddit who recommended you to post here.

Good luck on the project, I've been wanting to play the Touhou All Stars since I saw the original video.

Thanks so much man, I really feel like I'll get a lot more help from talking here than on the Touhou subreddit.
I'll be sure that you'll enjoy the all stars game.
« Last Edit: June 14, 2014, 08:48:03 PM by java2hou »

Failure McFailFace

  • I'm h...a...p...p...y...
  • Impor
Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #9 on: June 24, 2014, 08:26:30 PM »
A few suggestions:

After reviewing all of your videos on Youtube, and comparing them to the original Touhou All Stars, I feel that the patterns are too easy. Yes, Mokou and Kokoro both have random patterns, but it feels like the patterns are at a Normal Stage 3 difficulty (Most people could do it), compared to the Hard/Lunatic Stage 3 difficulty (Only skilled NMNB Lunatic 1cc'ers could perfect it) in the original.

Also, Marisa's shot, as shown in the video, feels like something I can't use. So, will you be adding multiple shot types (homing, piercing, etc.)?

Finally, will you be incorporating any patterns in the original to here? (Kaguya's NEET attacks don't count)

EDIT: Oh, yeah, what order are you going to put the characters in? By stage, game, etc.?
EDIT#2: Will the difficulties scale up as you defeat more characters, or will it generally stay the same?
« Last Edit: June 24, 2014, 08:42:00 PM by bigyihsuan »
1cc Easy: DDC (all) | 1cc Normal: UFO (SanA autobomb),  DDC (ReiA, SakA) , LoLK (Sanae PD)| EX clears: DDC (MarB Ultra) | Puzzle Games: StB: 10-X, DS: Hatate unlock, ISC: All clear

Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #10 on: June 25, 2014, 10:37:50 PM »
A few suggestions:

After reviewing all of your videos on Youtube, and comparing them to the original Touhou All Stars, I feel that the patterns are too easy. Yes, Mokou and Kokoro both have random patterns, but it feels like the patterns are at a Normal Stage 3 difficulty (Most people could do it), compared to the Hard/Lunatic Stage 3 difficulty (Only skilled NMNB Lunatic 1cc'ers could perfect it) in the original.

Also, Marisa's shot, as shown in the video, feels like something I can't use. So, will you be adding multiple shot types (homing, piercing, etc.)?

Finally, will you be incorporating any patterns in the original to here? (Kaguya's NEET attacks don't count)

EDIT: Oh, yeah, what order are you going to put the characters in? By stage, game, etc.?
EDIT#2: Will the difficulties scale up as you defeat more characters, or will it generally stay the same?

Kokoro's spell card was scrapped, that card was very low quality because I've had a hard time thinking of a card for her, so don't take that one as a quality mark :P
Mokou's card was copied exactly from the all star video.
Sukuna's non-spell is not really hard, I agree with you on that one, but the larger part of her appearance is her spell card, which is very hard if you don't understand how to dodge it.
Sekibanki's card is a bit lower in difficulity since she's a stage 2 boss, but I did up the difficulty a bit after posting that video.
Seija's card is actually a lot harder than it looks, the non-spell can wall you in a few instances, so you have to pick other routes very fast, and the spell card is quite disorienting as well.
Same with Raiko's non-spell, easy to wall, have to look far ahead, and her spell is quite gimmicky, but making the wrong move can result in multiple deaths!

I'm personally a normal-hard player, I think I only finished IN on lunatic, so I tune my cards to my skill level, which might end up dragging difficulty down for lunatic+ players, but I will take in mind all feedback when I release the demo and will modify cards based on that information as well, aside from my personal input.
Of course, watching a spell card on a video without (a lot of) deaths usually gives me a motivational "THATS EASY!", only to be shot down once I actually try it, so maybe your opinion will change once you played the demo :P

Marisa's shot is not finalized, I just took a bullet sprite and made it shoot, just so I can shoot.
She will get a better shot type before I release the demo.
In the finalized version, I'll also add Reimu and another character with a gimmicky shoot type, think PCB Sakuya, IN Youmu.

I'm going to be honest here, my mind is probably not creative enough to think of the like 50? spell cards for characters in the original all star, unless I'd take a year or something, and that would probably be rushing it.
Copying a spell card idea would probably be a heck of a lot easier, and the original spell cards are also what I (and others) would like to play.
But for a few of the joke spell cards like Kaguya, I'll probably keep that in, but also make it satisfying for Kaguya fans.
I also have that with a few other bosses, a good example was Suika, the card felt very underwhelming and the music was cut off before the climax, which really dissapointed me, so cards like that I will probably replace or lengthen a bit.

I'll order the characters by estimated power level (Which I guess Yuke also did), so you can expect Sekibanki to be somewhere at the bottom, Raiko and Sukuna at the top, Seija in the middle.

I already said above that Sekibanki was easier because she's only a stage 2 boss, so yes, difficulty will scale up, expect the top bosses to be as hard as I can make them ^^
« Last Edit: June 25, 2014, 10:43:23 PM by java2hou »

Failure McFailFace

  • I'm h...a...p...p...y...
  • Impor
Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #11 on: June 25, 2014, 11:19:07 PM »
Alright, thanks
1cc Easy: DDC (all) | 1cc Normal: UFO (SanA autobomb),  DDC (ReiA, SakA) , LoLK (Sanae PD)| EX clears: DDC (MarB Ultra) | Puzzle Games: StB: 10-X, DS: Hatate unlock, ISC: All clear

Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #12 on: July 10, 2014, 08:57:58 PM »
I guess I should post this here, but the demo for this project has been released.

This demo contains the following characters in this order:
Wakasagihime, Sekibanki, Kagerou Imaizumi, Seija Kijin, Sukuna Shinmyoumaru, Raiko Horikawa, Fujiwara no Mokou.

There's a known fps issue unfortunately, I just hope it doesn't occur to you, but if it does, restart the game a couple of times (By the restart button in the pause menu, not the actual game instance) and it should work.

Post your score if you tried it! I'm very interested to see how well others do it.
If you do, please tell me what your skill level is for the normal touhou games, so I can compare. (Like the hardest boss you beat, or if you've done 1cc's on Hard/Lunatic)

The download link is here: http://www.mediafire.com/download/150s2eoh4czt24n/Touhou_-_All_Star_0.01_\(DEMO\).zip (I can't scan it with a virus scan service like virustotal because it exceeds 64MB in size, you'll have to take my or other's words)

Things to remember before trying it:
Needs Java 8 (Appearantly it doens't auto-update java to anything above java 7, so download it from here: http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html)

Let me know your scores! I'm interested! (And your normal touhou level, like whats the best difficulty you 1cc'd, for comparison)

If you run into trouble, run console.bat and copy the error here.

Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #13 on: July 11, 2014, 04:48:57 AM »
Loved it, I've 1cc'ed most of the windows games on normal (except SA), and I had 30+ deaths (mostly Raiko & Mokou).

I ran it on my laptop (HP Pavilion G6, so 1/2 decent) and some of the frame rates were dropping:

Sekibanki's Non-Spell Runs @ 20 FPS

Kagerou's Non-Spell & Spell Card run @ 30 FPS

Oh, Java will eventually switch over to version 8 on auto update, it'll just take time, a couple of years ago it was the same issue for update 7.

Sage Ω (Ultima)

  • CEO at Team Eternal Desire
  • ??? X
Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #14 on: July 14, 2014, 10:52:07 PM »
Ok um, so I tried it. First thing that seemed off to me was the long start up time. Also don't see how this can take as long as a full danmakufu game (even longer) when it doesn't seem like much. Maybe uncompressed music?

My main problem which is something I knew was gonna occur as soon as I seen the thread title, the game runs at a terrible speed to the point where it isn't enjoyable at all. Some of the bullets look weird at such large resolutions. Kagerou uses the light orbs from 10D, which should be rendered in Additive blend. The pause menu text is too small as well.

Also, the window size is big but the game screen is cropped? Will there be an option to play at multiple resolutions like ZUN's games and danmakufu provide?

Not to sound harsh, but it doesn't look very promising in it's current state. Just some things to think about when you're working on it...

Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #15 on: July 15, 2014, 03:58:37 PM »
Ok um, so I tried it. First thing that seemed off to me was the long start up time. Also don't see how this can take as long as a full danmakufu game (even longer) when it doesn't seem like much. Maybe uncompressed music?

My main problem which is something I knew was gonna occur as soon as I seen the thread title, the game runs at a terrible speed to the point where it isn't enjoyable at all. Some of the bullets look weird at such large resolutions. Kagerou uses the light orbs from 10D, which should be rendered in Additive blend. The pause menu text is too small as well.

Also, the window size is big but the game screen is cropped? Will there be an option to play at multiple resolutions like ZUN's games and danmakufu provide?

Not to sound harsh, but it doesn't look very promising in it's current state. Just some things to think about when you're working on it...

The long startup time is because of hitbox creation, I haven't saved down the hitbox vertices for every bullet to a file yet (Mainly because I don't want to yet until I stop adding new bullets).

I know there was some fps issues, as I already said in the release reply, and is something I'm actively looking to fix.

You're the first person to give this kind of comment... Are you sure you're running the game at a correct resolution, you're going to need at least 1280x960, else the game doesn't look right at all.
Those bullets are my design choices, and I think they look fine.

I'm going to guess you haven't tried anything with resizing because my engine is resolution independent, you can scale it to whatever resolution you want (Locked aspect ratio though), but the game internally runs on 1280x960.

ShadowNCS

  • Prinny Overlord
  • Highly Responsive to Jinxes
Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #16 on: July 15, 2014, 05:38:34 PM »
So, I've played your demo, and I like it so far. For the most part.
I managed to finish the game with about 30 deaths. A lot of those come from Wakasagihime's Spell Card (more on that in a bit). I usually 1cc Normal, in some games (EOSD, DDC with Sakuya A) even on Hard. But in those cases, I've got bombs to use. xD

The following paragraph is mostly suggestions from my side, so you can ignore them if you don't like them. ^^
When I started started the game, I had a couple of "problems". Well, not really problems per se, but more like things that felt weird to me.
The first one was Marisa's speed; mostly her focused one. Yes, Marisa is supposed to be fast, but focused she usually is a little slower than your Marisa, because of which it felt like Marisa "floated" all the time when I focused her, which felt a little weird until I realized that it was just her fast focused speed. So, long story short (too late), I'd recommend to make Marisa a little slower (at the very least her focused movement).
Also, I barely realized when I died in your game. In the Touhou games, your death is delayed a little so you can death bomb, and there is a little animation before the big "real death" one that you also use, but in your game, the death is instantaneous. There's no real problem here, it's just a little thing I noticed which felt weird to me.
I also noticed that your character can go to the very bottom of the screen until the hitbox hits the screen border. This feels kind of weird, since, in the Touhou games, the characters can usually only go as far as the sprite hits the border (or maybe a little bit further). If it was intentional, then I'll shut up. Otherwise, there might be something to fix. ^^


Okay, on to critiquing you properly:

"What are you loading at the beginning that it takes so long?"
*Opens the game via console*
Oh, that's what's taking so long.
Uhm, just a question: WHY are you loading the ALL PROJECTILES in the game's STARTUP loading screen?! [EDIT: Or, according to your comment, hitbox creation, but that doesn't belong in the startup loading screen, either!]
Sorry for the caps, but, wouldn't it make more sense to load the bullets before entering the stage? And why ALL the projectiles? Why not just the projectiles that are needed for this specific stage? Imagine you have 100 different kinds of projectiles (ignoring the different colors for now), but you only need like 8 for a stage. The remaining 92 projectiles would be lying in your memory for no reason whatsoever and just waste the available space!
And even if you have multiple kinds of projectiles on one sheet, even then it would be enough to just load the required sheets, and not all of them. ^^;
Sorry for the lecture, there, but having to wait for 10 seconds (or even 1 second already) on the startup loading screen because of projectiles is just a really stupid reason. ^^;

But on a side note, the @LoadOnStartup annotation is pretty neat. :D
And congrats on how the backgrounds look. Especially Shinmyoumaru's bg.
I took a look at the background classes and saw that you worked with the GL20 classes and shaders... which means that I barely understood any of that. xD;
(Dang, and I wanted to "get inspired" by your code for the bgs. xDDD )


Now, let's get to the patterns! ^^
They are okay for the most part, but I would rework Wakasagihime's Spell Card a bit. In one playthrough, it happened that pretty much every fish spawned right next to me with no way of dodging it.
Maybe you can make it so that the fishes spawn at the border of the screen so you have a bit more of a chance to react? Unless you happen to be at the border of the screen, but then it's your own fault, at least. xD;

You need to do something about Sekibanki's patterns. Her non-spell was running with a speed of 30FPS for me, and her Spell Card, which has WAY MORE bullets, ran at 45FPS or so.
I don't know what you're doing in that non-spell, but you should do something about that.

Seija's non-spell made the game drop some FPS for me, too.
Her Spell Card is incredibly annoying, but I think that's what you were going for ^^;

Shinmyoumaru's patterns are pretty easy compared to the rest, but they are definitely fun.
However, I encountered a bug with her Spell Card. I believe it happens if you die at the same time as Shinmyoumaru. The thing is, I was stuck as huge Marisa and didn't get resized, so the following patterns were kind of impossible. ^^;


Lastly, a small tip from a fellow Java Danmaku programmer:
As mentioned before, I looked at your decompiled classes a bit because I was interested how you solved some things (and because I wanted to know what made Sekibanki so laggy).
Well, I was a little surprised when I saw how long your classes are at times.
I mean, your class for Sekibanki was about 700 lines long, which is pretty long.
To put it in perspective, my "longest" and most complex class, the abstract implementation of the Stages, is about 300 lines long. (And even my for some reason ridiculously long Player class "only" has 400 lines, and 100 of those come from its Builder).
What I want to say is, code as long as your is really difficult to read, and even worse, only hard to reuse possibly resulting on a lot of copy and pasting.
Maybe you can try to separate your code a little more, like, making different classes (components) for animations, shot patterns, movement patterns (for the enemies or projectiles), etc.  (Here's an article to the component pattern which I found really inspiring, making me use it for my own Danmaku engine: http://gameprogrammingpatterns.com/component.html )

It's always nice to look at a problem from a different angle, so, if you want, I can get you some read permission for the Git of my own Danmaku engine (if I ever figure out how that works).
Maybe you'll find a solution to a problem you have or something like that.

Also, sorry if I seem a little rude in my comment here.
I really hope that you get your project finished (and well at that :D ) and wish you best of luck. ^^

Sage Ω (Ultima)

  • CEO at Team Eternal Desire
  • ??? X
Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #17 on: July 15, 2014, 08:42:45 PM »
The long startup time is because of hitbox creation, I haven't saved down the hitbox vertices for every bullet to a file yet (Mainly because I don't want to yet until I stop adding new bullets).

Um... Ok I don't quite understand why the bullet's hitboxes are being loaded on startup but if there is a way to lower the loading times it would be nice. Not a huge problem though.
You're the first person to give this kind of comment... Are you sure you're running the game at a correct resolution, you're going to need at least 1280x960, else the game doesn't look right at all.

This isn't very good for those of us who run on laptops in which the common screen size is 1366x768. We also shouldn't have to manually drag the window size to whatever we need in order to be enjoyable either. Include something to set default resolutions. For someone who's making a danmaku engine is it too much to ask for a simple menu or configuration executable? Especially since not everyone has a monitor compatible with 1280x960.

Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #18 on: July 15, 2014, 10:21:32 PM »
Loved it, I've 1cc'ed most of the windows games on normal (except SA), and I had 30+ deaths (mostly Raiko & Mokou).

I ran it on my laptop (HP Pavilion G6, so 1/2 decent) and some of the frame rates were dropping:

Sekibanki's Non-Spell Runs @ 20 FPS

Kagerou's Non-Spell & Spell Card run @ 30 FPS

Oh, Java will eventually switch over to version 8 on auto update, it'll just take time, a couple of years ago it was the same issue for update 7.

Forgot to react to you ;)

Glad you liked it :)

And yes, I'm aware of the fps issues in those cards, they're just a little hard to find.
I'm actually going to change the compilation version to 1.7 in any future release, since it actually doesn't use anything which is specific to java 8, I just happened to have my workset compiler set to java 8, to prevent this problem.

Um... Ok I don't quite understand why the bullet's hitboxes are being loaded on startup but if there is a way to lower the loading times it would be nice. Not a huge problem though.
This isn't very good for those of us who run on laptops in which the common screen size is 1366x768. We also shouldn't have to manually drag the window size to whatever we need in order to be enjoyable either. Include something to set default resolutions. For someone who's making a danmaku engine is it too much to ask for a simple menu or configuration executable? Especially since not everyone has a monitor compatible with 1280x960.

It's not hitboxes that are being loaded that's the problem, it's the fact that I have an algorithm to make a polygon out of a sprite, creating a hitbox perfectly to the bounds of a bullet sprite. (Takes about half a second for the smaller bullets, but there's quite a few bullets)
The way to optimize that is to just dump the polygon vertices to a file and bind them to the textures, but that's something I haven't come around to, and don't want to yet because I might still make changes (Meaning I'd have to keep dumping the information, which is a pain).

I can probably add something along the way that can size it precisely to a few preset resolutions, but the best result should be gained by expanding the game to your full monitor size.
People with resolutions under 1280x960 will be scaled down a bit, which might cause a few cropping artifacts (probably not though, I've tried), even though 1280x960 is already a very outdated resolution, compared to 1080p and 4K.

So, I've played your demo, and I like it so far. For the most part.
I managed to finish the game with about 30 deaths. A lot of those come from Wakasagihime's Spell Card (more on that in a bit). I usually 1cc Normal, in some games (EOSD, DDC with Sakuya A) even on Hard. But in those cases, I've got bombs to use. xD

The following paragraph is mostly suggestions from my side, so you can ignore them if you don't like them. ^^
When I started started the game, I had a couple of "problems". Well, not really problems per se, but more like things that felt weird to me.
The first one was Marisa's speed; mostly her focused one. Yes, Marisa is supposed to be fast, but focused she usually is a little slower than your Marisa, because of which it felt like Marisa "floated" all the time when I focused her, which felt a little weird until I realized that it was just her fast focused speed. So, long story short (too late), I'd recommend to make Marisa a little slower (at the very least her focused movement).
Also, I barely realized when I died in your game. In the Touhou games, your death is delayed a little so you can death bomb, and there is a little animation before the big "real death" one that you also use, but in your game, the death is instantaneous. There's no real problem here, it's just a little thing I noticed which felt weird to me.
I also noticed that your character can go to the very bottom of the screen until the hitbox hits the screen border. This feels kind of weird, since, in the Touhou games, the characters can usually only go as far as the sprite hits the border (or maybe a little bit further). If it was intentional, then I'll shut up. Otherwise, there might be something to fix. ^^


Okay, on to critiquing you properly:

"What are you loading at the beginning that it takes so long?"
*Opens the game via console*
Oh, that's what's taking so long.
Uhm, just a question: WHY are you loading the ALL PROJECTILES in the game's STARTUP loading screen?! [EDIT: Or, according to your comment, hitbox creation, but that doesn't belong in the startup loading screen, either!]
Sorry for the caps, but, wouldn't it make more sense to load the bullets before entering the stage? And why ALL the projectiles? Why not just the projectiles that are needed for this specific stage? Imagine you have 100 different kinds of projectiles (ignoring the different colors for now), but you only need like 8 for a stage. The remaining 92 projectiles would be lying in your memory for no reason whatsoever and just waste the available space!
And even if you have multiple kinds of projectiles on one sheet, even then it would be enough to just load the required sheets, and not all of them. ^^;
Sorry for the lecture, there, but having to wait for 10 seconds (or even 1 second already) on the startup loading screen because of projectiles is just a really stupid reason. ^^;

But on a side note, the @LoadOnStartup annotation is pretty neat. :D
And congrats on how the backgrounds look. Especially Shinmyoumaru's bg.
I took a look at the background classes and saw that you worked with the GL20 classes and shaders... which means that I barely understood any of that. xD;
(Dang, and I wanted to "get inspired" by your code for the bgs. xDDD )


Now, let's get to the patterns! ^^
They are okay for the most part, but I would rework Wakasagihime's Spell Card a bit. In one playthrough, it happened that pretty much every fish spawned right next to me with no way of dodging it.
Maybe you can make it so that the fishes spawn at the border of the screen so you have a bit more of a chance to react? Unless you happen to be at the border of the screen, but then it's your own fault, at least. xD;

You need to do something about Sekibanki's patterns. Her non-spell was running with a speed of 30FPS for me, and her Spell Card, which has WAY MORE bullets, ran at 45FPS or so.
I don't know what you're doing in that non-spell, but you should do something about that.

Seija's non-spell made the game drop some FPS for me, too.
Her Spell Card is incredibly annoying, but I think that's what you were going for ^^;

Shinmyoumaru's patterns are pretty easy compared to the rest, but they are definitely fun.
However, I encountered a bug with her Spell Card. I believe it happens if you die at the same time as Shinmyoumaru. The thing is, I was stuck as huge Marisa and didn't get resized, so the following patterns were kind of impossible. ^^;


Lastly, a small tip from a fellow Java Danmaku programmer:
As mentioned before, I looked at your decompiled classes a bit because I was interested how you solved some things (and because I wanted to know what made Sekibanki so laggy).
Well, I was a little surprised when I saw how long your classes are at times.
I mean, your class for Sekibanki was about 700 lines long, which is pretty long.
To put it in perspective, my "longest" and most complex class, the abstract implementation of the Stages, is about 300 lines long. (And even my for some reason ridiculously long Player class "only" has 400 lines, and 100 of those come from its Builder).
What I want to say is, code as long as your is really difficult to read, and even worse, only hard to reuse possibly resulting on a lot of copy and pasting.
Maybe you can try to separate your code a little more, like, making different classes (components) for animations, shot patterns, movement patterns (for the enemies or projectiles), etc.  (Here's an article to the component pattern which I found really inspiring, making me use it for my own Danmaku engine: http://gameprogrammingpatterns.com/component.html )

It's always nice to look at a problem from a different angle, so, if you want, I can get you some read permission for the Git of my own Danmaku engine (if I ever figure out how that works).
Maybe you'll find a solution to a problem you have or something like that.

Also, sorry if I seem a little rude in my comment here.
I really hope that you get your project finished (and well at that :D ) and wish you best of luck. ^^

Good points, I'm probably more used to reimu than marisa, so I didn't feel weird with the focused speed, I'll tune that down.
Delayed death is actually a good idea for any other game than this all star remake :P, you'll want to move on as fast as possible.
The bounds where you can move in is actually also specific to this game, you can increase it as you like.

As I explained above, the wait is because I'm actually creating the hitboxes for the bullets on the fly, definitely not something meant for final release, but something I haven't gotten around to yet.
And yeah, once I dump the hitboxes all to file, I'll be able to load then in an instance, and won't have to keep them in memory at all times.

For the backgrounds, yeah, you need to learn how to work with shaders, it took me a while to figure out too, but it's worth investing time in and learn it. (Especially now that you've got the finished product to look into :3 )
I think the problem with the non spell of Sekibanki (And pretty much every other card with a lot of bullets) that there's another memory leak somewhere in the bullet instance, I have a good profiler, so I can get a good look at that soon.
I already had an instance where the difference between a < and a <= caused a huge memory leak, so it's probably something small and stupid like that.

I've heard the hitbox bug from someone else as well, I made pretty sure that it would always revert it, but it seems I missed a concurrency problem somewhere.

I could have moved a lot of the stuff inside the boss objects outside of it, but for the sake of easiness and copyability I didn't, this allows me to take the "SimpleBoss" class, copy it and it's got everything I need for a boss.
I don't feel like long classes hinder you, because you have class structures windows in IDE's like Eclipse, and as long as everything is documented, it's the same as unpacking it and putting it in seperate classes, inside a package named after the boss.
ie. java2hu.allstar.enemy.sekibanki with classes Sekibanki.java, SekibankiSpell.java, SekibankiNonSpell.java
So it's a different way of doing the same thing and it works for me, you're free to do as you wish in your own projects though, the main library does have as much split classes as possible.

Nope, you weren't rude at all, even if you were (to some extent), I'm happy with any constructive feedback (even if I don't agree with something).

And yeah, I'd definitely be interested into seeing your engine, but you'll have to give me access for that yep ;)
« Last Edit: July 15, 2014, 10:44:42 PM by java2hou »

ShadowNCS

  • Prinny Overlord
  • Highly Responsive to Jinxes
Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #19 on: July 16, 2014, 09:51:36 PM »
Delayed death is actually a good idea for any other game than this all star remake :P, you'll want to move on as fast as possible.
Okay. I just thought I might have been an oversight or something, but if it's intentional, then it's okay. ^^

For the backgrounds, yeah, you need to learn how to work with shaders, it took me a while to figure out too, but it's worth investing time in and learn it. (Especially now that you've got the finished product to look into :3 )
I definitely will take a look at shaders at some point. But first, I need to get some more important stuff done, like another test game/ boss. xD

I think the problem with the non spell of Sekibanki (And pretty much every other card with a lot of bullets) that there's another memory leak somewhere in the bullet instance, I have a good profiler, so I can get a good look at that soon.
*is waiting to come across a memory leak at some point*
Really, it is only a matter of time. I'm really surprised I haven't noticed one yet. XD
What profiler are you using? ^^

I already had an instance where the difference between a < and a <= caused a huge memory leak, so it's probably something small and stupid like that.
Okay, that sounds really interesting. What were you checking that a missing equal sign was causing a memory leak?
But speaking of stupid mistakes, I'm really glad that Eclipse tells you that you can't use a single = for checking equality. For some time, that mistake was my biggest enemy (especially when I coded in Flash, which does NOT tell you when you accidentally wrote = instead of == . Ah, "fun" times of wondering why your code doesn't work as intended. xD; )

And yeah, I'd definitely be interested into seeing your engine, but you'll have to give me access for that yep ;)
Alright, I'll send you a PM once I've figured out how to give you read access. (I'm still kind of new to Git, I'm surprised I got my project onto Bitbucket without destroying everything. Wouldn't be the first time. xD )

Kimidori

  • Undefined Fantastic Girl, Nue
Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #20 on: July 17, 2014, 06:51:53 PM »
People with resolutions under 1280x960 will be scaled down a bit, which might cause a few cropping artifacts (probably not though, I've tried), even though 1280x960 is already a very outdated resolution, compared to 1080p and 4K.

Well, personally my laptop also have the resolution 1366x768, and the stat here show that 1366x768 is still the most popular resolution.


"No matter what, cute is justice. If you're watching shows without moe, you should really be questioning your life decisions. The creation of 2D anime girls is the pinnacle of human achievement." -Logan M

Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #21 on: July 17, 2014, 08:42:02 PM »
Well, personally my laptop also have the resolution 1366x768, and the stat here show that 1366x768 is still the most popular resolution.

Consider myself proven wrong than, the only place you can even find a 1366x768 monitor here is on tablets or laptops, I guess more people have those than a proper desktop pc...
Alright, I'll add in those preset resolutions, it's unfeasible to change the stage size (The actual size the game is calculated in), but scaling it down should still give good results.
This is how it renders for me at 1366x768, looks good: http://i.imgur.com/FlBvnqm.jpg

Okay. I just thought I might have been an oversight or something, but if it's intentional, then it's okay. ^^
I definitely will take a look at shaders at some point. But first, I need to get some more important stuff done, like another test game/ boss. xD
*is waiting to come across a memory leak at some point*
Really, it is only a matter of time. I'm really surprised I haven't noticed one yet. XD
What profiler are you using? ^^
Okay, that sounds really interesting. What were you checking that a missing equal sign was causing a memory leak?
But speaking of stupid mistakes, I'm really glad that Eclipse tells you that you can't use a single = for checking equality. For some time, that mistake was my biggest enemy (especially when I coded in Flash, which does NOT tell you when you accidentally wrote = instead of == . Ah, "fun" times of wondering why your code doesn't work as intended. xD; )
Alright, I'll send you a PM once I've figured out how to give you read access. (I'm still kind of new to Git, I'm surprised I got my project onto Bitbucket without destroying everything. Wouldn't be the first time. xD )

I'm using Yourkit Profiler, you have to pay to use it though, if you're not a school or open source user (I think?), but I have a license.

That memory leak was with a fade out effect, where a float would never go under 0 for some reason (I didn't stop it myself), and there I was checking for (float < 0), but the size of my bullet pool (Like 20000 bullets) with no bullets on the field gave it away.

And I had only found that after like 2 hours of experimenting, bugfixing is harsh sometimes.

EDIT: I actually found the sources for those lags, so now it's just a matter of fixing them, if you're interested: http://hastebin.com/iyexodacen.vhdl (It seems pretty much any use of meshes has this bug, so there's a few things that need fixing)

I've now added a built in profiler for things like this, which dumps the top 10 most time consuming update and draw methods, which is pretty effective to find lag sources, while taking in mind that 16.66 ms is the max amount of time for a single tick to remain at 60 fps.
« Last Edit: July 17, 2014, 10:23:47 PM by java2hou »

Tengukami

  • Breaking news. Any season.
  • *
  • I said, with a posed look.
Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #22 on: July 18, 2014, 12:11:18 AM »
I've now added a built in profiler for things like this, which dumps the top 10 most time consuming update and draw methods, which is pretty effective to find lag sources, while taking in mind that 16.66 ms is the max amount of time for a single tick to remain at 60 fps.
That's good to hear, because I'd love to play this, but it just stopped loading at some point. Can you update your OP with links as changes are made?

"Human history and growth are both linked closely to strife. Without conflict, humanity would have no impetus for growth. When humans are satisfied with their present condition, they may as well give up on life."

Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #23 on: July 29, 2014, 02:38:10 PM »
I played your game demo and I really liked it!
Some things I want to say:

- Gamepad/Controller support please :D I don't really like playing with the keyboard
- The first attack runs awful, sometimes only at 15 fps, when you start a boss via practice the game starts lagging for ~30sec, runs fine after that
- Raikos second attack was a bit too hard in my opinion, but maybe it's only because i didn't understand the pattern
- You need to fix dat loading times ._.
- It would be nice if the bosses would get a better death-explosion
- Like i said, you really have to do some performance improvement! I have no problems when there are a lot of bullets on-screen, there has to be something different causing the lag

Something for the final engine release:

- Will you add a spellcard/bomb-support? (Because I think you're not using that for the allstar, right?)
- You should give some tutorials how to script with your engine, maybe a wiki or something like that, and hopefully better tutorials than the dnh3 ones... ._.
- For your Game: Don't keep the original ZUN-Music and artworks in your game because of the copyright thing
- KEEP UP YOUR WORK AND DON'T DROP THE PROJECT! It has a lot of potential and maybe, when you're doing everything right, it could get better than Danmakufu
- For your final release: You definitely should implement a game overlay like in the official games, even if you're not using it in allstar, but an easy-to-use-support should be in your engine

I really hope to see more of your work soon
~Eredom
« Last Edit: July 30, 2014, 06:06:37 AM by Eredom »

Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #24 on: August 04, 2014, 05:51:20 PM »
I played your game demo and I really liked it!
Some things I want to say:

- Gamepad/Controller support please :D I don't really like playing with the keyboard
- The first attack runs awful, sometimes only at 15 fps, when you start a boss via practice the game starts lagging for ~30sec, runs fine after that
- Raikos second attack was a bit too hard in my opinion, but maybe it's only because i didn't understand the pattern
- You need to fix dat loading times ._.
- It would be nice if the bosses would get a better death-explosion
- Like i said, you really have to do some performance improvement! I have no problems when there are a lot of bullets on-screen, there has to be something different causing the lag

Something for the final engine release:

- Will you add a spellcard/bomb-support? (Because I think you're not using that for the allstar, right?)
- You should give some tutorials how to script with your engine, maybe a wiki or something like that, and hopefully better tutorials than the dnh3 ones... ._.
- For your Game: Don't keep the original ZUN-Music and artworks in your game because of the copyright thing
- KEEP UP YOUR WORK AND DON'T DROP THE PROJECT! It has a lot of potential and maybe, when you're doing everything right, it could get better than Danmakufu
- For your final release: You definitely should implement a game overlay like in the official games, even if you're not using it in allstar, but an easy-to-use-support should be in your engine

I really hope to see more of your work soon
~Eredom

I'm not really sure how I could add controller support to it... But I'll definitely take a look
Yeah, performance issues are kind of a thing I always manage to get in, how much I try to prevent them, but I've got good tools now to figure stuff out.
Loading times are fixed, just not in the demo.
Yeah, I agree that death explosions need to be a little better.

No spellcard bomb support, you're supposed to prevent deaths :P
Yeah, that's a big reason I'm doing this project, because it's a big tutorial on it's own, you have examples to look up to, but a bigger and better tutorial with everything in detail will definitely be supplied.
I've actually contacted ZUN inquiring about this through a by him supplied channel, but he has not replied, Until then, the game falls under fair use.
If he does eventually have a problem with it, there's alternatives, like having to own a copy of the games to rip the data from there.
I'm not an artistic person, nor a musical person, just a programmer... And I would also like to keep the uniqueness of ZUN in the game.
However, I don't think ZUN will have a problem with it, I'm not making money off it, and I'm doing it for the community.

The game actually has support for overlays, the "stage" is defined by coordinates, makes the stage smaller, and all core mechanics will adjust too (Think bullet deletion, movement restriction)
Then you're free to paste an overlay over anything outside of the bounds, but you can still uncomment some stuff in your objects, and they could just move outside of the bounds if you wish so. (Like joke spellcards, Koishi's Hell)

Thanks so much for all your kind words, I'll definitely show some more work soon, but I'm currently on a holiday, so limited progress is being made atm.

That's good to hear, because I'd love to play this, but it just stopped loading at some point. Can you update your OP with links as changes are made?

Of course, sorry for the late reply, I will release something with new performance upgrades soon.
« Last Edit: August 05, 2014, 04:56:14 PM by java2hou »

Re: Java2hu - Upcoming Open-Source Danmaku Engine running on Java
« Reply #25 on: August 22, 2014, 04:32:50 PM »
Quote
No spellcard bomb support, you're supposed to prevent deaths :P

Hmm but if for example i want to make a game with your engine and i want to keep it as close to the original as possible i need Bomb support! I mean of course, it's not supposed to be in the AllStar but for other games it may be necessary
I mean, you're writing the engine and you want to release the engine and if people want to use it to create own games, they need the support for bombs