Luomu's Recent Forum Activity

  • Early last year for a game called

    Subscribe to Construct videos now

    I made a plugin for generating random levels (called "Dungeons" for RPG traditions). Not to take credit for other people's work, it was based on Jamis Buck's somewhat famous D&D dungeon generator. I didn't release the plugin as it was messy and also had many other functions for our game.

    Let's fix that mistake, fresh start!

    Download Plugin, .cap, and demo exe all in one happy package.

    Source code

    It can do this:

    <img src="http://paahdin.com/projects/dungeongen/img/sshot.PNG">

    And many variations of course, preferably with a better tileset. Unlike the last version, this one can create the tile objects on the layout automatically (after you tell it what object is what). I haven't added the traditional "for each tile... get tile at pos" actions/expressions yet.

    The action workflow is.

    • Set object mapping (currently only 0 = empty space, 1 = wall)
    • Set parameters
    • Generate
    • Build to layer

    Parameters:

    Tile size: Width/height of one tile in pixels

    Seed: Number to base the randomization on. Same number = always same result.

    Randomness: 0 - very straight corridors, 100 - lots of twists

    Sparseness: 0 - very tight density, 100 - very sparse density

    Dead end removal: percentage of dead ends the generator does its best to remove.

    Room count: max/min.

    Room dimensions: max/min height/width in tiles.

    Size: dungeon width/height in tiles.

    Expressions available for all of the above. For mazes (and other purposes too) you can also set a starting point and a ending point.

    Jamis' generator is public domain, my license is also "do what you want".

    Not complete! This was just today's work. Updates to follow.

  • Between the release and the demo game I forgot - maybe it would be good to have a very simple example to quickly show how this plugin is used.

    Here.

  • Bullet Heaven! (I'm tired of "bullet hell" )

    I haven't looked through the .cap yet so what was the most time-consuming part of making your demo? Was it getting the bullet patterns *just right* or was it the general stuff related to making most games?

    For the patterns I had a separate simple .cap that made developing them easier. I think testing the level flow was the most time consuming. Add a couple of enemy waves, test, tweak, test. Much respect for actual arcade shoot'em up devs who have to balance everything. Something like fire power-ups went through numerous changes - at first they just increased damage 2x and 3x but combined with a three-way fire it made bosses go down in seconds.

    I think after this point it would be fairly easy to add more length. I would also like more variety in boss movements, or some nice background effects.

  • Downloading Now..

    I got this when i tried to open the zip file.

    ownload it again? The file should be 260 kilobytes. Added a mirror in any case, I know my webhost is not the best.

  • At last released the first official version of the plugin in here and the demo game here. It was a bumpy journey.

  • To demonstrate the use of the new BulletML plugin we have created this one-level shoot'em up in which you fight three bosses and numerous smaller enemies. Collecting powerups can give you more firepower or firing patterns that range from useful to slightly weird.

    BulletML, in short, is a XML-based way of controlling bullet patterns in shooting games. Read the full introduction and get the plugin in this thread

    Since it's a tech-ish demo, BML was used for more than just enemy firing patterns: enemy movements and player fire modes also use the same system.

    Download the demo (contains exe and .cap) (11 MB)

    <img src="http://paahdin.com/projects/bulletml/images/relprom01.jpg">

    I must say that making even this bite-sized snack game took unbelievably long

    Feel free to re-use any parts of this demo.

  • <img src="http://paahdin.com/projects/bulletml/images/logo.png">

    Download plugin (260 KB):

    http://paahdin.com/projects/bulletml/BulletML-1.02.zip

    Mirror: http://github.com/downloads/Luomu/BulletML/BulletML-1.02.zip

    Source code:

    http://github.com/Luomu/BulletML

    Very simple example .cap:

    Download

    Demo game:

    Download | Separate thread

    * What is BulletML?

    Bullet Markup Language is an XML-based system for describing bullet barrages in shoot 'em up games. It is designed by the prolific shooting game author Kenta Cho.

    The BulletML page can be found at http://www.asahi-net.or.jp/~cs8k-cyu/bu ... dex_e.html.

    Here's an example:

    <?xml version="1.0" ?>
    <!DOCTYPE bulletml SYSTEM "http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/bulletml.dtd">
    <bulletml xmlns="http://www.asahi-net.or.jp/~cs8k-cyu/bulletml">
        <action label="top">
            <fire>
                <bullet>
                    <direction type="absolute">90</direction>
                </bullet>
            </fire>
        </action>
    </bulletml>
    [/code:1z4lqy6h]
    
    This script fires one bullet at angle 90, default speed. Not terribly useful yet. Here's a more complex example:
    
    [code:1z4lqy6h]
    <?xml version="1.0" ?>
    <!DOCTYPE bulletml SYSTEM "http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/bulletml.dtd">
    <bulletml xmlns="http://www.asahi-net.or.jp/~cs8k-cyu/bulletml">
        <action label="top">
            <fire>
                <direction type="aim">0</direction>
                <speed>150</speed>
                <bulletRef label="seed" />
            </fire>
        </action>
    
        <bullet label="seed">
            <action>
                <repeat>
                    <times>100</times>
                    <action>
                        <fire>
                            <direction type="absolute">$rand * 360</direction>
                            <speed>200 + $rank * 200</speed>
                            <bullet />
                        </fire>
                    </action>
                    <wait>50</wait>
                </repeat>
            </action>
        </bullet>
    </bulletml>
    [/code:1z4lqy6h]
    
    This script fires a slow-moving bullet that in turn spawns 100 other bullets at 50ms intervals, in random directions. The speed of these bullets depends on the difficulty level (rank).
    
    Check the demo game for a variety of patterns.
    
    [b]* About this plugin[/b]
    
    This plugins adds a BulletML object that can read and play BulletML files. It is a bit like the existing particle system object; you can have multiple emitters and each object manages its own bullets.
    
    While any bullet pattern could be created with events, describing them with external files is more reusable and they can be modified without changing the .cap, including after the game is published.
    
    [b]* Appearance[/b]
    
    You can either let the emitter render the bullets (just like a particle system) by setting a texture or you can replace the bullets with Sprite objects.
    
    [b]* Collisions[/b]
    
    If you are not using Sprites as bullets this object has its own collision condition. All collisions are bullet point against object bounding box. Arcade shoot 'em up games usually use hidden hitboxes that are smaller than the player craft.
    
    Bullets are destroyed when they collide with an object.
    
    [b]* Lifetime[/b]
    
    Bullets are destroyed when they collide, exit the screen (toggleable), their associated Sprite is destroyed or a set number of milliseconds is exceeded.
    
    If you Destroy the emitter, all its associated bullets vanish. This is a technical limitation, but not too tricky to work around.
    
    [b]* Units[/b]
    
    Speeds are pixels per second, time units are milliseconds. The BML spec treats time values as frames for some reason but this wouldn't be very useful when frame rate can be anything from tens to hundreds.
    
    Separate multiplier values are provided for speeds and time values.
    
    [b]* Directions, targeting[/b]
    
    (absolute directions) When script type is "vertical" 0 is right and 90 down. With "horizontal" 0 is up and 90 right.
    
    If you want the bullets to fly in the direction the emitter is pointing, use "relative" direction and angle 0.
    
    When no direction is specified, BulletML spec assumes "aim" is assumed; bullet flies to the x,y coordinate set by "Set target position" action.
    
    [b]* Learning BulletML[/b]
    
    Reading just the reference is not very good for learning the capabilities of this system. Check out the demo game, this [url=http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/bulletml_applet_e.html]Java-based demo applet[/url] or download some of Kenta Cho's games - many of them contain BulletML files you can take apart.
  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Lua? Neat

    except David is not really working on it

  • Using scripts in edit time (Python I assume) would be neat.

  • Is v1.03 the final version then?

    ry 1.03 first and if you have connection troubles only then 1.02. They are identical in features but the latest Wiiyourself library has problems with some BT adapters (or computers, or phases of the moon, it's unclear).

  • Poor Stanford Bunny

  • So, uh, are you going to release that one? I really couldn't use this unless it supports per-pixel collisions.

    Oh yeah, have a look: BulletML-1.01.zip. Still not an official release though.

    For this week I'm on a machine with no dev tools so I can't quickly fix any bugs. Been working on the demo game instead.

Luomu's avatar

Luomu

Member since 7 Jan, 2009

Twitter
Luomu has 1 followers

Trophy Case

  • 15-Year Club

Progress

15/44
How to earn trophies