Archive for the ‘Development’ Category

Progress! Rendering and Thread safety.

Wednesday, December 28th, 2011

Hey people!

Here’s a small development update!
So the holidays gave us some good time to work on Piko3D, and we thoroughly enjoyed it ๐Ÿ˜€ Even though Star Wars: The Old Republic is out now, and I absolutely love the game, we managed to make some good progress ๐Ÿ™‚

Paramike is working on threading. Piko3D already supports some multi-threading. We have a thread pool, and the scene and physics are done multi-threaded, but there is more to be done! The threadpool with which we limit the amount of threads started on a PC, is now LOCK FREE! and runs a LOT faster. Alongside that, Paramike is working on a thread-safe memory pool, which should improve Piko3D’s performance quite a bit (not that it’s slow now, just saying).

I have started restructuring part of the engine to make a basis for our new OpenGL 4.1/4.2 Renderer, and I’m making good progress! Window and camera updates are now properly taken care of, and as per SDL 1.3, we support MULTIPLE WINDOWS! We’ll probably never use it, but hey ๐Ÿ˜‰
This also means that script determines what events are handled at what window, and that every window is updated separately.

Here’s a little screenshot for your enjoyment ๐Ÿ˜‰

Till next time!


Bindpose FTW

Thursday, October 13th, 2011
MD5 Bind pose


So, after some time I finally got an MD5 model loader and a skeleton ๐Ÿ™‚ ย Currently it’s only a

bindpose, there is noย vertex blending or animation for that matter. Up next, animation!! Which is actually what I started out doing ๐Ÿ˜‰





[Don’t look at that model or the lighting… we’re still working on the renderer ๐Ÿ˜› – Wracky]



Keys, Bones and Screens.

Thursday, July 7th, 2011

Hey everyone!

Yep! we’ve been out of it for a couple of weeks.. I just bought a new house and such! lots to do!
Well progress is kinda slow in general I guess ๐Ÿ™‚ But we’re still having fun working on Piko3D so when we get the chance,
we get together have a good time coding!

Last week, Paramike fixed some script bindings and tried get the old screen and camera classes going in script. We’re switching most of the control structure to angel script now, and some of the bindings are still a bit wonky/experimental!

This week, Micron and me had a few beers and did some coding on input handling and bone animation. There are some architectural issues that Micron is tackling now, and I added about 250 key-code enums to script! Soon we’ll be able to register and handle key bindings and mouse movements etc. Piko3D uses most of the messages from SDL 1.3 so far (Kudos to the guys from SDL for their continued work on SDL 1.3!)

I promised you guys a little guide on Angelscript right? Well I’m still up to my ass in boxes right now, and working on the couch on my laptop… I’ll get to it once I got my computer set up again ๐Ÿ˜€ We’re working on the house, and I can tell you, since yesterday there IS light and electricity in the “office”! I still have to get a LAN-cable up there, and the floor needs to be put in, but hey! We’re getting somewhere! ๐Ÿ˜‰

Well that’s it for now!

Talk to ya later!

Script bindings done!

Sunday, April 24th, 2011

Hey everyone!

The Revision demo party has proven to be a greatย opportunityย to get some coding done!
I’ve basically finished the script bindings for the existing classes!

Aside from that I worked on delegates and a timer class for script.
It is now possible to create timers in angelscript, and attach delegates to them that call script functions when the timer fires.
The timers can be set to loop, or can be stopped, paused or resumed. This makes the timers very useful for timing periodic or occasional events!

The delegates are used to attach event handlers to the timers, but can be used to attach event handlers to anything that is observable, like objects, resources, or entities. This means that an object can be monitored for instance, and a script function can be called either when it moves, or when it is destroyed.
Delegates can store arguments that can be passed to a script function when it fires for easy customization ย  Delegates will also play a major part in the input handling/notification system, as they can be used by the control class internally to bind script functions to key presses etc.

Neat! ๐Ÿ˜€

Well that’s it for now.
I think I’ve made some good progress.
Going to sleep now ๐Ÿ˜‰

Till next time !


More Scripting, Rendering and physics! (progress update)

Friday, February 18th, 2011

Hey everyone!

Here’s another little heads up on Piko3D development and what we’re doing with our spare time ๐Ÿ˜‰
I’m currently still working on the angelscript bindings for the classes we we have so far. ย That’s physics, Basic rendering, and resource management, and scene management. Angelscript lets you register your application’s String type, which I recently finished. It works really well! After I’m done with this, I’ll do a little tutorial section about things to look at when you want to implement Angelscript in your engine, so stay tuned for that.

Yesterday, Seriva and I sat together to make a design for Piko3D ‘s rendering system. We had some basic classes that are going to be used for vertex buffers, textures, render targets, and what not, but not a decent structure yet for glueing it all together. ย The design is now roughly finished, and we can start implementing it. Hope we can show you some neat renders soon! (it’ll probably take some time still though ;-)) also, since games are already coming out with DirectX 11 and tesselation, we’ve decided to up the spec from OpenGL 3.2 to OpenGL 4.1. This does not mean Piko3D will only be OpenGL 4.1 compatible, but it will be our top priority to get that to work first.

Paramike has made great progress with mulithreading the ODE physics engine. I hope we get the chance to submit our patch to the ODE repository so mulithreading will become easier for all people interested in using ODE for their project.
Collision testing is already multithreaded in piko3d, and paramike was now working on threading the simulation steps and its going really well so far.

Well! That’s it for now!

Hope we can make a new video or have some cool screenshots for you soon.
Till next time!


Multithreading and scriptbindings (progress update)

Monday, January 3rd, 2011

