Raised This Month: $32 Target: $400
 8% 

[TF2] Danmaku Fortress v1.0.0, near-Total Conversion game mode


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author
sarysa
Senior Member
Join Date: Mar 2014
Plugin ID:
4717
Plugin Version:
v1.0.0
Plugin Category:
Gameplay
Plugin Game:
Any
Plugin Dependencies:
    Servers with this Plugin:
     
    Plugin Description:
    3D Bullet Hell near-TC mod for TF2
    Old 07-08-2015 , 00:37   [TF2] Danmaku Fortress v1.0.0, near-Total Conversion game mode
    Reply With Quote #1

    Danmaku Fortress
    An almost-TC Bullet Hell mode for TF2 (and may be ported elsewhere)

    Not for the faint of heart...

    Video Demonstration


    Files
    df_sourcemod.zip - Attached at the bottom of this post. Configs, sources, includes, and compiled plugins. To install, drag and drop this sourcemod dir onto your server's sourcemod dir.
    danmaku_fortress_resources.zip - Materials, models, sounds for the core and the pack-in bosses. Also contains a map that DF will play on. These MUST exist on the server side. I would recommend installing these under custom/danmaku_fortress instead of download, as many of the models are likely to be updated with better animation if this game mode finds an audience. (and update means "new models added, old models removed", since client asset overwrite is impossible)
    danmaku_fortress_fastdl.zip - OPTIONAL FastDL files, put these on your FastDL server.

    Dependencies
    • morecolors.inc
    • tf2items - It's a long story...and frankly it makes my sanity hurt. Read the Known Issues for more information.

    Recommended Plugins
    • ThirdPerson (non-cheats version) - Giving the player the option to swap between first and third person is great. If this is missing, the df_tp and df_fp commands are available, but your players won't instinctively know to look for them.

    Interacts Badly With
    • Instant respawn (absolutely will screw up this plugin), however TF2's not-so-instant respawn should be fine, since it's actually a 4 or so second delay.
    • Any aggressive auto-balance plugin which also targets the living (will cause players to forfeit), TF2's autobalance is already disabled in code for this reason.
    • Class limit plugins could be a problem, since all combatants are forced pyro.
    • Any plugin that prevents OnMapStart() from executing. (i.e. a quarantine system -- not needed for this plugin, it auto-quarantines)
    • Freak Fortress 2 needs to be quarantined as it can interfere with the spawn/team assignment code and stop matches before they can start.

    What is Danmaku Fortress?
    Danmaku Fortress is a unique game mode based on Bullet Hell, with obvious heavy inspiration from Touhou. It's intended to be danmaku in a 3D arena, which really hasn't been attempted much.

    All battles are 1 on 1. One player is the "hero", which is the typical danmaku protaganist. (i.e. Reimu Hakurei) The hero has a tiny hitbox that is really just a point in 3D space. The hero typically has only two abilities, standard fire and a desperation ability. The hero can have more abilities and even cooldown on said abilities, but as of v1.0.0 none of the pack-in heroes use this feature. Standard fire is "shoot forward, stuff dies". Each projectile does damage to the boss. The desperation ability is like a bomb in danmaku games. What the bomb does varies widely, but it always makes the hero invincible for a short time. The hero has a limited number of lives, and they lose if they die at 0 lives. Depending on the hero's difficulty setting, the hero will automatically use bombs when hit, or always lose a life when hit.

    The other player is the "boss", antagonists like Flandre Scarlet and Koishi Komeiji. The boss has a larger hitbox than the hero, and has a life bar instead of a lives/bombs system. Some bosses even have phases, which determines what abilities can be used based on the boss' health. Boss abilities are far less direct than hero abilities, and are meant to turn the arena into an everchanging minefield that the hero must navigate. Bosses are also slower than heroes, necessary for balance reasons.

    The plugin supports 5 sub-arenas, in other words 5 games with 2 players going on at once, for a maximum of 10 players at a time not sitting bored. If you plan on making a dedicated server for this mod, 16 slots could easily be enough.

    Danmaku Fortress is built from the ground up, and one of the best features for server operators is that it only runs on maps which are specifically made for the mod. Maps without the prefixes df_, danmaku_, or touhou_ will cause the plugin to temporarily quarantine itself. It should not cause other plugins to malfunction -- let me know if this isn't the case! Another interesting feature is its use of reflection instead of natives and forwards, which remove load order concerns which prompt other modular mods to quarantine its subplugins. (i.e. FF2 with the .ff2 extension)

    It features a lot of customization options, more than I could explain in this blurb. There are tons of cvars for aesthetics and gameplay balancing. It includes a music player which I wrote specifically for game music, and this can be customized as well. It has a modular design which allows for hero, boss, and ability creation. I built it from the ground up but took inspiration from the good features of FF2, like similar config file designs and the modular concept, while focusing on the framework early on with a set code structure in mind. The code is neat, readable, and categorized, while the "one game frame" design philosophy along with its time synchronization ensures stability.

    Controls
    The controls are as follows. They're not so great, but given the limitations of the engine (i.e. pitch clamped to [-89.0..89.0]) it's the least awkward I could come up with. 6dof would be great, but it's just not possible -- and I figured the control scheme would fit best with the precision of danmaku games, versus Valve's fly/noclip controls.

    WASD - Move around, but it's limited to the x/y axis.
    Jump - Move up
    Secondary Fire - Move down
    Primary Fire - Use ability (if autofire is enabled for heroes, this key stops firing)
    Reload - Change ability
    Use - Change ability in reverse. Hidden feature since use isn't bound in TF2 by default.
    Special or Crouch - Precision mode, move at half speed. (note: Special defaults to middle mouse)
    Call for Medic - Use bomb (hero only, Hard difficulty or higher)

    Main Menu and Commands
    Main Menu
    Spoiler


    Player Commands
    Spoiler


    Admin Commands
    Spoiler


    Debug Commands
    Spoiler


    Cvars
    Spoiler


    Lesser Known Features
    • There is some basic support for restricting characters to donators. Since there's probably many different donator/payment management systems out there, I've included a donator interface include df_donator_interface. Simply include that and call DFP_ClientIsDonator(clientIdx) once your donator is validated, and they should have access to donator characters. This probably needs to be redone on map change.
    • Even version 1.0.0 of this plugin stores players' cumulative score. What will actually become of this remains to be seen.
    • I had some second thoughts to the use of just music.cfg, and also added support for adding songs in boss configs. debugboss.cfg has an example of how this is done.
    • Bosses or heroes deemed easier than others can have their points adjusted with the point_adjust argument. Flandre's config file has this commented out -- I originally had her get a point nerf, and then found it easier to play against her than Cirno when my opponent was human.

    Q&A
    Q: Is this plugin limited to Touhou?
    A: Nope. Even though the first characters included are Touhou characters, I plan on including Epic Scout as a hero and SHADoW may include Blitzkrieg as a boss. Characters from any domain are welcome.

    Q: Can I create my own characters?
    A: Yep. There are 18 default abilities to work with and coders can make even more. There a bunch of pre-programmed behaviors for rockets and spawners, with more planned in the future, which makes it pretty easy to code even complex patterns. You can also choose to manage the behavior of rockets and spawners, though this is more involved.

    Credits
    Core Credits
    • Code and concept by sarysa
    • Heavily influenced by SHADoW and his Blitzkrieg FF2 boss, plus I got the idea for this while we "dueled" flying around in noclip.
    • Also influenced to a small degree by Freak Fortress 2, most notably with the config file designs, Kv code, and some of my stocks.
    • Rocket spawning code derived from Asherkin's from his Dodgeball plugin, with contributions from voogru
    • Beam spawning code derived from JasonFrog's IonAttack for FF2. (at least I think it was JasonFrog's, specific parts of Phat Rages are unsigned)
    • Chdata for help with the Waiting For Players fix.
    • Obviously also heavily influenced by Touhou Project by ZUN

    Asset Credits
    • Reimu model by Nya
    • Cirno model also by Nya
    • Flandre model by Ciel
    • All models so far were ported to GMod by 1337gamer15 (I grabbed them from Kenji-kun's collection)
    • sarysa made Reimu's crappy gohei which looks more like a staff with a pennant at the end.
    • sarysa also added basic animated poses to Cirno and Reimu, and fixed some of the seam and bad texture param issues. (those not directly caused by UV mapping)
    • Music by ZUN and various remixers of his work.
    • The pack in map's skybox texture is by VelvetFistIronGlove, it's called "Skylab". Seriously, without this awesome texture, people would see my map for how awful it really is.

    Special Thanks
    • BBG Theory for allowing me use of his development server for playtesting.
    • SHADoW NiNE TR3S provided a ton of feedback and even a little assistance throughout development.
    • BBG community members (and others) for testing. Those who I can remember include: SHADoW, Deathreus, GimpYTron, Cheese, and Cirno.

    Known Issues
    • People have reported frame drops with the beams. I don't get them, and it seems to be with people running highest or near highest settings. This one will definitely take community feedback to overcome.
    • Players need to have outlines enabled to be able to enjoy this mod. (or at least, to enjoy it while playing boss) Out of necessity, the hero becomes a dot with an outline of their model's body when they go into third person. Otherwise, the hero would be unable to see.
    • The plugin is hardcoded in English. I get that this a problem. I went out of my way to make the interface as descriptive as possible, but it's also going to make adding localization support an utter nightmare. Plus this is the type of plugin where minimum CPU usage is the top priority, and until I better understand the impact grabbing strings from a localization file will have on load, this issue is going to be put off for a long time.
    • Players get stuck under the map during the pre-round. Due to maps needing to have a transparent "yes projectiles no players" boundary all around, it's unlikely this will ever be fully fixable. (Dart Mann tried, but that fix only works on the first player to show up)
    • People with a sharp eye might notice the hero's projectiles have a larger hitbox than they should. This is by design, to make it easier for the hero to see. It's managed with a cvar.
    • DO NOT ADD TF2 MUSIC to the music player unless you rip it and give it a new path. Some TF2 songs and sfx are hardcoded to automatically loop on their own, which will cause songs to quickly stack.
    • tf2items is a requirement because I get the error below if it's not included. I have no idea why I get this error. When it happens, the line number it fails on is wrong and the plugin completely ceases to function. (no more events received either) Removing this method entirely appears to fix the problem, but hitboxes aren't read in. If anyone knows what the hell this is and why having tf2items fixes the problem, please let me know:
    Spoiler


    The following two replies will contain hero/boss descriptions and instructions for subplugin coding, creating heroes/bosses, etc.
    Attached Files
    File Type: zip df_sourcemod.zip (258.5 KB, 592 views)
    __________________

    Last edited by sarysa; 07-14-2015 at 18:48.
    sarysa is offline
     



    Posting Rules
    You may not post new threads
    You may not post replies
    You may not post attachments
    You may not edit your posts

    BB code is On
    Smilies are On
    [IMG] code is On
    HTML code is Off

    Forum Jump


    All times are GMT -4. The time now is 12:31.


    Powered by vBulletin®
    Copyright ©2000 - 2024, vBulletin Solutions, Inc.
    Theme made by Freecode