jMonkeyEngine is a modern developer friendly game engine written primarily in Java.
Its minimalistic and code first approach makes it perfect for developers who want the support of a game engine while retaining full control over their code with the ability to extend and adapt the engine to their workflow.




Lightspeed Frontier powered by jMonkeyEngine

Leave everything behind and try your hand at captaining a ship on the frontier of the galaxy. Customize it piece by piece to tackle whatever adventures await you. Take on crime lords and space pirates …
See game page

- -
Become a backer and leave a message...

Sgold interviews Adi Barda

stephengold


When, where, and how did you first become aware of JMonkeyEngine?
What got you interested in using it?

SceneMax3D


Back in 2018, I decided to create a 3-D animation development environment
that would run on Android devices.
I went looking for a 3-D Java library
that could be used in Android applications,
and JME was the only one I found that had a “code first” approach.
This was important to me
because I needed to be able to create scene graphs from code,
without relying on a visual editor.
In addition, the on-line forum was very responsive.
It looked like a good choice for my project.

In the end, an Android-based development environment
was released to the Play Store, and it worked fine!

YouTube video: Simulating gravitation forces using variables

stephengold


Congratulations on getting your project to the Play Store.
Not all Android projects make it that far!

That video refers to the SceneMax Scripting Language
and (briefly) displays what looks like a sample of it.
What is SceneMax, and how did it come to exist?

SceneMax3D


As a kid, I was obsessed
with creating imaginary worlds and pouring life into them.
I used to write animations and games on my Commodore 64,
using Microsoft Basic and 6502 Assembler.
That was the only software-engineering education I have ever had,
and in 1999 it was enough to get a programming job—
after catching up on a few modern technologies
such as VB 6, C++, and SQL.

Grateful for the tools that helped me launch my programming career,
I decided in 2005 to create programming language that would encourage
young kids to create games and become programmers.
SceneMax was born.

stephengold


Has SceneMax evolved over the years?

SceneMax3D


Originally it was an open-source project in C++,
using DirectX for the rendering.
Parsing was done using the strtok() function (no regex!)
so the syntax was limited.

It was an immediate success, with tens of thousands of downloads,
and it won first place in an open-source competition.
More importantly, I used it to teach kids programming.
My vision became a reality.

SceneMax got a few updates before reaching end of life in 2014.
In 2018, I rewrote it from scratch, targeting Android devices.
I used using Java, ANTLR4 for parsing, and JME for rendering.
I started teaching kids with Android devices.

When I sold an online course to the Israeli Ministry of Education,
they conditioned it on having a PC version,
so I devoted my time to building a new development environment for PCs
and porting the JME renderer to run on Windows.

The port proved surprisingly easy. It just worked!

stephengold


What distinguishes SceneMax3D from other languages?

SceneMax3D


General programming languages such as Java, C++, and C#
aren’t suited to teaching young kids to code.
It’s difficult for these kids
(non-native English speakers, ten-to-twelve years old)
to write interesting programs such as games.
With simple code, they can only create boring programs.

SceneMax3D fills that gap;
it enables kids to write amazing animations and games
in language that is very simple and intuitive.
Later, when they feel comfortable with their coding skills,
they can begin adding C# code to their projects.

Here are a few simple code snippets:

d is a dragon
d.fly loop
d.turn left 360 in 10 seconds


t is a static track
car is a gtr_nismo vehicle : pos (0,3,0)
camera.chase car


skybox.show solar system
s is a sinbad
s.Dance then SliceVertical loop
b is a box : pos(4,-1,-20) and size (3,5,2) and material="pond"
b.turn left 360 in 10 seconds async
b.move to (s) + 5 in 10 seconds async
when b collides with s do
  sys.print "BOOM"
  s.move left 5 in 10 seconds
end do
when key R is pressed do
  s.move right 1 in 0.1 seconds
end do

It’s simple, generates attractive animations, and kids just love it!

stephengold


Thanks for that answer and for the code samples.

If someone wants to teach coding to children younger than ten,
what would you advise?

SceneMax3D


I’d advise a block-based computational thinking course
using software such as Alice, Tynker, Scratch, Minecraft web, or Roblox.

SceneMax3D has an option for adding smart macros,
so that teachers and other companies can add syntax
in the language of their target audience.
In this way, even first- or second-graders can start coding.

stephengold


Why extend SceneMax projects using C# instead of Java?

SceneMax3D


C# was chosen because it is used
in the curriculum of the Israeli educational system
and in other game engines such as Unity and Godot.
I plan to add support for Java and JavaScript extensions in the future.

stephengold


Are you planning any other updates or additions to SceneMax3D?

SceneMax3D


There are currently two white-label commercial products based on SceneMax3D.
One is gaining speed and looks promising,
so I’m focussing on features that will help it succeed:

  • improving the overall quality of the product
  • virtual classroom support to make teaching even easier
  • deployment to the Web and Android devices
  • real-time networking support
  • WooCommerce integration to allow artists to create and sell graphics and music packages for SceneMax3D

stephengold


SceneMax3D is a very impressive project!

I’ve run out of questions.
Thank you very much for your detailed answers
and the thought you put into them.

Comments