Give Kids the World Project

Miracle Workshop

ProducerDustin Stephan

Animator: Niharika Jain

Programmer/ Pipeline Engineer: Atul Goel (Me)

Electrical EngineerJoshua Danzig

Experience Designer: Raisa Chowdhury

Mechanical Engineer: Alexandra Gobeler

Duration: 16 weeks

Our project was to revitalize an existing mechanized puppet at Give Kids the World Village in Florida and turn it into a show for kids. My role ranged from designing the animation pipeline to making sure that every piece of hardware can talk to each other as Network Programmer.

This is Tom after installation:


Problem Statement

Give Kids The World Village is a nonprofit resort in Kissimmee, Florida for children with life-threatening illnesses and their families. They had a character in ‘Castle of Miracles’ in the village which wasn’t being used for two primary reasons. First, the access to the puppet was through an attic over a moving carousel ride, which was unsafe for volunteers. Second, since the organization is primarily volunteer-based, no one had the skills to operate a puppet made for professional use.


This was originally one academic semester-long project, but two-thirds into the semester, we decided to extend the project to two semester. The scope of the project was a big question mark for everyone since the start. This was the first project of its kind.

I was part of the project for the first semester designing pipelines for animations as well as communication between the hardware. I also created the UI for the interface that can be used by anyone with less than 5 minutes of training. The controller was written in JavaFX because of its robustness. I also participated in regular playtests with children and public to further tweak the UI for ease of use.

My role

My role at the start of the project was very vague at the start. This wasn’t even close to what I had worked on previously. So I spent the initial month acquiring knowledge on what we are dealing with. Josh Danzig from my team had previously worked on show-controller systems and was extremely valuable in the learning process.

We went through a lot of iterations. One of our test pipelines included trying to record movements from two joysticks. This never made it to the end because it was impossible to get fine control over the movement. Nevertheless, it was a lot of fun. Here’s one video.

As soon as I had a good idea of what we are dealing with, I started making prototypes for network diagrams. As a team, we weren’t sure of which component goes where, but a basic network diagram gave us a base to work on. I spent a great amount of time building and correcting the diagram. Constant consultation with the college IT department and external vendors helped us navigate the right path. At the end of Week 10, we had a pretty solid understanding of which component goes where and serves what purpose. Most individual components had been tested and work fine. Bringing all of them together was when things started to get difficult.

Since I was the only programmer on the team, it was up to me to figure out the programming pipeline and design animation pipeline with the animation department. With some help from Weigl, we were able to nail it down perfectly.


This was one of the initial diagrams I designed with Josh Danzig. This diagram wasn’t perfect but it gave us a solid foundation to work on. Before this, we were talking about hypotheticals and where it could be. I feel designing this was a very important step in our development process.

Next thing we had to work on was the design and animation pipelines. Initially, we decided that Josh will handle the design pipeline and I’ll handle the animation pipeline with rest of the team, but we soon realized that most of it was dependent on each other. Following was the pipeline that for our project; it gets somewhat complex, so bear with me.

  1. The physical design for animatronic were made in Solidworks.
  2. A similar working model was made in Maya
  3. The position of motors and mechanism are replicated in the Maya model
  4. Animations are made in Maya using blend shapes
  5. The animation in the *.fbx file are extracted by proprietary software into a *.csv format.
  6. The *.csv file is passed through a normalizer program(custom codein JAVA) that checks it for odd values and normalizes them for our use.
  7. It is then imported into Conductor pro and further cleaned.
  8. Individual CSV files for every motor are joined together and synced with dialogues and made into a show file.
  9. Each show file is then stored in the show controller with a unique ID.
  10. The touch interface (made in JAVA) sends a ASCII command over Ethernet to enable the show associated with the unique ID.

Since this process hasn’t been done before, it took us quite some time to get it right to come up with a pipeline that suited our timeline and requirement. A more detailed view of our animation pipeline has been described by our animator Niharika Jain here: Animations on Tom

What I learnt?

I was never a fan of the hardware side of technology because I never understood it. This project introduced me to that side and I found out that it is incredibly fun and challenging at the same time. I also learned how to work with a very diverse team. It is a great project, and I am glad I selected this project. I fell in love with the hardware side.

If you have any questions in terms of Show Controllers or design decisions that we made, feel free to reach out!