For those of us who are not lawyer here are two nice primer useful for open source projects:
Friday, March 28, 2008
A Legal Issues Primer for Open Source and Free Software Projects
Posted by
Steven 'lazalong' Gay
at
3:05 AM
0
comments
Labels: Legal, Open Source + Free Stuff
Saturday, March 1, 2008
My first mesh... and a comment from my son
Half a day to create my first mesh it should be a wagon... and I have no idea if this is a good performance or not :D
So that I can remember how I did it, here is a short description of the steps needed to create this image with Ogre, Blender and visualise the result in OGEd:
- Launch Blender and try to use it.
- Search online Blender tutorial to understand the most basic commands: Blender User Interface Tutorial, Modelling A Cube, Selecting Meshes and Using Textures.
- Struggling like hell to select faces, rescaling, subdividing to create more faces, destroy some faces to create doors and windows, ...
- Repeating step 3 several times.
- Reread 'Using Textures' to understand how to apply textures.
- Save and repeat steps 3-5 until you get this wagon. Forget about making a complex multiple windows wagons.
- Using the steps on "Blender to Ogre" to determine how to export the mesh:
- Copy the Pyhton script from ogrenew/tools/BlenderExport to the blender folder
- Read the documentation in BlenderExport/ogrehelp/ogremeshesexporter.html
- Realise that Blender must have a version newer than 2.44 (mine is 2.43)
- Download Blender, reinstall it, reload the mesh.
- Realise that I didn't compile OgreXmlConverter (/ogrenew/tools/XMLConverter)
- Install OgreXmlConverter and set up the mesh exporter correctly.
- I said correctly.
- .... no mesh appear in the exporter.... lose time to understand that you need to select the object and click Update if you want the mesh to be exported.
- (Repeat from step 5 because there was no textures on some faces...)
- At last the export works and here are:
- MyMesh.mesh.xml and
- MyMesh.material
- Now you must convert it to a .mesh so that Ogre can understand it. So you search the doc to find that you need XMLConverter again.
- In a console you type "OgreXmlConverter MyMesh.mesh.xml" and you get MyMesh.xml
- You load the mesh, material and texture in a mesh viewer (OGEd for example).
- .... and you see that the mesh is turned 90 degree on its x axis.... Bags!
- You find that the ogre addons MeshMagick can rotate a mesh.
- You try to compile it and stumbles on a compile error...
- You check the code and see that this can't compile.
- So you make a quick fix (who needs to convert mesh skeleton anyway... humpf... I will need to compile this correctly at one time).
- You type a bug report about this skeleton bug.
- You rotate it... in the wrong direction... redo it.
- Reload all in OGEd and... yes it shows correctly.
Comment from my son (3.5 years old) "Dady doesn't even know how to make wheels!". I will disinherit him...
Posted by
Steven 'lazalong' Gay
at
3:43 AM
0
comments
Labels: OGE, OGEd, Open Source + Free Stuff
Tuesday, February 12, 2008
OGEd - Open Game Editor (aka Ogre/OGE Editor) open sourced!
OGEd is now open-source :)
OGEd stands for Open Game Editor but at this stage it is more an Ogre Resource Editor and will evolve into an OGE Editor before becoming a true versatile Open Game Editor :D
You can get it on the OGE sourceforge as code or binary.
Of course there are still lots to do and any help would be great.
If you are interested you can look on the oge wiki for more information like todo list, planned features, how to compile, etc.
http://www.opengameengine.org/wiki
Originally I took inspiration from the Ogre project name "Material Editor" and 5 files that allowed Ogre script edition were really interesting.
So I proposed to the Ogre owner -Sinbad- that we exchange some code so that both could benefit - I thought it was a win-win proposal. I was wrong.
His answer disappointed me. As I want to be able to distribute OGEd under our OGE unlimited license -which I can't if I must keep Ogre license and copyright- I was obliged to remove ANY code that could be interpreted as being originally from the Material Editor :(
This attitude is bit to near to the "SCO versus Linux" for my taste. This is not how I idealise the open source movement. For me if someone is willing to exchange worthwhile code I am more than happy to give mine. Saving time is the most important thing in live! I am not immortal! In my opinion copyrights and licenses are primarily a way to protect my work from people patenting it and then trying to stop me using my code or even making me pay for the work I did! I use them to protect me against crooks and felons.
This lead me to read some legal texts about using existing code without infringing copyright & license. And I found this legal review from the ReactOS project: http://www.reactos.org/en/dev
This point is fairly obvious but IMO hard to achieve as C++ programmers are increasingly using the same coding style:
Developers are encouraged to NOT attempt to copy the coding style of non-free code. While coding style may not covered by copyright, a similar or identical coding style to a piece of non-free code casts suspicion on the new code.
This experience made me realise that the "Tainted Developers" theory is nearly unavoidable and I was not able to explain my position to Sinbad. So to avoid again a "SCO versus linux" issue I will avoid reading ANY copyrighted code from now on.
"Tainted Developers". There is a legal theory that is occasionally cited in the context of producing a work-alike implementation of a published copyrighted work. There is concern that, if the creators of the new work have seen the original work, they will be unable to create a similar work without infringing the copyright of the original. It is the position of the Project that this theory is invalid for a number of reasons. As a general rule, there is no reason that a developer who has seen non-free code cannot write logically similar code for ReactOS.
What a lose of time and effort - I hate to reinvent the wheel.
Posted by
Steven 'lazalong' Gay
at
11:49 PM
2
comments
Labels: Legal, OGEd, Open Source + Free Stuff
Wednesday, January 9, 2008
Shadows added

