Author Topic: 東方変菓伝 ~ Highly Responsive to Pancakes  (Read 11114 times)

Python

  • Plains of Chi-u have no end.
  • *
  • They are boundless and last forever.
東方変菓伝 ~ Highly Responsive to Pancakes
« on: November 25, 2015, 01:34:08 PM »
Greetings, dear visitor of this thread. Nearly six months ago, I set out on an endeavour to do what I thought nobody had done before me. Near the end of development, I was proven wrong though. There is one more fangame like this one. But this didn't discourage me, I kept going because I didn't want to dump all my efforts and everything I had achieved into the trash can. So I made it stand out as much as I could. Ladies and gentlepeople, I am proud to present a project that essentially changed my view of life, believe it or not. I present to you...
Touhou Henkaden ~ Highly Responsive to Pancakes (lit. Eastern Strange Pastry Tale) is a fangame made in Danmakufu ph3 that aims to recreate the playstyle of the very first Touhou game, Highly Responsive to Prayers while still being different enough to be considered its own game. Let me begin with the most basic features of this game.

  • Three different playable characters, each with their own benefits and drawbacks!
  • Three selectable routes for the main scenario: venture to the Netherworld, Hell or Heaven to confront the causer of the incident!
  • An extra scenario that can be unlocked by clearing the main scenario with all characers!
  • A seperate "Endless Mode" to chase your own highscores!
  • The ability to script your very own stages and scenarios and play them directly inside HRtPancakes through Stage Pack mode!
  • Lots of pancakes!



How to play:
HRtPancakes plays similar to regular ol' HRtPrayers, with a couple differences.

You control your character with the arrow keys, and you can slow down movement by pressing SHIFT. Pressing Z will allow you to fire a single shot, pressing X will make your character sweep the space in front of them. The ball can be maneuvered by shooting it or by sweeping it if it's close enough. Due to HRtPancakes being more focused on the bullet hell aspect of Touhou, your own balls can't kill you any longer. Pressing C will cause you to use a bomb, which can clear out bullets and turn over panels.

Lives and bombs are gained through grazing and scoring, respectively. A life is awarded every 300 (200 for Reimu) graze points. A bomb is awarded either by dying, or every 250.000 (125.000 for Reimu) score points. You can carry infinite extra lives, but only up to 8 bombs.

Your own shots and your sweep can cancel out enemy bullets. However, not all bullets can be destroyed, only small ones, dots, pellets, arrowheads etc.


The playable characters:
  • Reimu Hakurei: Reimu has average speed, a regular shot, her bomb hits about everything on the screen. She also gains lives and bombs faster than other characters.
  • Marisa Kirisame: Marisa is a fast character with a shot that covers a greater area, but her bomb has a fixed cross pattern.
  • Sakuya Izayoi: Sakuya is faster than Reimu, but slower than Marisa. She has a regular shot and her bomb can damage bosses.


The different modes:
  • Normal Mode: This is the main scenario. After the first five stages, you can choose to go to either Hakugyokurou, Chireiden or Heaven for the last ten stages.
  • Extra Mode: Extra Mode can be unlocked by getting the good ending in the main scenario with all characters. The route you take doesn't matter. Unlike the main scenario, the extra scenario consists of only ten as opposed to fifteen stages.
  • Endless Mode: In Endless Mode, your lives and bombs are taken away from you. Swarms of Yin-Yang enemies will attack you nonstop until you make a mistake. Sometimes, SinGyoku will appear on the battlefield as well. Destroying them will clear all bullets that are currently on screen.
  • Stage Packs: Here, you can choose to play custom stages made by either you, or other people. HRtPancakes has full support for complete custom scenarios and players. A sample Reisen player, as well as a sample scenario that are both only accessible in Stage Pack Mode are provided in the download.


That's basically it for HRtPancakes. I hope you will enjoy this game. Should you have any questions, please don't hesitate to post them here. I'll gladly help you out. Same goes for bug reports of course. If you're going to submit a bug report, please tell me where the bug occurred (stage 8 on route B, Endless Mode, title screen etc.) and of course, what happened (error, glitch etc.).

