Piko3D

Build script generation.

February 4th, 2010

So I’ve been working on getting Piko3D ported to Maemo5 for the Nokia N900, and one thing I need for that is a proper build script. So far, I’ve done everything for Piko3D in Visual Studio 2008 express edition.

I don’t want to maintain all changes to piko3d in a dozen different build scripts for different platforms, so I thought I’d look into build script generators, like Automake, Cmake, and Premake.

Everyone told me how Automake was old and tends to get messy, so at first I turned to CMake. I have to admit, I didn’t look far into CMake.. I looked into it, but it seems cumbersome to me somehow.

Warning: Next part expresses my personal views on the subject and should not be used for reference 😛

With CMake, you make CMakeLists.txt files for whatever you want to build. They suggest to put one of these files in every subdirectory you have in your source, and put the build rules in there. If you don’t want to create a lib from every source directory you have, Cmake quickly turns into a mess. Correct me if I’m wrong here, but if I am, the interface and documentation could be clearer 😉 And then, I found Premake! and I would have sworn to have heard angels sing 😛

Compared to whatever I read on how to do stuff in Cmake, Premake is a complete fresh spring breeze! (at least for what I was trying to do ;-)) Premake’s documentation is a bit scattered around… and It could be better… maybe I’ll do a tutorial about it… but what I did find was very pleasing to me.

First of all: Premake uses lua script for its config files. This means that yes, you can do loops, ifs, whatever floats your boat, in order to generate your buildscripts. Lua is widely used and well documented.

Second: Premake lets you put your files wherever you like. You can also put everything in one big file, or add separate premake scripts into the mix for parts you want. It’s very easy to just use a bunch-o-files to make your project, or split it up in libs and link them together.

I guess that people who are used to visual studio like myself, might find premake easier to use than others. It seems like they used a lot of terms from visual studio, like solutions, projects, configurations etc… I personally think this is a plus since I think it’s a clear structure, but I might be biased 🙂

Anywayz, there you have it. I’ve finished my premake script for piko3d, and it now generates nice and cleanly structured project files for visual studio 2k5 and 2k8. I will continue on with it and see if I can make an ubunto and maemo5 makefile next 🙂

Keep ya posted!
Regards,

Wracky.

Maemo 5 SDK and the N900

January 17th, 2010

Hey everyone!

As some of you may know, I want to make piko3d a modern, simple game engine for the latest PC hardware and mobile devices.  As it happens, my new Nokia n900 came in last week! This means I will be able to start porting piko3d to Maemo5 and start on the OpenGL ES 2.0 renderer!

I’ve been working to install the Maemo SDK and get myself familiar with the environment and today i’ve managed to get my first little program compiled and running on the N900! I’m now looking into setting up the project, and getting Piko to compile. It will be some work to get the dependencies on there, like libpng, ode, and SDL. A lot of people have already worked with SDL under Maemo so it should be possible.

I hope the new SDL version supporting OpenGL 3 will be released soon enough, so we can use the same system for OpenGL ES 2.0 and OpenGL 3.2.

Keep you posted!
Kind regards,

Wracky

Time scaling in Piko3D with ODE physics (video)

December 21st, 2009

Time scaling in Piko3D

Very happy to tell you that Paramike has been working hard on Piko3D’s physics implementation these days! The initial ODE implementation is being cleaned up and extended.

Now it’s possible to do time scaling. This means that time can be scaled in any world, which causes it to seem like it’s running in high speed, or in slow motion, and everything will continue to be simulated as normal. Physics frames are interpolated to keep them consistent and smooth even in slow motion!

Ofcourse, credit where credit is due, the idea came from Glenn Fiedler, see http://gafferongames.com/game-physics/fix-your-timestep/.

Here’s a new video showing some “bullet time”-like action in Piko3D. Still with boxes for now 😉
Be sure to check out the Piko3DEngine youtube channel here.

