ID:36281
 
It's been a little while since I've blogged about my development, and I'm working quite busily every day on it, so I figured I'd post some more stuff.



Turf edges are a recent addition which is very similar to a method I used in BYOND to "eliminate the grid". There's still an obvious grid in most cases, but you can use turf edges to add borders to turfs to get rid of that hard edge a little bit. This screenshot is actually older than my latest rendition. Since I have direct control of the polygons, I'm able to do some tricks to make the non-convex parts of the borders fit together nicer than they did in BYOND.



I've been doing some more work with particles as well. This shot shows a "ball of foliage" basically. I was experimenting with some ways of rendering trees for Tynkin. Right now, you can specify a "dispersion" variable for your /particlesystem's and it will spawn the particles randomly within a sphere of that range. I intend to add more dispersion types so you can eventually have effects that occur in a box, or a ring, or maybe JUST along the edges of those shapes. I still have to add ribbon trails, which should open up a whole new set of effects like lasers and motion trails.



This last shot is my pride and joy at the moment. It's a forest of a 50x50 region of trees. Each tree has it's own offset, scale, and rotation. I generated it with the following code:

world
name = "Super Happy Fun World"
awesomeness = 1000
New()
output("Hello [src]! Awesomeness = [src.awesomeness]")
setambient("gray")
setsky("pitchblack")
x = 0
while(x < 50)
y = 0
while(y < 50)
T = new("/staticatom/tree",x,0,y)
T.scale = random(5)*5+10
T.orientation = vec4(0,1,0,random(360))
T.position = vec3(25-random(50),0,25-random(50))
y += 1
x += 1


The amazing part of that shot is the framerate. I added a new type to Core, actually, I just defined the common type of turfs and walls more. StaticAtoms now can use meshes. StaticAtoms don't move, but if they're mostly using the same materials, they render REALLY fast. This is good news for things like dense forests, or terrain loaded with rocks. You can vary the scale, position, and rotation of your meshes, but so long as they keep their common material, it's like rendering one object. Core still knows the difference between each object, so if you hit one of these trees with a fireball, you can just as easily remove that tree, or if you wanted to get really fancy, convert it to an object and let the player chop down trees.

I made an improvement that lets my while loops run for much lengthier periods, which not noticable in a screenshot, it's a handy addition. I didn't take the screenshot while the text was outputted to the screen, but I have also implimented BYOND's style of handling text strings with embedded variables. I plan on adding support for the gender var and him his etc. text macros. I've started putting together a "Core API". I plan on selling the engine someday, I'd like to make a few games in it first myself, but I'll need people to help test it out on different machines, as well as help with the networking.

I've removed FMOD and ZoidCom because I'm trying to use libraries which I don't have to worry about licensing at all with. Does anyone have any suggestions on audio and networking libraries? I'm trying to use Audiere and HawkNL, but they don't seem to like to function with Ogre, something about how they each were compiled I'm guessing... and I really don't feel like downloading the whole DirectX SDK again if I don't have to.
Looks awesome! Good job!
Sweet, that is awesome. I need to get onto some 3d at some point really. I'd like to at school but I can't install a ton of software or use anything like Crystalspace which generated nearly 2GB of object files and stuff when you build it.
OpenAl (http://www.openal.org/) and libAO (http://xiph.org/ao/) are open source (GPL) sound libraries that are high-quality and widely used. However, to link them directly to the Core engine, you would need to release it under GPL, which you weren't so sure about the last time I mentioned it.

I've scoured Google and a dozen IRC channels in search of a BSD-licensed or public domain audio library, but so far I haven't had any luck. The only good options I can find are to go with the GPL license, or pay for a commercial one.
Looks great so far, you sir are my 3D hero!
GPL being that I'd have to release the source, and thereby nullify my chances of selling things with it, right? If I understand correctly... LGPL allows me to sell what I produce so long as I just link to their DLLs, and don't modify them, and of course I'd be more than happy to credit them.
You really need to change your blog's theme. Maeva? Sooooo out of date!
DerDragon wrote:
GPL being that I'd have to release the source, and thereby nullify my chances of selling things with it, right? If I understand correctly... LGPL allows me to sell what I produce so long as I just link to their DLLs, and don't modify them, and of course I'd be more than happy to credit them.

Yeah, that's all pretty much correct.

As for good pluggable network libraries, I've never found any that could be used commercially without paying for licencing. You may have to implement your own.
@Crispy, DerDragon: commercially, you probably have to pay for licensing; but if you're willing to go open sourced, there's always OpenTNL (http://www.opentnl.org/) which is designed specifically for high-performance apps and games and contains lots of solid code.

There is an open source business model. You give the software away for free and make money on support, training, and certification. It works well because developers are pulled into the community by the lure of open source code and a free development kit, then when those developers start commercial software projects they pay for support and certification.

Take for example: Red Hat, JBoss, MySQL, Reiser, SugarCRM, Blender, Canonical, Novell, Sun Microsystems, and dozens more.

So, if you're looking to make a business model out of it, I personally suggest that you build your platform on top of solid open-source code and an open-source business model.

Addendum: if you want to pay the Torque people, they have non-GPL licenses for TNL too.
Actually, I've just gotten down to the nitty gritty with Winsock, and I think I can work it. (I'll mess with the linux side of it later, but from what I've been reading, it won't be too difficult for me to make it cross-platform)

As far as the open source bit... I'm making a game engine, not an operating system or an application. I don't want to make money on support for it, because well... I don't really want to have to support it, or the changes made to it.

I'm one person working on one project, and I'm doing as well as I'd like to be on it. The other thing is... I'm not looking to make a "business model" out of it. I'd just like to make a little money from it, and see what people are willing to pay for what I create.

So at this point, I'll just need an audio library, but I'm off work, and it's time to go see the wife!
If you're still looking for good networking middleware, you might want to check out ZeroC's "ice" platform: http://www.zeroc.com/

It is available for free as GPL, but they offer to negotiate a commercial license to allow you to keep your source closed.

Keep in mind that you can try using GPL code with Core on your own machine without having to GPL your source; you only have to release your source code if you decide to distribute it along with the GPL code.