As for Stage Packs, I'm probably going to publish some sort of documentation on how exactly they work soon, and how to make your very own HRtPancakes.
Was there anything else...? Oh right, the download link to my magnificent work, and of course, some screenshots!

Download Highly Responsive to Pancakes!

Screenshot #1
Screenshot #2
Screenshot #3
Screenshot #4

And of course, the credits. Do note, that throughout its development, HRtPancakes became an absurd Gordian knot of code that I myself couldn't comprehend after a while, especially since I rarely ever comment anything for some reason. That's why there's still code and libraries borrowed from other people. Its system was also built before my custom system, so that's why there are no bullet delete effects etc.

  • ZUN - Sounds, graphics, Touhou as a whole
  • Tasogare Frontier - Sounds, graphics
  • TalosMistake - Revamped physics
  • dairi - Graphics
  • GTBot - Cutin functions
  • Ozzy/ExPorygon - Effects, dialogue functions
  • Jake/ultimadragon, Pikmin H - Playtesting
« Last Edit: February 17, 2016, 07:47:40 PM by Python »
Have a look at my truly scrumptious scripts!.

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #1 on: November 25, 2015, 06:16:23 PM »
Congratulations on finishing your game. Screenshots are looking good. Pretty sure some people from Eirin will notice it and give it a try too.

Well done. Makes me feel all warm and fuzzy when people submit completed scripts, bossfights or full games.

Sparen

  • Danmakufu Artist
  • Git ready, git set, PUUSH!
    • AFCDTech
Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #2 on: November 25, 2015, 09:05:54 PM »
If you ever need it, you can use Github's Wiki Feature to have an online copy of your API, assuming that it is possible to figure out what each component of your script actually does and how it works with other components (which may or may not be possible given the... *lack* of comments).

AJS

  • Danmakufu Scripter
Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #3 on: November 26, 2015, 07:18:15 AM »
Not a bad game, and I was enjoying it for the most part until I got to one of the final boss fights when one of the game's bigger flaws becomes a bit bothersome--the lack of a "kicking" attack like in the original HrtP game.  This makes it extremely difficult to get the ball off the ground when it's stopped bouncing and is basically just reduced to a roll.  When you throw in the chaotic danmaku patterns the late-stage bosses use, gameplay basically just devolves into desperately smashing the X key to try to get the darn ball in the air while avoiding danmaku.  This leads to the battles being much more drawn out than they ought to be.  In addition, the shot the player can fire to influence the ball's trajectory only seems to work half the time.  The rest of the time it'll hit the ball but do nothing to the ball's trajectory.

Also, you may want to work on the background music-looping.  It was a bit jarring at times.  As for the stage danmaku, I feel it fluctuates a bit too much in difficulty.  I actually felt that some later stages were significantly easier than earlier ones.  In particular the stages where the tiles would only shoot a single, large, slow-moving bullet.  Oh, and did you make the sound effect for gaining a new life and a new bomb the same?  Because I heard the "extend" sound effect several times, but I only saw the life counter actually go up a fraction of the time.  In the heat of battle, I often didn't have time to look up to see the "EXTEND!" text, so differentiating the sound effects would be a helpful touch I think.  The "EXTEND!" sound effect is practically Pavlovian to any Touhou fan.  Don't taunt me with it when I'm not actually receiving an extra life ;_;

Ahhh, but negative ranty stuff aside, the game looks nicely put together, and the physics on the ball and stage obstacles were well done.  I really was having quite a lot of fun. :)  Boss danmaku was par for the course.  I would have suggested having the boss use "spells" as their health got lower, but you mix up their attack phase with a pretty large variety of danmaku, so I say that works just fine too!  I was also quite amused by your inclusion of the infamous "HARRY UP!"  Really the only thing that kinda put a damper on my enjoyment was the aforementioned lack of a kicking option.  If you could implement a solution to that, I think this game could really be great.  If not, maybe you could at least have the player bomb throw the ball up into the air randomly?  Whenever I bombed (especially during a boss fight), it was so I could get my bearings together.  When the ball was rolling, this would often be so I could buy myself some time to try in vain to get the ball in the air again before the boss danmaku would resume.  Having the bomb do that for you would be a nice touch if you can't implement "kicking."

