Luomu's Recent Forum Activity

  • Notable things I've added lately:

    * Ability to use construct objects as bullets, allows for example per-bullet effects like trails and using the existing collision detection

    * Easy "play file name.xml x times with delay y milliseconds" action

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

    Little green mutants with trails

  • (back from the greek sun)

    I will post this somewhere more visible when it's less rough around the edges. Things I still need to do:

    • Fix bugs!
    • Create a cool demo game (just one level)
    • Look again into using Construct objects as bullets, earlier I deemed it too tricky
  • It doesn't use Construct Sprites but handles its own rendering (technically: textured quads in the case of rotated bullets, point sprites when there's no rotation).

    Haven't ran very scientific benchmarks, but it's pretty fast. Here's a test I did just now:

    Over 20000 bullets on screen (a bit of a challenge for the player ), colliding with one object (player ship), still pushing over 60 FPS. (2.8ghz dual core, GF 9800 GT).

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

    stare at this long enough and your screen will begin to wave

    I can probably optimize it further, but there's still features to be added first. Anyway, performance is not the main catch here (Construct could easily push a few thousand Sprites -- more than enough for games) but the ability to script the patterns.

  • First release! Give input!

    Download plugin 1.01 (preview) .zip updated link 19.07.

    Download example (exe & .cap), you can modify the xml files to

    change the patterns.

    Source code

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

    Shot from example app - aircraft sprites by Mark Simpson

    * 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 with the manual 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:313wpgtq]
    This script fires one bullet at angle 90, default speed. Not terribly 
    useful yet. Here's a more complex example:
    
    [code:313wpgtq]<?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:313wpgtq]
    This script fires a slow-moving bullet, aimed at the player, that in turn spawns 100 other 
    bullets at 50ms intervals, in random directions. The speed of these 
    bullets depends on the difficulty level (rank).
    
    [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 renders its own bullets. On the other hand, individual bullets are not individual Construct objects.
    
    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.
    
    [b]* Appearance[/b]
    
    You can change the bullet texture and size. Standard colour filter, 
    opacity and effects are also available. Bullets can be oriented to the direction they are travelling.
    
    [b]* Collisions[/b]
    
    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) 
    or a number of milliseconds is exceeded (configurable).
    
    [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, "aim" is assumed; bullet flies to the 
    x,y coordinate set by "Set target position" action.
    
    [b]* Error reporting[/b]
    
    This object has a "On error occurred" condition and "Last error 
    string" expression. Useful for spotting XML errors.
    
    [b]* Limitations, known issues[/b]
    [ul]
    	[li]BulletML does not define a bullet's appearance. Maybe it could be[/li]
    [/ul]added (but it would break compatibility).
    [ul]
    	[li]If you destroy a BulletML object all its bullets are destroyed as[/li]
    [/ul]well. You might want to wait until the bullet count is zero. I can 
    probably add a smarter Destroy action.
    [ul]
    	[li]changing the filter color affects the currently existing bullets as[/li]
    [/ul]well. While consistent with Construct, it might be more useful to have 
    a separate color property and Set Color action.
    [ul]
    	[li]bug: if a script contains "vanish" action, Finished condition does[/li]
    [/ul]not always trigger.
  • Seems like VEditTime does not even have a CreateObject functionality so this is not possible as it is. I wanted to do a sort of a "prefab" functionality.

    For runtime I've had xml export/import working for a while. It doesn't support every situation but saving the basic properties (name, position, size, angle, filter...) goes a long way.

  • Is there a some way to access the currently selected objects from a plugin? I was thinking if it was possible to make a "Export selected objects to XML" style feature.

    I guess it's doable by hacking LayoutEditor, but it would be easier to demonstrate a proof of concept as a plugin.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • I agree about some points and disagree about some... but I hope you reported all those zillion bugs to the tracker or else they will be never fixed

    It would be nice to read more project "post mortems" here.

  • [quote:2c8bs6rx]with V1.02b i can now connect very well and i get all data (IR, roll,etc) but if i use your last pluging V1.03 i get now somes problem:

    i can connect very well but ,only buttons,battery and status work well but no rool and no acceleration data ???

    get the exact opposite result. I hope I can help the Wiiyourself guy to fix it.

    Just use 1.02b now if it works for you. There are no feature differences between 1.02-1.03.

  • I noticed a bug in Wiiyourself RC3 and final versions; when connected only buttons work. To workaround this, connect needs to be called twice or the application built in debug mode. I didn't feel that was a good solution so I downgraded back to RC2. It works better for me.

    Also I maybe managed to salvage wiimote.cap, at least it does not crash any more.

    Wiimote-1.03.zip

  • I built the plugin with the last Wiiyourself release and tested it works with Construct 99.85:

    Wiimote-1.02b.zip

    I noticed the test .cap has broken at some point -- it connects and reads values ok but I can't click on the object or construct crashes. I can't easily replace the object with a new one (joys of Construct development) so the test app is unreliable for now.

    I also made this simple connection test app: SimpleTest.zip Connect your remote to the BT adapter, run this and press C to connect. It includes .cap and .exe.

    If that fails, you said the official Wiiyourself demo.exe works. I built the same demo, so if this one does not work it's very puzzling: Non-construct Demo.zip

  • I'll build a new version of the plugin with Wiiyourself 1.15 Final today and check that it works with latest Construct (I'm running 99.84, need to check .85 too).

    If it works with Wiiyourself demo.exe then it should work here too so I don't know what could be wrong... what is your operating system? I have been only testing with Windows 7.

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

    I'm doing a plugin for BulletML, a scriptable system for those crazy (and sane) bullet patterns you see in arcade shoot-em ups.

    Above sprites by Irem obviously

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