From BlenderWiki

Jump to: navigation, search
Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.

Google Summer Of Code 2011 Proposal

Research of General Purpose Node Engine in C++ for Blender GE - Sven von Brand

Personal Information

Name: Sven von Brand Laredo
D.O.B: May the 12th 1986
Email: svbrandl (at) gmail.com.
I frequent IRC as svbrand.
Youtube Channel: www.youtube.com/sunivb
Chilean Cell Phone: 56-9-95076031
Address: Lisboa 79, Chorrillos, Viña del Mar, Valparaíso, Chile

Synopsis

Blender GE currently uses a three column logic editor, that makes it very easy to do things it implements, but very difficult or slow to implement simple things such as loops, states, long if statements and multiple conditions chained together. Python allows to code most of the functionalities when the logic editor falls short, but with a node editor instead of the logic editor, the goal is to be able to make this code smaller and modular, being able to better visualize the flow of the game without having to read more code than needed and to be able to visualize and make more than a three steps path. Finally the stongest argument to implement nodes is to be able to define several inputs and outputs through python or premade nodes making it very simple to make a finite automata of any size and complexity.

Benefits for Blender

The goal is to provide the basis for a node editor in the game engine that would allow the same functionalities as the three column logic editor, but would also allow the use of custome nodes input and outputs to make the flow of the game easier to follow and easier to modify. In case of the research and proof of concept being successful it is my plan to continue with this work as part of my thesis.

If it is possible to implement the node editor, this would make the Blender Game Engine a more powerful tool to make video games and interactive content.

Project Details

This is a project that can have different results depending on the first stages:

  • Research current game node implementetions:

Currently there's a Blender node effort by Benoit Bolsee and a page in the Blender Wiki of a design of the desired functionality. The first stage is to study this implementations and designs and also search for other software's use of node editors, there's already much of this work done by Benoit and other members of the community. The project would benefit by having Benoit as a mentor as he has made research and work on the subject and has knowledge of the code and system. Benoit has already expressed his interest in being this project's mentor in case it is accepted.

  • Research functionalities needed in node editor:

In previous work Benoit defined a set of functionalities desired for a generic node editor, as part of this project this will be revised and a set of functionalities will be defined to make a small, less ambitious, but more feasible node engine as part of this project.This engine has to be flexible and be able to support user Python defined nodes, this would allow for many of the current functionalities to be supported through Python nodes.

  • Proposed Solution:

With the functionalities defined the last part of the research will be to solve how to make a node editor that has the desired functionalities and how it manages programming common problems such as dead lock, execution order and code linking. Finally it will be design and a first version will be implemented of a general purpose node engine in C++, but always having in consideration the binding to Blender GE. The engine will not include a graphical editor, but will define how one should be build on top of it.

  • Proof of Concept:

As there will be no graphical interface simple examples will be coded to prove the functionality of the engine and the theorical node graph of each example will be constructed to show the functionalities of the node engine. This examples will be compared to the current three column game engine to show the changes this would bring to Blender GE.

Deliverables

The research work in a document, the node editor engine, the simple coded examples with explanations and the theorical node graphs that would generate them. The node editor engine would have no GUI, but it would be design to have one.

Project Schedule

Community Bonding Period: Research and discuss past actions related to node editor by members of the Blender community. Learn more about the development of the Blender Game Engine. Start defining proposed solution.

Start: End the initial research, start working in the engine's design.The design must consider the implementation of a full functional video game through the node editor and to be able to do what's done with the current system in general in a simpler fashion for newcomers. Design of a simple proof of concept through a simulated engine.

Mid-term evaluation: Research results and a proposed solution design that meets the requirements to be an actual improvement against the current system.

Past Mid-term: Start the implementation of the engine proposed in the previous stage through an iterative process. Go back and forth between design and implementation to avoid going on with possible mistakes made in the design step.

A week before Pencils Down: Coded examples with theoretical node graph that would generate them.

Pencils Down: Functional engine, Final Research Documents and examples ready.

Availability

My semester ends in the last days of June. Until June I would have about two full days a week to work in the project.

From July to the end of the project I would have almost full availability in this year's second semester (August to December), as I would only have one course to attend and my thesis, which would be related to this work, should it be chosen.

Bio and motivation

In 2007 accidentally I got to know Blender, on my own I learned how to use it and nowadays I'm constantly invited to events to show and teach about it, not because I'm that good, but because it is relatively unused and unknown in Chile. I've participated a bit in the community before. Haven't participated much in the development of Blender, but would like to change that. I already made a very small contribution with a small help rewritting code from 2.49 to 2.5 back in 2008 and have helped spread the use of Blender here in Chile. I would like to participate in the node editor for the game engine as I've work a lot with the Game Engine for school projects and doing other projects and would love to have that functionality in Blender for myself and for everyone interested.

I'm 24 and currently a last year student from Computer Science Engineering. I have experience as a teaching assistant in courses such as Operating Systems, Networks, Automata theory and Formal Languages and Computer Graphics. I am part of a group called USM Games in my University that researches video game development and I am an Open Source enthusiast, currently a Fedora Ambassador for Chile, having participated in dozens of events since 2004.

In 2008 I participated in “Feria de Software”, competing in the development of an innovative application as part of a team of four. We developed a cellphone application for kids, that run in most known cellphones and a website, making a system that had many social network capabilities. I was the team leader and the J2ME developer. We won first place in the Education and Entertainment Category and I learned a lot about how things should not be done and to resist frustration.

By 2009 I participated in a Blackberry Application Development Contest, this time we used Facebook as the social network, making an application centered in using social networks and GPS to find the best places to eat and communicate this to your friends and family. This year I was also the coordinator of “Encuentro Linux 2009”, which hosted the first Chilean Blender Conference, it was a massive event, and I learned a lot about how to work with people. The event was a huge success.

After the event I did an Internship in a web development company in Chile named Continuum that truly believes the Martin Fowler words “...I believe the biggest impact on successful software development is motivated, talented developers. If you don't have that all the technology and methodology in the world can't help you...”.

This past Summer (Chilean Summer, January-February) I did and internship in a Game Development Company called Behaviour, wich has a Studio in Chile. I worked a lot in C++ and with custom software from the company, wich has some similarities in functionalities with the Blender GE.

As of now, I'm still part of USM Games and I teach people how to use Blender and Blender GE, apart of doing research and public relations. I hope that having a node editor for the Game Engine in the future will give it more power an make it more attractive to my fellow students and people around the world.