Spoiler:
I haven't played the game that much yet, but I'm pretty sure it's safe to assume that Yukari's gonna be the Extra Boss.  Goddammit Yukari x)

Ahh, and I don't know if you were taking a cue from my Yakumo Ball script when you put the ball hitbox indicator around the players, but it was a nice touch. ;)

EDIT: A few more things I'd like to add.  One, I think you should extend the player's invincibility frames a little bit longer after bombing.  As it is now, I can still get killed while the bomb is just finishing and I"m still trying to re-gather my bearings.  Also, I seem to have stumbled on a glitch.  I beat
Spoiler:
Utsuho
for the first time, who was also the first final boss I defeated, and I suddenly unlocked the bonus stage with
Spoiler:
Yukari
.  I'm guessing this wasn't intended since you wanted the player to beat all the final bosses before reaching that stage, I'm assuming?
« Last Edit: November 26, 2015, 07:45:29 AM by AJS »

Python

  • Plains of Chi-u have no end.
  • *
  • They are boundless and last forever.
Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #4 on: November 26, 2015, 04:09:05 PM »
I appreciate your feedback very much, it means a lot to me. Let me try to respond to most of the things you said.

1) I'm honestly not exactly sure how I'd add a kicking move. I didn't write the physics myself, Talos rewrote my old iteration to make it better and fix some bugs and I'm afraid I don't quite understand everything he did. Same goes for the shots I guess.

2) Getting the music to loop properly was a royal pain in the arse and I couldn't get it to loop any better than it does now.

3) Yes, the sound effects for life and bomb extends are the same. I can see why this is a problem and I'll change it in an upcoming update.

4) The bonus stage is part of the good ending, that's very much intended. If you beat the final boss without dying during the spellcard, you'll enter the bonus stage and if you clear it, you'll get the good ending, so you did absolutely nothing wrong. The extra scenario that's unlocked by clearing the game with all characters contains a total of ten stages anyways, nine stage stages and a boss stage.

I'm going to push out an update on the weekend that will fix a few bugs. At the same time, I'm going to try and write a documentation of how the game works for those people who want to create stage packs. Surprisingly, there does seem to be some sort of interest in this.

But there's no guarantee, I have other things that I'd also like to take care of. So bear with me, if I'm not on time with my releases.  :ohdear:
Have a look at my truly scrumptious scripts!.

AJS

  • Danmakufu Scripter
Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #5 on: November 26, 2015, 07:32:11 PM »
1) I'm honestly not exactly sure how I'd add a kicking move. I didn't write the physics myself, Talos rewrote my old iteration to make it better and fix some bugs and I'm afraid I don't quite understand everything he did. Same goes for the shots I guess.
I dug through your code a little bit and found everything you'll need to look at.  In the Functions folder, open up "HRTPFunctions.dnh" (preferably in something like Notepad+, if you don't already use that).  Lines 80-89 control the "swatting" function.
Code: [Select]
//This code allows the ball to be shot upward by Reimu's gohei (spell button)
if(GetVirtualKeyState(VK_SPELL) == KEY_PUSH){GoheiTime=15;}
if(GetObjectDistance(ReimuBall, GetPlayerObjectID) < 48){
if(GoheiTime>0){
let angle = atan2(GetPlayerY-ObjMove_GetY(ReimuBall),GetPlayerX-ObjMove_GetX(ReimuBall))+180;
let realspeed = (GetSpeedX(ReimuBall)^2+GetSpeedY(ReimuBall)^2)^(1/2);
SetSpeedX(ReimuBall, realspeed*cos(angle)*1.5);
SetSpeedY(ReimuBall, realspeed*sin(angle)*1.5);
}
}
I decided to fiddle with the code a little myself.  And instead of adding a new kicking function, I just modified this existing one a little bit.  When I made Yakumo Ball, I included a system of checks to make sure that the player couldn't accidentally hit Ran too far to the side, which would basically deadlock the game.  Right after the "let angle" line, I threw in this:
Code: [Select]
if(angle<440 && angle>330){angle = 315;}
if(angle>100 && angle<210){angle = 235;}
This acts as a safeguard so if the ball is rolling on the ground, your next "swat" will launch the ball back into the air.  (I gave it such a large margin of detection because I'm not entirely sure exactly how close a rolling ball could get to the player angle-wise before bouncing off the player's own hitbox).  I'm experimenting with it now and it seems to help massively.  Feel free to tweak this yourself if you want to implement it in the next update ;)  Right now, it makes it so that if your next hit would launch the ball at less than a 30-degree angle relative to the ground, it will instead launch it at a 45-degree angle (effectively serving as a "kick").  But you could change those numbers as you please.  It's not foolproof, but it helps a lot.

