Posts Tagged haxe

b3ge resurrection

Trying to dust some of b3ge off… it is were I left it… half finished and broken, but maybe it can be useful.

svn checkout http://b3ge.googlecode.com/svn/trunk/ b3ge-read-only
cd b3ge-read-only
haxelib install physaxe 
haxelib install hxJson2
haxe -main us.versus.them.b3ge.phyxside.Flipper -swf flip.swf -swf-header 640:480:32:DDDDFF -swf-version 9 -swf-lib resources.swf -lib physaxe

The boards are svg, like welcome.svg and
level.0001.svg.

I wanted to redo the way the boards work and write a custom rendered to make sprites instead of shapes, but…

In case you are feeling too lazy to co and compile: flip.swf

Click on it to get started and move with the arrow keys

Leave a Comment

RayRay: raytracing in haxe

SEE IT IN ACTION!

RayRay is a tiny ray tracer in Haxe. It uses brianin3d-intersect to handle the ray-to-sphere intersection test. It randomly traces 8 circles and 2 lights with reflections, shadows and subpixel sampling.

It is pretty slow, but performance could probly be substantially improved by optimizing primary rays and not allocating so many objects for each ray.

Once the scene is rendered, you can click it to have it render a new one.

Leave a Comment

one application, two applications platforms

I wanted to try out a side-by-side of Haxe generating Javascript+Canvas versus Flash when I came across OctalJam’s post.

This method is really clean:

I modified my demo to add:

#if js
    neash.Lib.Init( "Container", 214, 50 );
    neash.Lib.Run();
#end

and a similar wrapper around “flash.Lib.current.loaderInfo.parameters.scale”

The side-by-side shows they look identical:

Haxe let’s you write the same application and deploy it via flash or HTML 5. How cool is that?

Leave a Comment

kit-kat-toe: mochiads with haxe

I recently tried out Viktor Hesselbom Haxe Instructions for MochiAds and they work just fine.

Something like this…


% wget https://www.mochimedia.com/dl/MochiAPI_v3_8.zip
% unzip MochiAPI_v3_8.zip
% cd MochiAPI_v3_8
% mkdir -p foo/mochi
% cp -r mochi/as3 foo/mochi
% cd foo
% compc -source-path . -output mochi.swc -include-sources .
% unzip mochi.swc library.swf
% haxe –gen-hx-classes library.swf

Then just get the game id from the nice folks over at mochi and jam in the little bit of ad code.

One problem I had was that I found I needed to add a new MovieClip to the flash.Lib.current, use that for the ad and remove it in the ad_finished callback.

I had some mixed luck with swfmill… The old version I had (0.2.12) didn’t complain about the mp3 I having the wrong bitrate… But when I linked against the -swf-lib from the new version it produced a blank swf!

So… I have no sound…

LOL… it is a very silly proof of concept… check it out

I call it kit-tac-toe

gory swfmill detail

To compile swfmill under Hardy Heron (I know… it’s old)… I had to modify swfmill.c and add: extern char *xslt_simple;

And it still didn’t work… I may try to use a newer box to see if my horked environment is why it didn’t work right….

Here is the handy message I got from it…

Sampling rate: 32000
Error: Flash only supports sampling rates of 44100, 22050 and 11025 Hz
WARNING: MP3 file sounds/cats/meow.mp3 has a wrong sampling rate

Leave a Comment

Triangle Islands : opengl + haxe

Introduction

I was looking around for a neat demo app to show off Haxe Archetype ‘s new opengl template when I came across this really nice description of the olde triangle mountain algorithm .

The basic idea is to subdivide triangles and randomly move vertices up or down like this really nice diagram shows:

Splitting up Triangles and Making them Mountains

OK…
so maybe that looks a little confusing… but the text makes it really clear: split each triangle into 4 subtriangles. Sometimes, likeGroo , I’m a little slow of mind, so I drew a little picture to help me out:
From this, my brain part could pretty directly come up with:
 t[ 0 ] =  pt1, mid1, mid3
 t[ 1 ] = mid1,  pt2, mid2
 t[ 2 ] = mid3, mid2,  pt3
 t[ 3 ] = mid1, mid2, mid3

It looks likethis inhaxe .

Avoid the Gaps

So far so good! Split up the triangles! Raise/Lower those vertices! But…

BEWARE!

If you just start jacking around willy-nilly (or even willy+nilly [untested with willy±nilly]), you might not notice that when it’s time to split ”t[1]” and and ”t[3]” they are ”’both”’ gunna split the segment that connects ”mid1” and ”mid2”.

Lawd help you if you raise that pt in one and lower it in the other… or even raise it by different amounts: you will gap yourself up good and you
won’t like it.

It will look something like this:
and noone will think you are cool… Not even mom and dad.

My solution is pretty uncool actually:MidPointBuddy has a getMidPoint which returns the midpoint for any segment and keeps track of them in a hash table.

Simple, but effective… but lame.

Some minor openGL points

If you know me or if you have read any of this you probably know that I completely and shamelessly rip off everyone all the time and never do my own work.

Occassionaly I might throw together some crappy third rate ascii art:
/*  p1              p2
      .------------.
       \` .         \
        \   ` .      \
         \     ` .    \
          \        ` . \
        p4 .------------. p3  */
