Yet another "do it all within one system"-system using procedural content gen.

… but this one is actually going to be awesome!

Edit: A dated online demo with some presets to play around with:

http://www.springworldgames.com/applets/nodesystem_demo.html

The “manual”:

  • Use right mouse key to open the menu. You can select the presets or add nodes.
  • Use + and - to zoom in and out
  • Click on the nodes to show their attributes

Here are also some lame Youtube video that show a few of its powers:

http://www.youtube.com/watch?v=2AlIfPWM-HQ : Overview of a lot of different features
http://www.youtube.com/watch?v=xZdfpO6uVT4 : Strokes and Light/Bumpmap nodes
http://www.youtube.com/watch?v=RTDs5wNaOrs : Generate “Sprites”
http://www.youtube.com/watch?v=Ac4sV4TlLsY : Procedural Levels and Vehicles WIP and some more
http://www.youtube.com/watch?v=RZpLliBkCdU : Procedural Trees and Particle Systems
http://www.youtube.com/watch?v=fP-1WEkMw94 : Music
http://www.youtube.com/watch?v=B_2sDYVILL8 : Music II (More Variation)
http://www.youtube.com/watch?v=LV21DViKilI : Graphics

It is developed in Java using LWJGL.

When the system is ready (in about hundred years), I plan to include parts of the editor within my future games so that one can modify every sprite/texture, sound, music etc. inside the game. It might also end up as a standalone tool, who knows…

And yes, I have taken a lot of inspiration from Genetica when it comes to the procedural texture stuff :slight_smile:

Very cool. I hope you do get it finished. You may want to release what you have, I’m sure some people will find what you have now handy.

Looks good - are the material trees generated too or are they made by hand? It would be great to have a game where the actual surface details were never the same between different levels/plays.

Thanks for the comments!
The materials/heightmap are manually made but are easy to modify dynamically by varying the seeds, offsets etc. but you one could also build more sophisticated materials that have smarter parameters and let the game vary those.

The plan for the future is to add more procedural model nodes such as trees/plants, hills/mountains and make them all look good using shadow maps, environment maps, and even raytracing. Then I would also add animation for the generated 3D models so you can make nice-looking animated sprites. Then I would like to add a node that is similar to the Canvas node in Genetica where you can design with bezier curves/areas. Then sound effects, then music, then fonts, then particle systems, and then finally a game that uses all this! Like I said, a hundred years :slight_smile:

Procedurally generated fonts? :wink:

Yes!
But I only plan to generate that texture grid that is one of the standard approaches for adding text in OpenGL (which I currently use).
The idea is that you start with an existing font and extract the glyphs from it. Then you simply render your first grid in some way and then you add the image transformation nodes that you want. You might have to apply different transformations to subsets of the grid but that is just details…
I also plan to add nodes that can place pictures into the grid that you want to have closely mixed with text, which is just a simple way to add images when you draw text but it is sure useful for adding key icons, powerup icons etc.

But… You will be able to design your own fonts within the system when I add proper support for editing curves, but that does not feel very procedural :slight_smile:

Hello,

I added some music nodes that are perhaps not that impressive in their current form, but I think there is a lot of potential in this type of non-linear and generative music:


I am currently exploring the JvstHost software that I plan to use to render that Midi to something that sound good :slight_smile:

YES!!! Definitely. I wish there was more generative music in games. Pretty impressive work you’ve done there.

[quote]I am currently exploring the JvstHost software that I plan to use to render that Midi to something that sound good :slight_smile:
[/quote]
You might also consider using SuperCollider… but anything will be better than the GM sounds :wink:

Thanks!

I’ll probably take a good look at SuperCollider sometime in the future but I have some previous experience with VST filters and instruments that I want to take advantage of first.

I can recommend JVSTHost if any of you want to use VST stuff using Java. The filter part seems to be pretty stable, I have tested 8 different filters so far and they all worked. I’ll soon test some of my synths as well.

