Author Topic: Danmaku Time (shmup engine) [v1.2] (update: 2010-08-19)  (Read 22895 times)

Danmaku Time (shmup engine) [v1.2] (update: 2010-08-19)
« on: July 17, 2010, 10:38:00 AM »
Shmup engine, created from scratch in a week. Released: July 25th 2010

Updates via twitter:
@danmakutime

==Download==

v1.2 released:
DOWNLOAD | Manual

You need to install Java 6 if you don't have it already.

==Technical Info==

Programming language: Java (J2SE 6)
Scripting Language: Lua (LuaJ-1.0.3)
Rendering: OpenGL (JOGL)
Image format: PNG
Audio format: Ogg Vorbis
« Last Edit: August 19, 2010, 11:57:07 AM by anoNL »

KomeijiKoishi

Re: Danmaku Time (new shmup engine)
« Reply #1 on: July 17, 2010, 10:41:33 AM »
How 'bout finishing Touhou DS first?

But nice to see something like this anyway.

Re: Danmaku Time (new shmup engine)
« Reply #2 on: July 17, 2010, 09:33:09 PM »
Heh. Okay, good luck. Is it going to be open-source?

Stuffman

  • *
  • We're having a ball!
Re: Danmaku Time (new shmup engine)
« Reply #3 on: July 17, 2010, 10:52:11 PM »
Ew, java.

Well if it can keep a decent framerate I won't complain.

Re: Danmaku Time (new shmup engine)
« Reply #4 on: July 18, 2010, 07:24:50 AM »
Heh. Okay, good luck. Is it going to be open-source?
yes


Re: Danmaku Time (new shmup engine)
« Reply #5 on: July 18, 2010, 07:27:45 AM »
I'm up for testing this if its ok with ya.

P♂ zeal

  • Haha,
  • old chap
Re: Danmaku Time (new shmup engine)
« Reply #6 on: July 18, 2010, 01:39:43 PM »
it'd be nice if you'd program in the BGM pausing when you pause, so if people want music sync in a level/spellcard  it doesnt get ruined it they pause.
« Last Edit: July 18, 2010, 01:43:23 PM by P♂ zeal »

Re: Danmaku Time (new shmup engine)
« Reply #7 on: July 18, 2010, 08:09:37 PM »
it'd be nice if you'd program in the BGM pausing when you pause, so if people want music sync in a level/spellcard  it doesnt get ruined it they pause.
This. Harder than diamond.

Re: Danmaku Time (new shmup engine)
« Reply #8 on: July 19, 2010, 10:04:50 AM »
10000 bullet render test: http://www.youtube.com/watch?v=47A9ZO7FvBM

Of course there's hardly any scripting, no collision detection, etc. but right now I'm happy with the performance.

EDIT: Working on the player script now. I'm in need of some default graphics/music/sound that's not ripped from a commercial game.
« Last Edit: July 19, 2010, 08:18:28 PM by anoNL »

Re: Danmaku Time (new shmup engine)
« Reply #9 on: July 19, 2010, 08:24:42 PM »
At this stage of the game you can probably get away with just drawing little triangles. Also, http://www.freesound.org/

Re: Danmaku Time (new shmup engine)
« Reply #10 on: July 20, 2010, 05:19:11 PM »
it'd be nice if you'd program in the BGM pausing when you pause, so if people want music sync in a level/spellcard  it doesnt get ruined it they pause.
done :)

Working on the rest of the audio code now.

EDIT: audio code finished
« Last Edit: July 20, 2010, 06:28:09 PM by anoNL »

Re: Danmaku Time (new shmup engine)
« Reply #11 on: July 21, 2010, 08:50:47 PM »
Collision detection & handling implemented  :toot:

Day 3 progress video

EDIT: Day 4 finished
- Collision detection bug fixes
- New collision node types: line segment & axis-aligned rectangle
- Advanced text rendering (fontName,fontStyle,fontSize,color,anchor,outlineColor,outlineSize,underline)
- Hitbox displays when focused
- Enemies can drop items
- Enemies explode
- Graze counter