EDIT: Also, if I may add an opinion.  I understand you want to make Extra Mode difficult to unlock, but the criteria for unlocking it--getting a "Good Ending" with every character, which involves not dying at all to the final boss AND beating the Bonus boss--can be rather annoying.  It sucks when despite how well you've been doing an entire run, the whole playthrough can be invalidated by one stupid death on the final boss, locking you out of the bonus boss.  Perhaps you could change it to something like "Beat the final boss with X lives remaining to unlock the bonus stage" instead?  That way it will reward good play through the entire run, and not just on the final boss alone.
« Last Edit: November 26, 2015, 11:18:47 PM by AJS »

Zil

Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #6 on: November 27, 2015, 11:02:00 AM »
Getting the ball off the ground is near impossible. This is insufferable and must be fixed at any cost. Further, the shot often does nothing when it hits the ball. These were already brought up however. I have some other, less objective criticisms.

First, the basic idea in games like this is that the player is supposed to juggle the ball, and there is a penalty for allowing it to hit the ground. This game seems to have nothing of the kind. As it stands, the player has no incentive to actually juggle the ball. There's no pressure in the whole game.

The scoring is nonsense. Many things can simply be milked for as long as the player likes, granting unlimited lives and bombs, in addition to rendering the score itself meaningless. Personally I would argue that a short game like this should have some kind of functional scoring system, or it loses replay value very quickly. I can understand, however, not wanting to bother with that and just making a simple game with the goal being to get to the end and nothing more (in which case, no score should even be displayed).

It is far too easy. Almost nothing can hit you if you mash the shot and melee buttons. Sakuya's bomb kills bosses instantly with no effort.

I can respect your ambitions, but personally I don't see this game as particularly playable. It has many serious and very basic flaws that should be quickly apparent.