Probably very sensible to use VST, especially since you’re doing relatively ‘normal’ music. I may well try out that library at some point (actually, I have other code in C# that I’d like to use with VSTs, so maybe I’ll look into .NET alternatives in the short term).

Your system would potentially lend itself quite naturally to building synthesisers with Supercollider. Could be useful for making sound effects. In terms of just using it as a more normal midi style synthesiser, it wouldn’t necessarily be a bad fit, but you may do better with VSTs.

Sound effects was the first thing I started to make with the node system, but back then I did not know so much about filters and I just made pure procedural or so called “acausal” system then. Now I have a few causal filters implemented like all the biquad variants with adjustable parameters and also oscillators and all the VST effects that are compatible.

I will start to dig in the SFX area soon again but this time I will try to analyze existing SFX with spectrograms etc. and try to mimic the results with noise, oscillators and filters. I guess that this is a reasonable approach?
BTW, the JvstHost seems to work with all the synths I have tested so far as well :slight_smile: I tested StringZ2, Synth1 and ersdrums.

You might want to take a look at the book “Real Sound Synthesis for Interactive Applications” by Perry Cook. I’ve only dipped into it briefly, but it seems to be quite good - it is written with these kinds of applications in mind.

For experimentation with synthesis and prototyping things, I find ChucK very easy to use and expressive (easier than Supercollider, but not as mature, complete or CPU efficient); this is a music scripting language incorporating Cook’s synthesis toolkit STK, and as such has some high-level ‘physically inspired sonic modelling’ type stuff to play with. Since you’re taking a visual patching type approach, you should certainly take a look at pd if you haven’t already (I recommend the ‘pd-extended’ release http://puredata.info/downloads).

All of the things I’ve mentioned are open source, btw (STK is permissive, but with some caveats that some things may be covered by patents, ChucK is GPL, PD is BSD but many extensions are GPL) and quite well documented through academic papers etc. See also JASS for pure Java implementation of modal synthesis and other things.

You can probably get quite far with noise, oscillators, filters… and envelopes, of course…

Have fun :slight_smile:

Thanks!

All this information and pointers are very valuable to me.

My pleasure.

Another project that may be of interest is jMax, which is a member of the PD / Max/MSP family written in Java. I remember it looking quite nice a few years ago when I was getting into this stuff, it was ‘resting’ for a long while but apparently rumours of it’s demise were exaggerated; development is happening again under LGPL. It’s not at release stage, but since you’re doing related things in Java you should probably take a look. http://www.jmax-phoenix.org/wiki/doku.php

Another thing occurred to me. If you do carry on implementing your own audio synthesis stuff from scratch, you could consider implementing some DSP in OpenCL or similar, if that’s of interest. GPU should be able to make mincemeat of a lot of audio processing. In fact, I just did a bit of googling, and it seems even things like IIR filters, which are inherently quite sequential, can still benefit with appropriate cleverness (http://s-space.snu.ac.kr/bitstream/10371/6177/3/Digital%20Signal%20Processing%20Filtering%20with%20GPU.pdf).

It would be great to be able to use some hardware for audio processing :slight_smile:
The only problem is to make it work on many platforms, but for the first game that I use generative music in, I will probably stick with a pure software (or built in native) synth and find a good tradeoff between speed and sound quality.

Thanks for even more useful links!

I have added some more features into this tool: Trees and Particle Systems

Excellent work. Music’s sounding much better now.

Very nice music and trees!

EDIT: By the way, this came up in gamedev recently:

http://www.gamedev.net/reference/music/features/brfOrchGuide/

Kind of weird because it mentions nothing about games, but it could be useful for choosing the right ratios of instruments maybe :slight_smile:

Yes, certainly! Thank you for that link!

I am currently reading the books “Composition for Computer Musicians” and “Dance Music Manual”, which will probably help me create much better procedural percussions and “music style attributes”.

EDIT: Just wanted to point out that the music in that tree video is not generated by my node system, it is just a random song I selected from Youtube audioswap.