Day 4 progress video

« Last Edit: July 22, 2010, 10:12:58 PM by anoNL »

Re: Danmaku Time (new shmup engine)
« Reply #12 on: July 23, 2010, 04:15:43 AM »
Okay, about hitboxes and the like -- How much of this is customizable?

Re: Danmaku Time (new shmup engine)
« Reply #13 on: July 23, 2010, 06:32:23 AM »
Okay, about hitboxes and the like -- How much of this is customizable?
Pretty much everything.

You first define a number of collision types, and which of these types collide with which others:
Code: (lua) [Select]
    --Setup collision matrix
    local colMatrix = ColMatrix.new()
    playerColType = colMatrix:newColType()
    playerGrazeColType = colMatrix:newColType()
    playerItemColType = colMatrix:newColType()
    playerShotColType = colMatrix:newColType()
    itemColType = colMatrix:newColType()
    enemyColType = colMatrix:newColType()
    enemyShotColType = colMatrix:newColType()

    --player gets collision events from enemyColType and enemyShotColType
    colMatrix:setColliding(playerColType, enemyColType)
    colMatrix:setColliding(playerColType, enemyShotColType)

    --player graze gets collision events from enemyColType and enemyShotColType
    colMatrix:setColliding(playerGrazeColType, enemyColType)
    colMatrix:setColliding(playerGrazeColType, enemyShotColType)

    --item gets collision events from hitting the player's item hitbox
    colMatrix:setColliding(itemColType, playerItemColType)

    --player shots and enemies both get collision events from hitting each other
    colMatrix:setColliding2(playerShotColType, enemyColType)

