Archive for the ‘Development’ Category

Added ODE Motor and Joint implementation! (Video)

Saturday, April 10th, 2010

ODE joint and motor demo

Hey everone!

Here it is. I’ve been adding support for ODE joints and motors to Piko3D. Joints come in many types, and can be used to create hinges, balljoints, universal joints, pistons, sliders etc. ODE gives us the option to add motors to joints. which can be used to make things move.

I’ve made a little video again that shows a small car driving through a set of doors and crashing into a wall. Took me some time to set it all up so I hope you like it 😉 enjoy!

Regards,
Wracky.

Update: Click here for the alternate version

Satus update: Piko3D and the N900 ?

Thursday, April 8th, 2010

Hey everyone.

I see that some users come here looking for a 3D engine for Maemo or the Nokia N900.
I made a news post a while back about me looking into the Maemo SDK as a means to port Piko3D to my N900, and I wanted to give you a bit of a status update on what’s going on in that department!

I first ironed  out some minor problems I had with compiling Piko3D under linux on GCC. As said before, I’m now using Premake for managing the pik3D project, which makes all this SO MUCH easier..
The good news is: It builds!

I’ve also found  ports for libSDL,  LibPNG and libODE for the N900.

Here’s what I plan to do:
I first wish to bring Piko3D a bit more up to speed. As some of you may know, Piko3D doesn’t have a proper renderer yet. Scripting is only partially implemented (proper bindings are still missing) and the ODE implementation is not QUITE there yet… There’s no animation system in place yet, and no options for playing sounds.

Since Piko3D uses SDL for it’s basic windowing and messaging, I will be looking at SDL 1.3 for support for OpenGL 3.x and OpenGL ES 2.0. There may still be some problems with initializing SDL 1.3 on OpenGL ES 2.0 but Seriva is looking into that.

I’m currently working on physical joints an motors, of which I hope to post a new video soon. After that, I want to make a setup for Piko3D’s rendering and perhaps we’ll get to some animation aswel… When the basic functionalities are done, I will get back at porting Piko3D to the N900.

So that’s it! Just so you know, It’s still my intention to bring Piko3D to mobile devices, starting with the N900.  Piko3D is still a lot of work, and we do this in our free time and for fun.. so progress might be a bit slow sometimes.

When I feel comfortable that piko3D is turning into an actual product, and things are roughly in place, I will open source the bugger and you can all have a look and help out if you like  🙂

But until then, there’s  still much to be done!

Regards!
Wracky.

Wait for it…..

Thursday, April 8th, 2010

Hey peeps!

Got some pikoding done again! Finished my second DragonAge: Origins run! No I’m still not done, I’m playing the Awakenings expansion now 😛 BUT The last few days, I’ve been giving Piko3D some love and I’ll be uploading a new VIDEO soon 😀

In other news: Another friend, Micron, is helping out with Piko3D! It seems people like to have a little project to which they can contribute a little from time to time 🙂 We’re still doing this just for fun.

So stay tuned! o_O

Regards,
Wracky

Build script generation.

Thursday, 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

Sunday, 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)

Monday, 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

Piko3D’s first Texture support!

Monday, 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.

Sunday, 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.

Looking into Angelscript and Lua

Monday, 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 😉

First 3D model!

Monday, July 6th, 2009
3DS Tree Model

3DS Tree Model

Today, I did a bit of code cleanup. Things are starting to come around nicely. I also spend a little time to write a basic wireframe renderer to visualize some models. Well it turned out that the 3DS model loader works quite nicely so far 😀 It’s still a bit basic and rough around the edges, but we’re getting there! So with this, I present to you, the first ever 3D model rendered with Piko3D!  😀

The model is an unfinished tree model I made to teach myself a bit about working with blender, so that I could make some test art and assets to use in Piko. And ofcourse, so I could have something to show all of you 😉

As for Piko3D’s Development, I will focus on something other then graphics for now (sorry ’bout that ;-)) I believe a solid base is more important then quick and purty visual results, so I wanna focus on the architecture some more. I think I’ll look into a scripting library first. I am considering angelscript at the moment, although lua seems to have a good toolset. I want to look into it this early in development, since it makes it easier to test stuff out, but also, to be able to think about a good interface with the posibilities of the scripting engine in mind. And ofcourse, when there’s scripting, there’s bindings to be made (usually) so some work will go into that too. Starting with that right away seems like the sane thing to do in order to keep track of everything.

I don’t know when i’ll have some new VISUAL results for you, but I’ll make sure to post any new and interesting developments as soon as they happen 😉

UPDATE: Oops… I think I accidentally rendered some more trees with lighting turned on and filled polygons, and put a screenshot of it in the gallery!  Don’t mind the hard edges 😉

Thanks for reading!
Wracky.