Hope you enjoy this little video 🙂

Regards,

Wracky

Basic ODE physics! (Video!)

December 9th, 2009

Piko3D ODE Physics test

Hey Everyone!

Paramike did a little work on piko3D’s physics implementation! We use the Open Dynamics Engine for Piko3D, as it gives a lot of control over the aspects of the physics simulation, is free, and open source!

So here’s the good news: Piko3D’s first video is up! It shows the first baby steps of the ODE physics implementation! It does collision! The code is still very rough, but we have visuals!!  This demo shows 800 0.5m^3 boxes colliding 20m away.

You can check out this video and upcoming videos on the Piko3D youtube channel which you can find here

Hope you like it!
Be sure to check back soon for updates 🙂

Regards,
Wracky.

Spanish traffic and a new member!

November 17th, 2009

Hey Everyone!

Just a little heads up for now!
I’ve been working on Angelscript again, and it’s still a tough read for me to get all the changes done in a proper way. The developer of Angelscript is also helping out. He’s been really helpful on the mail, and I hope that I can make the time to actually start using the functions I made so far. It looks good, but it’s still tricky for me to see how and where I need to add the new functionality 🙂

In other news: My LibPNG tutorial has been posted on a Spanish site about graphic programming (I believe :D) called codepixel !! I was surprised by a big spike in my web stats today from a lot of Spanish visitors from that site, so thanks for the linking me guys! And a big welcome to all new visitors 🙂

Last but not least, Seriva, friend and collegue of mine, is helping out with Piko3D! He’s helping me with a model loader for his own “awesome” model format, and he’s also quite the wizz with OpenGL 3.0 so he’ll be helping me out with the renderer and scene graph later on.

That’s it for now!
Thanks for reading!

Kind regards,

Wracky.

Piko3D’s first Texture support!

October 19th, 2009
Bishan Model by Bobby Kwakkernaat

Bishan Model by Bobby Kwakkernaat

Hey everyone!

A good month has passed since my last post! But I can assure you that I’m still alive and kicking, and so is Piko3D! I have been working on Angelscript for a bit as I explained in my last post. Witchlord had already committed some of my changes to the WIP version of angelscript, which you can find here. There’s still some work to do on that front, but I thought it was important to give my readers at Piko3D.com something nice to look at 😀

As some of you know, I wrote a tutorial on LibPNG and how I used it in Piko3D. Well I thought it was time to put  these images to use, and write support for texture loading! Loading a texture is not much work in itself, but I didn’t want a quick and dirty fix. I wanted something worthy of the dynamic lill 3D engine Piko3D is going to be. So I wrote a little setup for dynamically loading and unloading, as well as caching of textures, with a bit of management structure behind it that I can use to manage other GPU bound resources as well. Like shader programs, vertex array  buffers etc, in the future.

Piko3D doesn’t have much of a renderer yet… Everything you see in the screen shots is actually debug visualisation.  Piko3D will have at least an OpenGL ES 2.0 and OpenGL 3.0 (or 3.2) shader based render pipeline that I will start on later. It would sure be visually interesting,  but I think a solid base for it is important, and a 3D game engine is more then just the renderer 🙂  Because of this, the textured model renders are unlit.  I did get my hands on a nice 3D model named “Bishan”, created by Bobby Kwakkernaat from http://www.decentdesign.nl . This is at least a very nice piece of geometry you guys can feast your eyes on.

Well, I think I’ll be going back to working some more on Angelscript for now. I want to use that in Piko3D so I want to help to extend it a bit further to suit my own selfish desires ;P Oh and I have to feed my game addiction from time to time too…(Like with Brutal Legend and Uncharted at the moment :P)

Talk to you later!

Wracky.

Looking into Angelscript code.

September 6th, 2009

Hey everyone,

Just a small update to let you know where my development time is going 😀