Python

  • Plains of Chi-u have no end.
  • *
  • They are boundless and last forever.
Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #7 on: November 27, 2015, 05:53:29 PM »
(I knew this was a terrible idea, I should've dumped this in the trash while I still could.)

Instead of adding a new kicking function, I just modified this existing one a little bit.  When I made Yakumo Ball, I included a system of checks to make sure that the player couldn't accidentally hit Ran too far to the side, which would basically deadlock the game.  Right after the "let angle" line, I threw in this:
Code: [Select]
if(angle<440 && angle>330){angle = 315;}
if(angle>100 && angle<210){angle = 235;}
This acts as a safeguard so if the ball is rolling on the ground, your next "swat" will launch the ball back into the air.  (I gave it such a large margin of detection because I'm not entirely sure exactly how close a rolling ball could get to the player angle-wise before bouncing off the player's own hitbox).  I'm experimenting with it now and it seems to help massively.  Feel free to tweak this yourself if you want to implement it in the next update ;)  Right now, it makes it so that if your next hit would launch the ball at less than a 30-degree angle relative to the ground, it will instead launch it at a 45-degree angle (effectively serving as a "kick").
Thanks, this really helps a lot. Talos is currently looking into polishing the physics and making them better, so I'll add this if he didn't already find this (or any solution).

Also, if I may add an opinion.  I understand you want to make Extra Mode difficult to unlock, but the criteria for unlocking it--getting a "Good Ending" with every character, which involves not dying at all to the final boss AND beating the Bonus boss--can be rather annoying.  It sucks when despite how well you've been doing an entire run, the whole playthrough can be invalidated by one stupid death on the final boss, locking you out of the bonus boss.  Perhaps you could change it to something like "Beat the final boss with X lives remaining to unlock the bonus stage" instead?  That way it will reward good play through the entire run, and not just on the final boss alone.
It only requires not dying to the final spell. But I can see where you're coming from. Long story short, HRtPancakes was already finished multiple times, but I added more and more shit to an already finished version (Extra mode is part of this) to make it even more finished and...yeah, I really didn't give this much thought.



Very well...I can see the reputation for this uh...game is very mixed. Some like it, others hate it and everyone found a large quantity of bugs, glitches and errors that I had previously never encountered while testing. It's very disappointing to see all the time and effort amount to nothing or at best a mere mediocre result. Given my current personal life, this certainly doesn't help at all. But that's beside the point, nobody wants to hear my lament. I'll put out an update in a few days that will contain bugfixes and documentation about stage packs. I honestly don't really want to do anything with this anymore, but I'll try and correct the mistakes I made as much as possible. Please understand if I'm unable to meet your expectations.
Have a look at my truly scrumptious scripts!.

Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #8 on: November 27, 2015, 09:56:06 PM »
While you're at it, could you please make the characters only erase dots and ice? Endless Mode was so easy that, only because I messed up, I just got a highscore of 493k...

That would be great, since I'd really like to dodge danmaku and not erase them 90% of the time.

[Also, I'd appreciate if you made Endless Mode get harder as the player progresses - like, a boss like Cirno, a rain, something like that. It'd make it fun, in my opinion]

I hope this isn't really much...

Lollipop

  • stay woke
  • literally and figuratively dying
Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #9 on: November 27, 2015, 10:52:20 PM »
this is fun!  :]
Touhou 1CCS:
Hard: LLS, EoSD(NB), PCB(NB), IN, MoF, TD, DDC(NB), LoLK
Lunatic: EoSD, PCB, DDC, LoLK
Extra: LLS, EoSD, PCB(Extra&Phantasm), IN, MoF, SA, DDC, LoLK
Current Focus: 1cc SA Hard, or an Extra

Python

  • Plains of Chi-u have no end.
  • *
  • They are boundless and last forever.
Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #10 on: November 28, 2015, 10:42:03 AM »
While you're at it, could you please make the characters only erase dots and ice? Endless Mode was so easy that, only because I messed up, I just got a highscore of 493k...

That would be great, since I'd really like to dodge danmaku and not erase them 90% of the time.

[Also, I'd appreciate if you made Endless Mode get harder as the player progresses - like, a boss like Cirno, a rain, something like that. It'd make it fun, in my opinion]

I hope this isn't really much...
I was thinking of expanding Endless Mode anyway.
Have a look at my truly scrumptious scripts!.

Python

  • Plains of Chi-u have no end.
  • *
  • They are boundless and last forever.
Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #11 on: December 01, 2015, 03:41:02 PM »
So, the game received a small update that fixes the game breaking bugs you people mentioned. Thanks everyone. You can download the updated version straight from the OP.

About stage packs...yes, I began writing the documentation, but it's not available yet as I'm not done. I wanted to push out this update to fix game breaking bugs. As for progress on this documentation, I already have the functions list done, but not the tutorials, so those of you who wish to create stage packs please be patient.