Hello everyone!

First of all, happy new year to everybody! The Piko3D team have been partying ofcourse ๐Ÿ˜‰ but we also did some Pikoding!

Wracky is busy writing scriptbindings for AngelScript. We chose to write the bindings ourselves instead of creating or using a bindingscreator for maximum control. It may be tedious work, but adding functionality after creating the initial bindings is trivial.

I implemented a threadpool with job scheduling and started distributing scene queries and physics collisions over multiple cores. Next up is the multithreading of physics simulations, but this requires some changes in ODE which may take some time. Since I’ve bought an i7 laptop recently, it’s fun to see 8 cores at work ๐Ÿ˜€

Expect more progress and perhaps a tutorial soon!


New Tutorial: Space Partitioning!

Tuesday, November 30th, 2010

Hey everyone!

Today I’m glad to anounce that we have another TUTORIAL up! Paramike wrote a tutorial for you people on why and how Piko3D does its spacepartitioning, and the octree we’ve created for it of which we all think its awesome ๐Ÿ˜‰

You can now find it in theย tutorial section or click here

In the meantime: we’re not sitting still either! ย I’m currently working on finally REALLY implementing scripting. We’re refactoring our smartpointer/refcounting system a bit so Piko3D can seamlessly combine it’s own refcounting with that of Angelscript!

Rendering is still making progress thanks to Seriva, and Micron is implementing a simiple MD5 Model loader right now so we can easily get some ย basic input and testing material for bone animation!

That’s all for now folks!!
Talk to you later!

Kind regards,


Dynamic Octree Scene Graph! (Video)

Saturday, October 16th, 2010

Octree Scene Graph Demo

Hey Everyone!

Seriva, Micron, ParaMike and I got together this friday/saturday for a little Piko3D development LAN! We worked together on various subsystems and made good progress! Micron started on support for bone animation and ragdolls, Seriva did some more prep-work for the OpenGL 3.x renderer and ParaMike and me worked on some minor fixes and a cool scene graph video!

I actually spend some time in blender again and created a little space ship to use in our tests and demos. We call him pete, and you can see a whole bunch of him flying by in the video as our dynamic octree tries to keep up ๐Ÿ˜‰ The video is devided in two parts. The top part shows you the action, while the bottom part shows the scene graph and objects as they move by ๐Ÿ™‚

Piko3D uses space partitioning (in this case an Octree) to be able to quickly determine different things, like what objects are in view right now, and which objects are getting so close together that physics should start worrying about collisions!

The Octree you see in the video is fully dynamic. There is no need to tell the system ANYTHING about how many objects there are in the world, how big they are and how they move around. Each node in the octree is autonomous and together they determine where a new root, new nodes or leaves need to be created, and who gets to be the root! This means that the entire octree can move around as it is needed. This is demonstrated in the video which shows a couple of hundred of space ships all moving right at the same time. Note that only the nodes that contain objects are drawn in the video, to keep things clear ๐Ÿ˜‰

Till next time!

Regards, Wracky.

Bitmap Font Rendering! (Progress update)

Saturday, September 11th, 2010

Hey everyone,

Bitmap font rendering demo

Bitmap font label

Here’s a new progress update of what we did on Piko3D in the last few months! ย For starters, I implemented a simple GUI system which now consists of a simple panel and a label. Both elements support margin and padding, and can be parented to another GUI component for easy navigation. The Label is used for rendering text and uses fonts based on Angelcode’s BMFont Bitmap font generator! ย You can see the label being rendered in the screen shot.

For now it only supports BMFonts Binary format, and Piko3D still only supports PNG textures.

In other news:
We’re still working on a number of other things. Micron is working on improving and optimizing frustum culling, and intersections between basic shapes, like cubes, spheres and of course, the frustum, which is just about done really!

In the mean time, Paramike is working on our awesome dynamic octree for our space partitioning, in which every cell is autonomous. Together they produce a dynamically relocating, growing and shrinking octree that will adjust itself as it is required, to provide an easy and quick way to query objects in our scene.

Seriva is also still helping out (although he’s on a holiday right now) and I’m glad to tell you that he started on the loading/parsing of Shader programs! So perhaps we will be showing you some screenshots of a new renderer soon ๐Ÿ˜‰

Well! Piko3D is still a thing we do for fun, and although we still spend a lot of time in Starcraft 2, Dragon age, Mass Effect 2 and what not, I’m glad to see things get done ๐Ÿ™‚ On that note: I’ll be on holiday too for the next 2 weeks, so no Piko3D news/development from me during that time.

Untill next time!


Progress report!

Sunday, May 30th, 2010

Hey everyone!

Been a while since I posted anything up here, but rest assured, we’re still at work!
In the last few weeks we’ve been busy with some of the more basic functionality for Piko3D.
Problem with such things is that it does not give us nice pictures or movies to show you ๐Ÿ˜›
So here’s a list of what we’ve done lately

  • Basic scene graph was made (more advanced graph in the making)
  • Basic frustum culling works
  • Wrote my own little INI parser for use with config files.
  • Added extra ODE physics joints
  • Started with Shader resource management for the renderer
  • Objects now have bounding volumes.
  • Basic math for intersecting AAboxes, spheres and pyramids.
  • Been poking around in SDL 1.3 to see if I could get the mouse to behave!
    (our gateway to OpenGL 3.2 and ES 2.0!)

Aside from that, the team’s struggling with the worldly temptations like Mass Effect 2 and currently Heroes of Might and magic 5 for me ๐Ÿ˜›
So we take our time, but still have great fun doing this ๐Ÿ™‚

Keep you posted!