Archive of July 2010
Summer
With only a month off for summer break, this summer is feeling awfully rushed. That said, almost two weeks in it has been a blast. It started with some (very) aggressive gaming, was followed by going to Minnesotta for Steph’s family reunion with some interspersed work, and is now flowing nicely into working full time on my masters project.
The project itself is going well and tonight I finished off the last tech I needed for the core of the Arrogance engine which I am now forking for the purpose of this project. The engine is very clean and has some nice features modeled after things I’ve encountered in the UDK, Flixel, and my previous engines. I’ve even included some things that I thought up while I was studying Lua to determine whether or not I wanted to integrate it (I do, but later). Of all of this, the most favorite feature I have so far is reference counted resource management. Beyond a new game state system, better management implementation, etc., being able to have the game shut down and report zero memory leaks is very very nice.
Anyways, development continues, if your interested check out the developers log available on the right. Cheers,
– Loren
Lockless Linked List
For some recent work I needed to make a lockless linked list. These kind of lists are awesome because, for the most part, you can add things to the list from multiple threads with minimal cost. For my case a limitation on the needs of the list was that it only needed lockless insert, removals would be managed from a single thread. This allowed for a pretty awesomely efficient insertion function which I document here. Unfortunately this implementation is Windows specific but could probably be switched to whatever CAS your local OS uses. Enjoy.
template<typename T>
void Insert(const T \& d)
{
volatile Node<T> * current = _root;
Node<T> * n = new Node<T>(d);
volatile PVOID * ptr;
do
{
// Traverse to the end
while(current->next != NULL)
{
current = current->next;
}
ptr = (volatile PVOID *)(& (current->next));
// Attempt to swap in our new node
} while (InterlockedCompareExchangePointer(ptr, n, NULL) != NULL);
InterlockedIncrement(&_nElements);
}
Cheers, Loren
Skinned Animation
One of our projects for the last two months has been to build a 3dsmax exporter and an accompanying importer/render pipeline for our engines. This is the result of the project. The exporter supports exporting skinned and un-skinned meshes, bone structure, and scene graph to maximize mesh re-use. The stored format is XML based making it readable but not optimal.
Cheers, Loren
DevLog 2.0
So, seeing as I have homework to do I totally decided to work on DevLog instead! The software now supports multiple projects and users with the schema done up to support the addition of RBAC here in the near(ish) future. I very much ripped the CSS code for it from the theme I’m using for this blog by the awesome gentleman Nevan Scott. I cannot find you on the internet but thanks, where ever you are.
Anyways, on a more realistic front, a lot of work needs to be done to get DevLog release ready. Currently it uses sqlite3 (not a bad thing) but triggers need to be added to enforce foreign keys. User input from logged in users needs to go through more validation resulting in more queries to the database as well. Project and user management is currently done from python scripts run outside the server so some form of admin panel needs to be added to manage users, RBAC groups, projects, and posts. Moreover, the code needs to be moved out of the root webpy code and into a module (which uses webpy). This will aid in integration of the software into other webpy sites. Finally, some work could be done on the configuration front in terms of making it easier to theme and setup.
This is all on a back burner behind my thesis project (Arrogance) but feel free to keep up with it and other development from my developers log!
- Loren
DevLog
I started a project today, partially out of necessity and partially out of want. The project is called DevLog, short for Developers Log, and is a very simple system for creating quick log messages. It is very much inspired by micro-blogging software but made to be even simpler. The goal is that a developer can make quick log entries about what they are doing, where they are in the code, problems they have had, whatever, without losing concentration. No big interface, no clicking to add an entry, just type and hit enter and done.
I built it using web.py and it only took a few hours and totals at around 50 lines of code. Pretty nice and runs on sqlite to make it usable on both a local machine and a server quickly.
Once I’ve added a theme to it and a few more features I will be releasing the code for it. I’ve wanted these things so often and they are never there, now one is.
Anyways, you can find my personal devlog for my masters project Arrogance over on the “Other Stuff” bar on the right or by clicking here.
Cheers, Loren
On and on and on
Behind. I hate it, being behind. It has to be the most stressful thing in the world. Anyways, I’m catching up. Tired of it.