Touhou Henkaden V1.1 Changelog:
- Fixed a bug where the final bosses could be damaged during their explosion
- Fixed a bug where you would be locked out of the bonus stage if you died during the final boss fight in general, not just during the last spell
- Fixed a bug where during the endings you could use the old player bombs
- Fixed a bug where shots would not always bounce the ball upwards (thanks to TalosMistake)
- Made it easier to scoop the ball up from the ground (thanks to AJS)
- Changed the bomb extend sound
« Last Edit: December 01, 2015, 03:51:14 PM by Python »
Have a look at my truly scrumptious scripts!.

Conarnar

  • reeeeeeeeeeeeeeeeeee
  • aaaaaaaaaaaaaaaaaaa
Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #12 on: December 03, 2015, 08:00:23 AM »
There is a bug where replays will load the game mode most recently played. For example, if I clear the game in normal mode and save a replay, then played endless mode, the replay will load endless mode.

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #13 on: December 03, 2015, 08:23:09 AM »
There is a bug where replays will load the game mode most recently played. For example, if I clear the game in normal mode and save a replay, then played endless mode, the replay will load endless mode.
Ah, such a recognizable and classic problem. Guessing the game mode is not being set proper in the code when loading replay.

Python

  • Plains of Chi-u have no end.
  • *
  • They are boundless and last forever.
Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #14 on: December 03, 2015, 04:19:45 PM »
That's exactly what's happening, I'll get right to it.
Have a look at my truly scrumptious scripts!.

Python

  • Plains of Chi-u have no end.
  • *
  • They are boundless and last forever.
Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #15 on: December 09, 2015, 07:06:51 PM »
And here's another update. It contains small bug fixes and the long-awaited (maybe?) stage pack documentation, which is included in the new download. Should you have any questions about stage packs, don't hesitate to post them here!

Touhou Henkaden V1.2 Changelog:
- Fixed a bug where the mode wouldn't be correctly set for replays.
- Fixed a bug where replays recorded in stage pack mode would be very broken.
-  Added stage pack documentation.
Have a look at my truly scrumptious scripts!.

Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #16 on: December 20, 2015, 07:11:29 PM »
Hello!

If this helps, I encounter a bug when trying to play a replay. I spend quite some time to understand why it did not work. I finally find that the GetReplayResult function does not return an array (like expected) but a string : the value it returns was a serialized array (I did test the length of it).

The error I got :
Code: [Select]
Variables of different types are being compared
(型が違う値同士を比較しようとしました)
Z:/home/nassim/Documents/game/danmakufu/PancakeGame/Touhou Henkaden ~ Highly Responsive to Pancakes/script/Highly Responsive to Pancakes/Package.dnh
Package.dnh line(行)=920
 

        if(info[0] == "StagePackMode"){SetCommonData("StagePackPath", info[2]);}
       
        TStageScene(GetReplayInfo(result, REPLAY_FILE_PATH));
    }
}
 
task TStagePackSelectScene {
    SetSkipModeKey(KEY_INVALID);
 
    let idScript = LoadScript(GetCurrentScriptDir
~~~


Please use this bug fix, all information is provided

http://pastebin.com/PfdKCeEU

Well, now it works !

Moreover, can you add the changelog and maybe a readme file in the next release, it would be cool to get it packaged :)

Python

  • Plains of Chi-u have no end.
  • *
  • They are boundless and last forever.
Re: 東方変菓伝 ~ Highly Responsive to Pancakes
« Reply #17 on: December 23, 2015, 03:05:00 PM »
If I had anything to actually put into a ReadMe file, I would include one. Changelog is provided here and IMO not very interesting to read, as everything you get to know is how the game got less buggy. Most likely there won't be any new additions, except for stage packs, but I'm not going to make any for the time being. Thanks for providing a fix for this problem though. I didn't test if replays did work, and I certainly didn't know that replay comments are always converted into strings.

Touhou Henkaden V1.3 Changelog:
- Fixed a bug where information stored on a replay couldn't be retrieved (thanks to nono_kaki)
- Added a version indicator to the main menu
Have a look at my truly scrumptious scripts!.