While working on bindings for Angelscript, I noticed that by default, AS doesn’t support binding of classes without default constructors.  I’ve posted this on the Angelcode forums at Gamedev, (you can find the post here) and WitchLord (The angelscript developer) told me that it should be entirely possible to write support for classes without the default constructor! SO i’ll be looking into that now!

I think Angelscript is an awesome script language to write in, so I really want to use this in Piko3D 😀 It’s light weight, extremely easy to implement, and offers great functionality in scripting, like static types, and script classes, which I really like. So I’ll see what I can do, and I hope I can get it to work with all the classes in Piko3D soon!

Keep ya posted!

Wracky.

Paramike joins Piko3D!

September 5th, 2009

Hey everyone.

I asked paramike to help out with Piko3D, and he agreed! He’s going to help me implement the ODE physics library into Piko3D, aswell as some other misc programming. It’s great to have someone extra to talk about architecture in general, and of course it helps in making better progress aswell! ‘Cause I have to admit, as much as I love working in Piko3D, it’s still a whole lot of work!

So far, paramike has made a setup for memory management within piko3d. It’s now possible to, optionally, use a memory-pool structure in piko3D, and we will probably implement one later, to speed up memory allocation and reduce heap fragmentation. There’s a little tutorial about placement new operators, in the tutorial section, which talks a bit about memory management in mem-pools etc.

That’s it for now! I’m still hard at work on the Angelscript bindings generator, which seems to be coming along just fine.

Best regards,
Wracky.

Looking into Angelscript and Lua

August 17th, 2009

Hey Everyone,

Just a status update on what I’m doing with Piko3D at the moment. I’ve been over at the gamedev forums to talk to people about the pro’s and cons for implementing angelscript. By the looks of it, Angelscript seems to be a very clean, and technically interesting way to implement the scripting. The interface has it’s own quirks here and there, but every scripting engine has some specifics that you’ll have to deal with anyway.

As some of you may know, I work at www.kalydo.com during the day, and we use LUA at work for our games, so obviously I’ve looked into LUA aswel. LUA is also a bit cumbersome in some area’s but pretty straight forward in others. It seems to be less sophisticated then angelscript, which is a good and a bad thing at the same time. It’s probably easier to implement, but I figure a bit less safe to use. On the other hand, this also greatly depends on how you make the bindings.

Long story short: I can’t really decide! So i’ll probably do them both… My technical director over at www.kalydo.com gave me the source to our lua script bindings generator, and told me how to adapt it so that it can work for angelscript too! This would mean that I can make 1 simple generic way of specifying function bindings in my code, and generate glue-code/function registrations for Angelscript and Lua at the same time!

All that’s left than is to implement a Lua script engine, and an Angelscript script engine. As for now, I’ve started on the Angelscript sctriptengine implementation. I’ll set this up first, and then do a few tryouts to familiarize myself a bit more with angelscript and registering classes/functions.

After that I’ll be able to adapt our bindings creator so that it can also generate angelscipt and things should take of from there! 😀

Thanks for reading and I’ll keep you posted 🙂

Kind regards,
Wracky.

P.S. Kalydo is an online 3D games platform. If you are interested in writing your own games in lua using our kalydo engine and publish them online? Pop over to www.dreamcreateplay.com , download the free Game Development Kit and get right to it!

Update (30th August 2009) : Implementing Angelscript script engine was a breeze! Turns out however, that our BindingsGenerator has a lot more engine-specific code than I hoped for… so that’s gonna take some time to fix 😉

New Tutorial added: Placement new operator

July 15th, 2009

Added another tutorial today about the placement new operator.

You can find the tutorial in the tutorial section or click HERE

This is a more advanced c++ topic discussing how you can properly construct an object in a user allocated memory block. There’s a lot that you can do wrong here, so this is a topic for the more advanced C++ programmer. Enjoy.

« Newer PostsOlder Posts »

Creative Commons License
This work by piko3d.net is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Netherlands License
Powered by WordPress