var p1 = new Pt3( -f, 0, -f );
var p2 = new Pt3(  f, 0, -f );
var p3 = new Pt3(  f, 0,  f );
var p4 = new Pt3( -f, 0,  f );

but mostly I just rip everything off from the internet and never make any sort of contributions to anything.
This is the case with the app that drives this mess. “Borrowed” it from thexinf gang .
Though I may have made some teensy changes.

Here is another example… I used to have some code like this a billion years ago, but I have no idea where it is now… probably on some thumb drive…

Luckily, there is no point in knowing of remembering anything anymore and with the help of Steve Baker (who I’ve never met, but I hear is very nice), I cobbed something likethis together:
GL.shadeModel( GL.FRONT_AND_BACK );
GL.enable( GL.LIGHTING );
GL.enable( GL.COLOR_MATERIAL );
GL.colorMaterial( GL.FRONT_AND_BACK, GL.AMBIENT_AND_DIFFUSE );
GL.enable( GL.LIGHT0 );
Put that together with alittle :
e1 = p1 - p2;
e2 = p3 - p2;
normal.cross( e1, e2 ).normalize();
...
cross(e1,e2) {
    this.x = ( e1.y * e2.z - e1.z * e2.y );
    this.y = ( e1.z * e2.x - e1.x * e2.z );
    this.z = ( e1.x * e2.y - e1.y * e2.x );
    return this;
}

sprinkle in a little:

to taste and off it goes.

Go get it and run it! I’m not charging you for it!

I know you have already download and installed haxe and must have subversion installed…
 % svn checkout http://brianin3d-triangle-mountain.googlecode.com/svn/trunk/ brianin3d-triangle-mountain-read-only
 % cd brianin3d-triangle-mountain-read-only
 % haxe compile.hxml
 % ./app
I apologize for the controls: x,y,z,q,r

Check it out and see how easy it is to have a lot of fun withopengl andhaxe .

Got a better idea for a project? Fire it up with Haxe Archetype ‘s new flash tip:

Holler!

Links

  • the code
  • dhood’s blog
  • Haxe Archetype
  • opengl for Haxe
  • Basic OpenGL Lighting
  • Saddy Faces?

    Sometimes things don’t work out like you’d like… I know… it’s a bummer…

    XF86VidModeQueryExtension

    Back when I first wrote this, this happened on my workstation, but not on my desktop:
    Called from opengl/GLU.hx line 271
    Called from GLFW__impl.hx line 16
    Uncaught exception - load.c(232) : Failed to load library : /usr/lib/haxe/lib/opengl/0,2,0/ndll/Linux/opengl.ndll (/usr/lib/haxe/lib/opengl/0,2,0/ndll/Linux/opengl.ndll: undefined symbol: XF86VidModeQueryExtension)
    
    

    they were both running Ubuntu 8.10, both with NVidia drivers… The problem ”’only”’ occurred on the workstation after some number of updates (and in 9.x) the problem magically disappeared…

    osx fix

    When I first ran this thing I got some junk like:

    DLLLoader.hx:50: added to Env: DYLD_LIBRARY_PATH Value /usr/lib/haxe/lib/opengl/0,2,0/ndll/Mac
    Called from opengl/GLU.hx line 271
    Called from GLFW__impl.hx line 16
    Uncaught exception - load.c(232) : Failed to load library : ./opengl.ndll (dlopen(./opengl.ndll, 1): Library not loaded: libglfw.dylib
      Referenced from: /Users/brian/tmp/misc/brianin3d-triangle-mountain-read-only/opengl.ndll
      Reason: image not found)
    

    I fixed it like this: DYLD_LIBRARY_PATH=/usr/lib/haxe/lib/opengl/0,2,0/ndll/Mac:/Developer/SDKs/MacOSX10.5.sdk/usr/lib ./app

    ~

    Leave a Comment

    haxe ragdoll physics

    I had always thought about physics simulation in a particular fixed way. Even though I knew games physics were not physic simulations. Happily, the other day I was looking for information on Skeletal Animations, I got a pointer to Advanced Character Physics which talked about a best-effort relaxation algorithm that got me really excited!

    I know… but it did. Yes, I’m that guy.

    The article is super clear and finally I got it.

    But why bore you with the details of my implementation, when I can bore you with my demo instead!

    rag it out

    rag it out

    Did you miss the link?

    CLICK HERE FOR THE DEMO!

    you want it? you got it!

    % svn checkout http://brianin3d-stickler.googlecode.com/svn/trunk/ brianin3d-stickler-read-only
    % cd brianin3d-stickler-read-only/
    % haxe compile.hxml

    Pull up stickler.swf in your browser and rag it out!

    Leave a Comment

    haXe 2.01 Released

    Dang! How did I miss this? Two weeks ago… haXe 2.01 Released!

    % wget http://haxe.org/file/hxinst-linux.tgz
    % tar xfz hxinst-linux.tgz
    % sudo ./hxinst-linux
    % haxe -h 2>&1 | grep ^Haxe
    Haxe Compiler 2.01 - (c)2005-2008 Motion-Twin
    

    The only issue with the installer is it doesn’t have a “hell yeah” option…. imho… 😀

    Leave a Comment

    Older Posts »