Skip to main content

enJine project graduated! Learn game programming with Java now!

Posted by dwildt on December 12, 2007 at 7:16 PM PST

Hello! I have interviewed Ricardo Nakamura, from enJine project. In this post you will find more information about this great project and how you can use it to learn game programming using Java!

Q1: It is a great honor to interview enJine project team. Who is the enJine project team?

Ricardo: The enJine project ( is developed by a group of researchers and interns at Interlab - Interactive Technologies Laboratory. Currently, the core project team is composed by Romero Tori, João Luiz Bernardes Jr., and me. We have been in the project since its inception and now concentrate on maintaining the enJine core modules. There are also two interns, André Uyeda and Gabriel Ramires, who are taking part in the development of enJine. Many more people have worked in the project, and we have a list of them in the project site.

While the Interlab team focuses on enJine architecture and core functionality, we have started cooperating with other institutions for the development of additional modules. Our first partnership is with professor Esteban Clua at UFF (Universidade Federal Fluminense).

Q2: What enJine stands for?

Ricardo: EnJine is a didactic game engine developed in Java. It is important to stress that the goal of enJine has always been to serve as a didactic tool. When necessary we do sacrifice some performance for the sake of clarity, correctness and simplicity. That said, games created with enJine tend to perform well. But it was never meant to compete with commercial game engines.

Q3: Tell us about the beginning of the project. What were the difficulties and the challenges you were facing?

Ricardo: We started the development of enJine in 2003, about the same time our game development technology group was created. We had done some studies with the scripting layer of commercial game engines such as the Unreal Engine, and we had researched the few papers available on engine architecture. David Eberly's "3D Game Engine Design" was also a very helpful book. Our motivation to create enJine was that we needed a tool that could be used with more freedom than the scripting interfaces allowed. We wanted to be able to show the core architecture of a game engine and let students play with it, if they wanted to -- and that architecture would need to be clear and simple enough for a novice student to understand. We also expected that enJine could be used as a tool to create didactic games. It is interesting that, after many years, we are coming back to that goal in enJine 4.0, which may bring with it high-level tools to aid in game creation.

As for difficulties and challenges, the lack of in-depth information about game engines at the beginning of our project led us to some mistakes in the first version of enJine. We had to spend many months reviewing the entire architecture to correct these problems. After the first year of the project, some of the members of the initial team had to focus on their own research, to finish their masters' and doctoral theses. These facts together caused a year-long stall in the project, at least in terms of new releases.

Q4: Tell us about the presentations at SBGames 2007. How was the event?

Ricardo: This year, we had three presentations at SBGames: two papers that were related to enJine and a tutorial about using enJine for education. SBGames is a great event to meet the people involved in game development and research in Brazil. It is good to see that it keeps growing: this year we had a whole new track about Games and Culture, with papers, posters and tutorials.

Q5: What are the future plans for the project?

Ricardo: Right now, we are looking for collaborators interested in extending enJine functionality or using it for any kind of project. We have used enJine for education and as a research testbed, and we believe that other people might benefit from it.

In terms of development schedule, we are in the planning phase of enJine 4.0, which will incorporate new features of Java 5.0 into the core. We have already done some prototyping of the new version, which will include new things such as hierarchies of game objects. We also have plans to start implementing high-level tools for game creation and adding new classes to enJine's framework layer -- things that should make enJine even easier to use.

Q6: How the project can be used in classes inside educational institutions? Is it being used already? Can you give us some examples?

Ricardo: We believe that enJine can be used as a tool in the context of different subjects of computer science, computer engineering and game design courses. We have used it to teach Computer Graphics to computer science and computer engineering undergraduates. In this case, students used enJine to create a game as a term project, and the results were very positive. We have published a paper about this experience in Siggraph 2006 Educators' Program, which can be found at

Q7: Have you guys checked the portal? Is there a possibility for you guys to share gaming knowledge and maybe setup a class plan to use enJine for teaching in the future? Maybe other educational institutions can use the same plan to teach.

Ricardo: At this time, we are producing a computer graphics course for distance learning based on enJine. It its meant for another project, but we could probably share some of its contents, or at least the class plan. It would be very interesting for us to participate in Right now, it would be a matter of allocating someone from our laboratory to learn more about the portal. This way, we can plan an effective way to collaborate -- maybe even with support materials designed specifically for

Q8: What are the main Java technologies used inside enJine. Which one you like most? Which one is more challenging to work with?

Ricardo: We rely heavily on Java 3D to perform the rendering in enJine. That is probably the most prominent Java technology used in this project. I have worked with Java 3D since 2000, lurking in the mailing lists and following its evolution. It is interesting to see the game industry nowadays turning to multi-threaded, decoupled rendering loops, which is something Java 3D implemented from the start but was seen as "overkill" for game applications for a long time.

Q9: If someone from the community wants to help enJine project, how can the person proceed?

Ricardo: They can contact us through the site or While we keep all development information about enJine in, the serves as a more general portal for all possible users of enJine: developers, enJine users, educators and so on.

Q10: Thanks so much for your time. Do you guys want to add something?

Ricardo: Just five years ago, academic research about game development was not taken very seriously, and there were few curricula about game design and development. It is great to see how much these things have changed in such a small time span. We hope that enJine may be helpful to the new generation of game researchers and developers in their first steps. In future versions, it may even be helpful for the development of educational games and serious games.