General Showcase Thread

I wrote up a class that stores pixel data of previous frames and can export a frame as an image or a set of frames as a GIF. It uses ImageSharp for the exporting. You can use it to make a GIF exporter built into your game, which is pretty neat. Here’s a gist with the code and a small sample project: https://gist.github.com/Jjagg/b1dce39b23192f46205a75d3a6482073

And the amazing result:

12 Likes

This would make a nice addition to a official monogame extras or utility namespace.

Replication of the text system from the first two Paper Mario games, utilizing “control codes,” which are HTML-like elements in a piece of text that have a variety of effects on the text’s behavior.

Video

All the effects are achieved in one big string ran through a parser. The scrolling and input prompts are also control codes themselves. More details and source here.

5 Likes

Looks awesome! I was just recently thinking about how to implement something similar into the project I’m working on. :slight_smile:

1 Like

i’m in…

tiled forward



4 Likes

That’s crazy looking.

Realtime voronoi fracturing

Made this some time ago but never shared.

Ignore the fact that the objects dissapear for 1 frame when fractured, easily fixed.

6 Likes

What did you use to make that ?

The physics engine I believe is bullet physics, other than that I used a library to compute the Delaunay triangulations and from there my own code to slice the triangles on the cpu.

Graphics engine is my own and texture is from minecraft.

3 Likes

wow nice. Do you cull / assign the lights on the CPU?

yes, since we don’t have CS yet

Just got the shiny ImGui-Viewport stuff working with MonoGame (green balls are just some Verlet balls). Only change to MonoGame was adding access to the DX11 DeviceContext.

Still finishing the bindings, but I’ll post it up onto github once it gets somewhere a bit less disgusting (basically mashed the Win32 DX11 demo into a C++/CLI wrapper and massaged it a bit to take foreign objects (device/device-context/rendertargetview/etc).

Edit:

Tossed the C++/CLI project onto github. Had to make a handful of additional changes to MonoGame.Framework.Windows (for DX11) to get at things I needed (SRV for textures to draw images, Win32 message routing (Application.DoEvents() doesn’t cut it, needed complete Translate/Dispatch processing), and a few other handles needed.

6 Likes

Tossed up some Windows DX11 x86 binaries for the above ImGui viewport stuff: https://github.com/JSandusky/ImGuiCLI/releases - really just a pseudo-demo for anyone wanting to fiddle with it a smidge just to see how all that stuff behaves without messing with making the MonoGame-side tweaks or dealing with C++/CLI projects.

Don’t attempt to roll with these binaries rather than compiling though, the monogame dll used here has some Effect changes for geometry and tessellation shaders on DX11 that could choke on loading Effects from older 2MGFX versions if I screwed something up - and other things that could go terribly wrong (still haven’t tested it outside of this verlet balls stuff).

Yanked out my spline surface class and started working on it again.
I re-wrote the whole thing. Im trying to get it into a fairly sane state before i put it up on github.

I made some crazy hard indexing proportion ratio changes. So i can do basic edge joining.
(the red lines that extend down are adjoinment vertice nodes)
Also to test the natural adjoinment curvature which is basically G2 continuous as far as i can tell.

http://i936.photobucket.com/albums/ad207/xlightwavex/programing%20and%20concepts/MySurfaceContinuity01_zps7wuz5qyt.gif

I made it so it can take a straight up Heightmap in floats.
I added a change so it takes a array of vector4’s instead of 3’s.
Were the w element determines how much curvature occurs at a control point, 0 is none 1 is Continuous on the control point.

The hardest part is everything but creating the surface itself.

3 Likes

Working on an online co-op dungeon crawler (Descent/Heroquest), named it “Towards Gold and Glory”

10 Likes

@willmotil, what are the fins/skirts on it for?

I think I get it on the terrain case, but I don’t get it on the tube.

The red lines are control point connections. The outer edge of those controls are generated not really used but index wise they are around the user’s inputed grid (unless a actual join happened).
For testing purposes i move them a little to be visible. The ones on the edge are almost like temporary points.
(They let me visually make sure they were not being altered later on with a bad index assignment.)
.
To be honest though im not really 100% sure myself why they lined up like that,
.
I think what your seeing is sort of a symetrical math artifact. When its rolled its radius is divided by Pi so that the circumference of the cylinder matches the length of the same sized flat grid.
So i think what your seeing is that many of the points are folded back over themselves exactly as the grid is rolled up (but only in one of the three dimensions i think). They are connected to edges of the respective adjoining vertices visually.

Since the y and z hasn’t changed just the x they are right were they would be if unrolled to a flatter surface still well some of them.

Just to give a idea a normal cylinder would be simple but after i set it up there are about 4 other functions that still come into play before the surface gets generated.

void ExampleCylinder()
{
    bool centered = false;
    float centering = .0f;
    if (centered)
        centering = 0.5f;
    controlWidth = inputWidth + 2;
    controlHeight = inputHeight + 2;
    Vector4[] temp = new Vector4[inputWidth * inputHeight];
    //
    double pi2 = Math.PI * 2d;
    float circumferenceLengthMult = 1f / (float)(Math.PI);
    float multy = 1f / (float)(inputHeight - 1);
    for (int ty = 0; ty < inputHeight; ty++)
    {
        float y = multy * (float)(ty);
        for (int tx = 0; tx < inputWidth; tx++)
        {
            double multx = 1d / (float)(inputWidth - 1);
            double t = multx * (double)(tx) * pi2;
            float u = ((float)(Math.Sin(t)) * .5f +.5f) * circumferenceLengthMult - centering;
            float v = ((float)(Math.Cos(t)) * .5f +.5f) * circumferenceLengthMult - centering;
            Vector4 p = new Vector4(u, y + centering, v, 1f);
            temp[(ty * inputWidth + tx)] = p;
        }
    }
    CreateOpenControlNetPointArray(temp, inputWidth, inputHeight);
    // this is were the edge points are displaced
    CopyEndsZoffsetTesting();
    ConstructLoopRectangle();
    // we take the extra step here.
    ConnectSameLeftToRight();
    ReBuildSplineSurface();
}

Edit:
Since im trying to get google photos to link images correctly.
I might as well try to post a picture.

.
Success
What a pain in the ass you have to get a sharable link then goto that.
Then copy that image link location.

1 Like

Delgine DeleD DMF file loader : Baked Lightmaps work in progress :slight_smile:

3 Likes

Im still working on my spline class but i posted up my mesh from vector array class.

It basically takes a array of vectors that represents a 2d grid of vectors and turns them into a VertexPositionNormalTexture array. It auto calculates the u,v index’s and creates smoothed normals.

The smooth normal method is pretty nice as it can pretty much work on any mesh even if its not in a grid.

After i generate terrain or a object i pretty much use that method to makes sure the normals on any curved geometry will work nicely with lighting, even if need to pull it out seperately.

Well, a little something I made over the weekend. Funnily enough, it’s perhaps the first game that I can actually release that I made… ever. XD

I’m just not sure whether it’s worth paying Google to be able to put it on their store.

4 Likes