interview-adibarda.md 6.1 KB


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

{{< 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.