---
title: "Sgold interviews Adi Barda"
date: 2021-03-11T18:00:00+00:00
draft: false
type: "default"
layout: "post_layout_default"
enable_comments: true

authors:
    - "stephengold"

tags:
    - "interview"
    - "blog"
    - "misc"
---

{{< ghuser  user="stephengold" mode="inline" >}}
When, where, and how did you first become aware of JMonkeyEngine?
What got you interested in using it?


{{< ghuser  user="SceneMax3D" mode="inline" >}}
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](https://www.youtube.com/watch?v=bMMLJF7GIH4)


{{< ghuser  user="stephengold" mode="inline" >}}
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?


{{< ghuser  user="SceneMax3D" mode="inline" >}}
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.


{{< ghuser  user="stephengold" mode="inline" >}}
Has SceneMax evolved over the years?


{{< ghuser  user="SceneMax3D" mode="inline" >}}
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!


{{< ghuser  user="stephengold" mode="inline" >}}
What distinguishes SceneMax3D from other languages?


{{< ghuser  user="SceneMax3D" mode="inline" >}}
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!


{{< ghuser  user="stephengold" mode="inline" >}}
Thanks for that answer and for the code samples.

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


{{< ghuser  user="SceneMax3D" mode="inline" >}}
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.


{{< ghuser  user="stephengold" mode="inline" >}}
Why extend SceneMax projects using C# instead of Java?


{{< ghuser  user="SceneMax3D" mode="inline" >}}
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.


{{< ghuser  user="stephengold" mode="inline" >}}
Are you planning any other updates or additions to SceneMax3D?


{{< ghuser  user="SceneMax3D" mode="inline" >}}
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


{{< ghuser  user="stephengold" mode="inline" >}}
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.
