Danmakufu is a Japanese application that uses its own scripting language (similar to C#) to let users create bullet hell patterns, or entire bullet hell games. The scripting engine is pretty powerful, you can also create custom players, custom bullets, etc.
Danmakufu is a sort of MUGEN for bullet hell games. Here's something other users created with it.
[media]http://www.youtube.com/watch?v=y1OUpi_RyOw[/media]
Maybe that wasn't the best video to introduce you to Danmakufu.
Here's something more serious.
[media]http://www.youtube.com/watch?v=hEd_GVJZM5E[/media]
[media]http://www.youtube.com/watch?v=r9w1wkxGR7Q[/media]
And an example of a completed Danmakufu pattern script:
[CODE]#TouhouDanmakufu
#Title[EXSakuyaSpellcard11]
#Text[Vortex Sign 'Sharp Whirls']
#Player[FREE]
#ScriptVersion[2]
script_enemy_main
{
let CSD = GetCurrentScriptDirectory;
let imgBoss = CSD ~ "img/bossimg.png";
let imgCut = CSD ~ "img/bosscutin.png";
let imgBossSizeX = 22;
let imgBossSizeY = 58;
let imgCutinSizeX = 576;
let imgCutinSizeY = 825;
let bullets = [];
let timer = 60;
let life = 5000;
let score = 3000000;
let name = "Vortex Sign 'Sharp Whirls'";
#include_function "lib\SHOT_REPLACE\shot_replace.dnh";let imgBack = GetCurrentScriptDirectory ~ "img\back.png";
@Initialize
{
shotinit;
SetEnemyMarker(true);
SetLife(5000);
SetTimer(timer);
SetScore(score);
SetMovePosition01(GetCenterX,GetCenterY - 120,5);
LoadGraphic(imgBoss);
LoadGraphic(imgCut); LoadGraphic(imgBack);
CutIn(YOUMU, name, imgCut, 0,0,imgCutinSizeX,imgCutinSizeY);
wait(240);
mainTask;
}
@MainLoop
{
SetCollisionA(GetX,GetY,32);
SetCollisionB(GetX,GetY,16);
yield;
}
@DrawLoop
{
SetTexture(imgBoss);
SetRenderState(ALPHA);
SetAlpha(255);
SetGraphicRect(0,0,imgBossSizeX,imgBossSizeY);
SetGraphicScale(1,1);
SetGraphicAngle(0,0,0);
DrawGraphic(GetX,GetY);
}
@BackGround
{
SetGraphicRect(0,0,384,448);
SetTexture(imgBack);
DrawGraphic(GetCenterX,240);
}
@Finalize
{
DeleteGraphic(imgBoss);
}
task mainTask
{
SetInvincibility(250);
wait(250);
yield;
fireTask;
movementTask;
checkTask;
}
task fireTask
{
loop
{
fireTaskOne;
wait(150);
yield;
}
}
task fireTaskOne
{
let dir = 0;
let density = 3;
loop(10)
{
loop(360 / density)
{
dir = dir + (density / 2);
if(dir % 5 == 0)
{
wait(1);
}
if(dir % 3 == 0)
{
CreateShot01(GetX,GetY,2 + (density / 3),dir * density,RED32,0);
}
if(dir % 2 == 0)
{
PlaySE("script\EX-Sakuya\sfx\Shot1.wav");
CreateShot01(GetX,GetY,2 + (density / 3),dir,WHITE32,0);
}
else
{
CreateShot01(GetX,GetY,(2 + (density / 3)) * -1,dir,GREEN23,0);
}
wait(0);
}
PlaySE("script\EX-Sakuya\sfx\Shot2.wav");
wait(11);
density++;
}
}
task movementTask
{
loop
{
wait(290);
SetMovePosition01(GetCenterX - 120, 120, 0.6);
wait(290);
SetMovePosition01(GetCenterX + 120, 120, 0.6);
yield;
}
}
task checkTask
{
let i = 0;
loop
{
i = 0;
yield;
while (i < length(bullets))
{
if (Obj_BeDeleted(bullets[i]))
{
bullets = erase(bullets, i);
i--;
}
else
{
}
i++;
}
wait(1);
}
}
function newBullet(angle, graphics, x, y)
{
let obj1 = Obj_Create(OBJ_SHOT);
Obj_SetX(obj1, x);
Obj_SetY(obj1, y);
Obj_SetSpeed(obj1, 6);
Obj_SetAngle(obj1, angle);
ObjShot_SetGraphic(obj1, graphics);
bullets = bullets ~ [obj1];
}
function wait(w)
{
loop(w)
{
yield;
}
}
}[/CODE]
I love Danmakufu because it's a nice break from traditional programming; you have an idea for an interesting bullet pattern, you script it, and you play it. No need to mess around with rendering and complex stuff.
It's fun.
Here's the wiki: [url]http://dmf.shrinemaiden.org/[/url]
Download link: [url]http://www.geocities.co.jp/SiliconValley-Oakland/9951/products/th_dnh.zip[/url]
Applocale link: [url]http://www.microsoft.com/globaldev/tools/apploc.mspx[/url] (required if you're not from Japan - Danmakufu crashes without certain japanese fonts or some shit like that)
And here's a tutorial for beginners: [url]http://www.youtube.com/watch?v=OYpwkQWGFbk[/url]
[QUOTE=Samuelgames;20832402]They've even released full games for this thig, Touhou: Concealed of conclusion is a nice example.[/QUOTE]
Indeed. CoC is pretty good, it's practically 4 games in one.
Also, I forgot to post [url]http://bulletforge.org/[/url] - which is a beta site where everyone can upload and share their scripts.
Looks pretty cool, but I don't see how it's similar to C#. It has curly braces, and that's about it
[QUOTE=turb_;20839853]Looks pretty cool, but I don't see how it's similar to C#. It has curly braces, and that's about it[/QUOTE]
It has no pointers, also it has references for OBJ Bullets.
Lots of languages have references but not pointers. By your logic I could say this was similar to Perl
Well, I mainly program in C# and I had no trouble using Danmakufu scripts.
You're right though.
This is kinda hard. I wish theres a english patch. And you need Applocale or japenese locale to run this shit.
[QUOTE=barrelroll5;20975689]This is kinda hard. I wish theres a english patch. And you need Applocale or japenese locale to run this shit.[/QUOTE]
I agree about Applocale, but what do you need the english patch for?
Sorry, you need to Log In to post a reply to this thread.