New screenshot of my engine where shadows were added.
Shadows techniques are cpu-expensive I will need to find how to limit them and make them lod dependent.
Any way it is progressing well.
Posted by
Steven 'lazalong' Gay
at
10:17 PM
2
comments
Thursday, December 20, 2007
Memory Debugging with VC8
Want to check how many hundreds of memory leaks you have?
Using the microsofts CRT debug heap is an easy way of doing it.
To get a listing of all memory leaks, you simply need to include crtdbg.h, set the debug flag, using the function _CrtSetDbgFlag and run your code in debug mode. The leaks will appear in the output tab.
To get started with it here is the minimal code to implement it:
#includeint flag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
flag |= _CRTDBG_LEAK_CHECK_DF; // Turn on leak-checking
_CrtSetDbgFlag(flag); // Set flag to the new value
To turn it off:
This will only tell you how many leaks you have. To be really useful you want to know which calls to new are causing the memory leaks. In order for MSVC IDE to point to the lines of code which allocate the memory that causes the leak, simply redefine new as such:// Turn off CRT block checking bit
tmpFlag &= ~_CRTDBG_CHECK_CRT_DF;
#define new new(_NORMAL_BLOCK,__FILE__, __LINE_)
Finally if you get a memory leak you can set a breakpoint at a secific
Finally if you get a memory leak you can set a breakpoint at a specific allocation number by using:_CrtSetBreakAlloc(2825);with 2825 being the allocation nb shown in {} in the error message.
Et voila!
Simple no?
Posted by
Steven 'lazalong' Gay
at
4:32 PM
0
comments
Labels: Open Source + Free Stuff
Tuesday, December 11, 2007
POCO and open-source
Recently I stumbled on POCO: A C++ Portable Components, or a collection of open source C++ class libraries. One word: wow. This library seems very well thought and having tried several libraries this one is the most promising.
Actually I am using mostly boost but I begin to be worried by the inconsistence between each sub libraries considering the api, the documentation and some over bloated code.
My principal need was a cross-platform threading libraries but boost::thread is lacking in some areas (no read-write mutex, difficulty to set thread specific code, ...). All those are present in POCO.
I will definitively switch to it if my tests are satisfactory and forget about boost. In fact I am even hoping that boost will not be used at all in the C++0x revision...
Marthen Mickos the MySQL CEO posted very interesting thoughts about how to succeed with an open-source project.
They needed 12 years... I will try to explain this to my wife:
"Darling! Let me work on my pet project... I will be rich in 12 years."
Somehow I have the feeling it will be difficult to convince her :)
MySQL needed 6 years to have a stable code so OGE has still 5 years to become stable.
Good - I am not as off track as I feared :D
Posted by
Steven 'lazalong' Gay
at
7:41 PM
1 comments
Labels: Open Source + Free Stuff
Thursday, November 8, 2007
OGEd - Ogre/OGE editor
A week ago I began work on an oge/ogre editor.
As oge uses ogre resources such as .material, .mesh, etc this editor can also be used as a resources editor for Ogre3D.
Even after one week when the code is fairly minimal I already understand better the interdependences of the ogre resources and this will oblige me to make a small refactoring.
Discovering as you code new features or libraries complexities is one of the main reason that "linear project management" (aka Waterfall model : requirements -> analysis-> design -> coding -> testing -> installation) is possible only if you know extensively your environment. When dealing with a medium sized project or libraries you don't know in depth a "recursive project management" (aka Spiral model) is much preferable.
One book I must read is the second edition of Code Complete... one more TODO :)
Posted by
Steven 'lazalong' Gay
at
6:29 PM
0
comments
Labels: OGE