Weekly Check-in #3

Published: 06/17/2019


Welcome to my third weekly check-in. I got a lot done over the past week, so let's talk about it.

During the first part of the week, I spent a large amount of my time attempting to wrangle the Python interpreter into actually running inside an iOS app. During the build process, Python generates a sysconfig file that contains variables that were used during the build that may be useful to Python later on. Unfortunately, this generation cannot happen on iOS easily, since it requires an arm64 device to actually run on. The solution to this ended up being to generate this sysconfig file in the Simulator, and make some changes to it manually for the Device version. This works well enough, and I haven't run into any issues with it yet, but we'll see.

The second half of this week, I turned towards brainstorming about how to adapt Panda's startup process to the iOS app lifecycle. Up until this point, Panda has been a game engine that runs exclusively on desktops, and as such, it is used to having complete control over the application lifecycle. Things work a bit differently on iOS (and Android!), however, which will require me to make some changes with how Panda handles it. Coming up with a formal design for this will be one of my primary tasks for this coming week.

Along with this, I am going to try and come up with a way to get Panda along with the Python interpreter to run in a separate thread entirely from the main UI thread. This will make it so I will have to make fewer changes to Panda in order for the UI thread to get the time it needs. I plan on publishing a more detailed write-up about how I will accomplish this soon.

That's all I have for this week. See you next time!

View Blog Post

Weekly Check-in #2

Published: 06/10/2019

Hello again!

With the second week of work wrapping up, I believe an update is in order. I have successfully gotten both the thirdparty tools and Panda itself to compile for both iOS devices and the simulator. It was a bit of a slog getting this to work, to be honest, since it's mainly a loop of trial and error trying to get things to fit together correctly. The following libraries are now ready for inclusion on iOS:

  • ARToolkit
  • Bullet
  • Eigen
  • FFMpeg
  • Freetype
  • Harfbuzz
  • JPEG
  • ODE
  • OpenSSL
  • Opus
  • PNG
  • Python
  • Squish
  • TIFF
  • Vorbis
  • ZLib

This leaves only a few libraries that aren't working (and are probably impractical for iOS anyways, like VRPN). I'm quite happy with this, because although I was able to get Panda itself to compile several months ago, this is the first time I have done it with almost all of the thirdparty libraries included. It has been quite a struggle wrangling with the often strange ways Apple does things, but I believe this thorough preparation I've performed will be worth it down the road.

This post comes at an odd time, admittedly, since these next two weeks are where the real meat of the work is going to start. But, posts are required every two weeks, so here it is. Hopefully the work going forward will be a bit more exciting for people to read about, and won't involve me waiting for rebuilds for nearly as long ;)

View Blog Post

Weekly Check-in #1

Published: 06/02/2019

What did you do this week?

This week, I got the cross-compilation toolchain up and running. Now all of Panda3D’s requisite libraries, including Python, can be compiled for iOS devices with just one command.
What is coming up next?

Next week, I will be getting the engine itself to compile for iOS. I’ve already gotten this semi-working before, so this shouldn’t be too monumental of a task.
Did you get stuck anywhere?

I got stuck several times while wrangling with various autotools scripts, which needed to interact with the CMake script used to download and compile everything. With enough trial and error, I was able to solve all of the issues I ran into.

View Blog Post


Published: 05/28/2019

Hello to everyone who stumbles upon this post! I'm going to be working on iOS support for the Panda3D game engine. During the community bonding period, I worked on porting the manual to a Sphinx website hosted on Read The Docs. Work on the port is pretty much finished; there just needs to be a bit of proofreading and jankiness-fixing. For this first week, I will be working on getting Panda's thirdparty libraries to compile successfully on iOS.

See you next week!

View Blog Post