(Note that setColliding doesn't necessarily give both objects collision events, it only passes events to the first argument of the function. setColliding2 changes the colMatrix so both objects get events.)

Then you just add the kinds of nodes you want to your objects:

Code: (lua) [Select]
    --main player hitbox: a circle with radius 2.0
    player:setColNode(0, playerColType, CircleColNode.new(2.0))
    --player graze hitbox: a circle with radius 10.0
    player:setColNode(1, playerGrazeColType, CircleColNode.new(10.0))
    --player item pickup hitbox: a rectangle with relative position (-12, -20) and size (24, 40)
    player:setColNode(2, playerItemColType, RectColNode.new(-12, -20, 24, 40))

Re: Danmaku Time (new shmup engine)
« Reply #14 on: July 23, 2010, 09:22:16 PM »
Day 5 finished:
- Title screen / main menu
- Items (point/power/bomb/life/fullRestore)
- Item autocollect line
- Boss characters with spellcards and lifebar

Day 5 progress video

GenericTouhouFailure

  • WHAT DO YOU MEAN IT'S NOT CALLED UNL? *boom*
Re: Danmaku Time (new shmup engine)
« Reply #15 on: July 23, 2010, 11:38:44 PM »
Holyhellthisisfast.png

Re: Danmaku Time (new shmup engine)
« Reply #16 on: July 24, 2010, 09:03:41 PM »
Day 6 finished:
- global reset (for restart game & return to title options)
- player invincible for a short time after getting hit
- boss indicator sprite
- pause function is now scriptable
- sound engine changeable from config file (choose between hard sync and smooth playback)
- scrolling backgrounds
- boss dialog

Day 6 progress video

Lord Phantasm Satori

  • Permabanned
  • RIP 7/21/2010-9/10/2010
Re: Danmaku Time (new shmup engine)
« Reply #17 on: July 25, 2010, 02:04:35 AM »
holy crap! I guess you aren't the procrastinating type. what language is it in?

Tengukami

  • Breaking news. Any season.
  • *
  • I said, with a posed look.
Re: Danmaku Time (new shmup engine)
« Reply #18 on: July 25, 2010, 02:07:11 AM »
holy crap! I guess you aren't the procrastinating type. what language is it in?

http://code.google.com/p/danmakutime/

"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."

GenericTouhouFailure

  • WHAT DO YOU MEAN IT'S NOT CALLED UNL? *boom*
Re: Danmaku Time (new shmup engine)
« Reply #19 on: July 25, 2010, 02:16:59 AM »
Mac support. You have it?
If not will it run in crossover or something?
if yes ilu

Re: Danmaku Time (new shmup engine)
« Reply #20 on: July 25, 2010, 06:49:09 AM »
Mac support. You have it?
Yes, native support. (Though there may be mac-specific bugs as I don't have a mac to test on)

Lord Phantasm Satori

  • Permabanned
  • RIP 7/21/2010-9/10/2010
Re: Danmaku Time (new shmup engine)
« Reply #21 on: July 25, 2010, 08:09:30 AM »
F**K YEAH! I actually KNOW JavaScript... (unless Java and JavaScript are two different things :()

Re: Danmaku Time (new shmup engine)
« Reply #22 on: July 25, 2010, 08:22:28 AM »
F**K YEAH! I actually KNOW JavaScript... (unless Java and JavaScript are two different things :()
Javascript == ECMAscript
It's made to look like Java, but it's completely different.

I used Lua for scripting which is much more like Javascript than Java is.

GenericTouhouFailure

  • WHAT DO YOU MEAN IT'S NOT CALLED UNL? *boom*
Re: Danmaku Time (new shmup engine)
« Reply #23 on: July 25, 2010, 10:46:43 AM »
Yes, native support. (Though there may be mac-specific bugs as I don't have a mac to test on)
ohgod *gets ready to do shit*

Re: Danmaku Time (new shmup engine)
« Reply #24 on: July 25, 2010, 04:34:47 PM »
v1.0 Beta released:
Downloads
Scripting manual

You need to install Java 6 if you don't have it already.

Re: Danmaku Time (new shmup engine) [v1.0beta released]
« Reply #25 on: July 25, 2010, 08:09:44 PM »
Hmm. Possible bug: when you go above the POC, and then go below it before you've collected all the items, they stop being attracted towards you.

Also, sound isn't working on Windows 7 x64 ...

Re: Danmaku Time (new shmup engine) [v1.0beta released]
« Reply #26 on: July 25, 2010, 08:59:57 PM »
Hmm. Possible bug: when you go above the POC, and then go below it before you've collected all the items, they stop being attracted towards you.
It's easily changed, I honestly didn't realize that Touhou does it differently.


Also, sound isn't working on Windows 7 x64 ...
Probably related to there being no sound :D

I commented out this line in script/main.lua:
Code: [Select]
soundEngine:setBGM("bgm/bgm01.ogg")...which is the only sound I was using... If you remove the '--' prefix from the script file, you should at least get some background music.

Re: Danmaku Time (new shmup engine) [v1.0beta released]
« Reply #27 on: July 25, 2010, 09:07:09 PM »
Yeah, in the Windows games, once an item has started becoming attracted to the player, it doesn't stop until the player either collects it or dies.

And yeah, that would explain it. |3

How customizable are things like size/position of the playing field? Any plans for things like being able to "pack" a game all into one file so it's harder for people to hax it? What about storing dialogue and other text in separate text-files for ease of translation?

DDRMANIAC007

  • The DDR Maniac
  • Dance Dance Revolution
    • The Touhou stream blog
Re: Danmaku Time (new shmup engine) [v1.0beta released]
« Reply #28 on: July 25, 2010, 09:43:53 PM »
It says to put scripts in scripts. (Which doesn't exist)

Lord Phantasm Satori

  • Permabanned
  • RIP 7/21/2010-9/10/2010
Re: Danmaku Time (new shmup engine) [v1.0beta released]
« Reply #29 on: July 26, 2010, 06:04:06 AM »
Will there be a way to pack stuff in a way so that downloaders won't need the engine?