Hello CrystalSpace Community,
I am one of the students taking part in this years Google Summer of Code and am planning to work on a refactoring of the CEL Quest system and implementation of a behaviour tree property class starting on June 1st and working through to the middle of August.
Some of you will know me from my previous discussion of this project during the proposal stages of the programme in the CEL mailing list. During that time a number of other AI related issues were raised and, assuming the success of this project, I still aim to develop some of those ideas further in the future after the GSoC programme closes in August. If anyone would like to discuss AI within CrystalSpace please do not hesitate to email me, irc or comment on this blog, I am very keen to make a continued and succesful effort on this specific aspect of the CEL project.
In a number of recent emails to the GSoC mailing list it has been identified that, for those who were unsuccesful in applying this year, it would be useful if succesful proposals were made available online and so I have attached (a slightly shortened version of) mine below. Partly to aid those applying next year but also to introduce myself and my intentions to those unfamiliar with my project proposal.
I look forward to working with you all and hope to have some more active discussion regarding this project very soon.
My name is Sam Devlin, I am a fifth year computer scientist student about to be awarded a first class MEng in Computer Systems in Software Engineering and beginning a PhD in Reinforcement Learning in October. I have a fond interest in game AI and am looking for a project where I can exert a continuous effort in practical AI throughout my time researching theoretical AI.
I have no current experience working on open-source projects but am keen to learn about this field hence my application to GSoC. I do however have over a years industry experience working on a range of projects for BAE System's. Development during this time was predominantly with C++ using MSVC++.
I have also completed two internships during my undergraduate degree, one of which was within the challenging environment of a major investment bank. The most relevant of which, however, was within the computer science department at the University of York, UK. During this time I worked with a large commercial API to implement modifications, again in C++, to a military simulator. I also gained working experience with Python in the automation of a number of minor tasks.
I am familiar with the OpenGL API having worked with it both during a computer graphics module of my course and in the development of a project for BAE Systems. My experience in AI, however, is more substantial, having focussed a large number of my module choices into this area. I have always excelled in these subjects and as a result was selected to perform my final year project within the AI group. This project involved the use of reinforcement learning under partial observability to make agents play the soccer subgame keepaway. The successful results of my research have been submitted to the IAT'09 conference and have helped me land a DTA scholarship for my PhD research.
My Project Proposal.
Given the current complications and issues with the Quest system (Highlighted at Quest Improvement Proposals, Quest Editor-See Bottom Of Page and my recent discussions on the CEL mailing list.) A number of ideas have been discussed as beneficial to the project and a refactor suggested that removes triggers and rewards from the Quest system and makes them standard property classes available throughout CEL.
In doing this future systems can be designed to take advantage of these powerful tools. An example of this that I propose to implement is behavior trees. Behavior Trees provide similar functionality to FSMs but are considered more intuitive, and make logic more reusable. (For a more detailed argument of Behavior Trees please see: A Behavior Tree Overview)
It has also been argued repeatedly that FSMs are becoming obsolete in industry (For example: FSM Age is Over). If you agree or not, it is important that CS/CEL provide tools for all developers. For those wishing to stick with FSMs the refactored Quest system will be available, and for those who have moved on to behavior trees the new implementation will be available. By implementing Behavior Trees and providing detailed documentation and tutorials it is my hope that the CEL community will begin to explore and develop this technology that is rapidly becoming the industry standard.
Just a quick greeting to all those out there in CrystalSpace. I'm thrilled to be a part of the GSoC and CS and look forward to contributing something worthwhile. Thanks all around to the mentors and admins on CS for selecting my proposal. Scott and I have already chatted about the future of this project and will take up full planning once the school semester closes in a couple of weeks.
For those that don't know me yet, I'm a doctoral candidate in my sixth year of graduate study at the University of Minnesota. Computer graphics is my primary area of interest and most of my programming experience involves real-time lighting and shading to some degree. These days I'm working on image based rendering recreating work on light fields with the hope of applying it to a new area.
I will do my best to keep things up to date on this blog as the summer progresses.
Putting the ass into asset.
'Open Asset Import Library' is a library to import a wide range of 3D formats, which I'll use to expand CA's supported formats.
Assimp has some python bindings (using ctypes) but they were severly outdated. Since I hate manual labour, I decided to write a python script to convert the Assimp header files into python's ctypes compatible Structures. A few regexp tutorials later(I'm new to it) I had a 150 lines script generating a 1000 lines of bindings. All things considered updating the old bindings manually might have taken less time. However I gained a new skill (which is still satisfying for us RolePlayers: "Die you filthy troll and show me some loot and experience!!") and whenever someone non-python aware decides to change assimp all they have to do is run a script.
Now that the bindings were updated it was time to tackle some of the python boilerplate, as the material properties showed some signs of wrong/corrupted memory.
The full ctypes reference later, it turned to be as simple as "cast(p.mData, POINTER(c_float*(p.mDataLength/sizeof(c_float)) )).contents"
and a few more for each possible 'p.mType'. Oh well.
To more exciting stuff, getting all this data in CS:
Support for static meshes, materials (with shadervars) and textures. (after fiddling a bit with left and righ handedness) And now working on animation support...
Picked a mesh that's a tad more exciting than my test cube. Finally settled on 'dwarf.x'.
The mother of all world editors.
DAMN's filebackend relied on the linux specific 'inotify' to watch files and report when they got modified, added or removed.
To support other OSs I set of writing a 'generic notify' mimicing the inotify interface, so it could be used as a drop-in replacement, not having to alter the current code.
It works quite nicely now, although perhaps not that efficient (it's doing simple directory compares), but it was meant to be generic, not using any OS specific libraries/functions.
Planned for the future is a 'win notify' utilizing the ReadDirectoryChanges API, exposed via the pywin32 win32file module.
I also added the concept of 'repositories' to DAMN, allowing to add several directories or other sources (like svn) for DAMN to 'watch'. Utilising the 'Models' repositories automatically register with the UI, allowing them to be edited and en/disable by the user, aswell as adding more or removing some.
My apologies to my loyal fans, the next couple of months you won't find any insanity striken posts here, just some boring technical descriptions of my progress on CSSoC.
This year I applied to Google Summer of Code for Crystal Space to work on Crystal Architect.
(It's already getting complicated I know.)
Unfortunaly I didn't make the cut, CS specific features were chosen over my less CS specific proposal...however, since my proposal was so brilliant! *cough* the nice people at CS decided to create a 6th slot using last year's GSoC profits (2000USD).
So here I am, proud participant in the first 'Crystal Space Summer of Code', CSSoC!!
|<< <||Current||> >>|
This is the long description for the blog named 'Blog All'.
This blog (blog #1) is actually a very special blog! It automatically aggregates all posts from all other blogs. This allows you to easily track everything that is posted on this system. You can hide this blog from the public by unchecking 'Include in public blog list' in the blogs admin.