Help us test Apple Silicon version of the editor

Hey there, we are nearing the release of the Apple Silicon version of the editor (i.e. for ARM Mac like M1, M2 etc.) that should bring significant performance improvements on macOS. Please give it a try and report if you have any issues!

You can download it using this link: https://github.com/defold/defold/releases/download/1.5.0/Defold-arm64-macos.dmg
Alternatively, you can download Defold-arm64-macos.dmg file from the 1.5.0 release page.

Some notes on extension compatibility with this editor:

  • If you use the Spine extension, you must update it to 2.11.3
  • If you use the Rive extension, you must update it to 1.4.0
  • If you use the Lua Language Server extension, you must update it to 0.0.5

Please try it out, tell us what you think, and report if you have any issues!

13 Likes

All looks good initially, regarding potential Apple-Silicon specific issues.

When building and installing an Android APK I hit a problem I’ve long had on Mac which is that the adb install step fails (whether run manually from the command line, or have the Defold bundle window do it)

I can fix that in the terminal window by specifying ADB_LIBUSB=1, but that changes the output format of adb devices, which Defold doesn’t parse correctly.

Github issue created here

3 Likes

The issue does not seem to be related to the Apple Silicon version of the editor, but thanks for reporting it anyway, the fix is on the way.

2 Likes

So far, no noticeable problems. Booting has been faster. I don’t notice much change in the speed of local builds.
The response of Atlas files with pixel art placed has improved; there is no change in the loading speed of Atlas for 4K sprite handling (still very slow).
The response time for font and particle files has improved. Overall, I think the performance has improved. Thanks for the great work! <3

Mac mini M1, 2020 16GB
macOS 13.2.1

5 Likes

No issues so far, but everything feels much snappier and responsive. :pray:

3 Likes

Oh WOW it is zippy!

Nothing to report so far, but we’ll see once I’ve finished working and can spend time with it.

3 Likes

the editor works great. but I can’t compile the project now because of using gameanalytics there.

ld: warning: ignoring file /var/folders/pf/p5g2vb2j0yx1x6vlmxdppc700000gn/T/job12467456751757099390/upload/openssl/lib/osx/libssl.a, building for macOS-arm64 but attempting to link with file built for macOS-x86_64ld: warning: ignoring file /var/folders/pf/p5g2vb2j0yx1x6vlmxdppc700000gn/T/job12467456751757099390/upload/gameanalytics/lib/osx/libcurl.a, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
Undefined symbols for architecture arm64:
  "_curl_easy_cleanup", referenced from:
      gameanalytics::http::GAHTTPApi::requestInitReturningDict(gameanalytics::http::EGAHTTPApiResponse&, rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator>&, char const*) in libGameAnalytics.a(GAHTTPApi.o)
      gameanalytics::http::GAHTTPApi::sendEventsInArray(gameanalytics::http::EGAHTTPApiResponse&, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> > const&) in libGameAnalytics.a(GAHTTPApi.o)
      std::__1::__async_assoc_state<void, std::__1::__async_func<gameanalytics::http::GAHTTPApi::sendSdkErrorEvent(gameanalytics::http::EGASdkErrorCategory, gameanalytics::http::EGASdkErrorArea, gameanalytics::http::EGASdkErrorAction, gameanalytics::http::EGASdkErrorParameter, char const*, char const*, char const*)::$_0> >::__execute() in libGameAnalytics.a(GAHTTPApi.o)
  "_curl_easy_getinfo", referenced from:
      gameanalytics::http::GAHTTPApi::requestInitReturningDict(gameanalytics::http::EGAHTTPApiResponse&, rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator>&, char const*) in libGameAnalytics.a(GAHTTPApi.o)
      gameanalytics::http::GAHTTPApi::sendEventsInArray(gameanalytics::http::EGAHTTPApiResponse&, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> > const&) in libGameAnalytics.a(GAHTTPApi.o)
      std::__1::__async_assoc_state<void, std::__1::__async_func<gameanalytics::http::GAHTTPApi::sendSdkErrorEvent(gameanalytics::http::EGASdkErrorCategory, gameanalytics::http::EGASdkErrorArea, gameanalytics::http::EGASdkErrorAction, gameanalytics::http::EGASdkErrorParameter, char const*, char const*, char const*)::$_0> >::__execute() in libGameAnalytics.a(GAHTTPApi.o)
  "_curl_easy_init", referenced from:
      gameanalytics::http::GAHTTPApi::requestInitReturningDict(gameanalytics::http::EGAHTTPApiResponse&, rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator>&, char const*) in libGameAnalytics.a(GAHTTPApi.o)
      gameanalytics::http::GAHTTPApi::sendEventsInArray(gameanalytics::http::EGAHTTPApiResponse&, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> > const&) in libGameAnalytics.a(GAHTTPApi.o)
      std::__1::__async_assoc_state<void, std::__1::__async_func<gameanalytics::http::GAHTTPApi::sendSdkErrorEvent(gameanalytics::http::EGASdkErrorCategory, gameanalytics::http::EGASdkErrorArea, gameanalytics::http::EGASdkErrorAction, gameanalytics::http::EGASdkErrorParameter, char const*, char const*, char const*)::$_0> >::__execute() in libGameAnalytics.a(GAHTTPApi.o)
  "_curl_easy_perform", referenced from:
      gameanalytics::http::GAHTTPApi::requestInitReturningDict(gameanalytics::http::EGAHTTPApiResponse&, rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator>&, char const*) in libGameAnalytics.a(GAHTTPApi.o)
      gameanalytics::http::GAHTTPApi::sendEventsInArray(gameanalytics::http::EGAHTTPApiResponse&, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> > const&) in libGameAnalytics.a(GAHTTPApi.o)
      std::__1::__async_assoc_state<void, std::__1::__async_func<gameanalytics::http::GAHTTPApi::sendSdkErrorEvent(gameanalytics::http::EGASdkErrorCategory, gameanalytics::http::EGASdkErrorArea, gameanalytics::http::EGASdkErrorAction, gameanalytics::http::EGASdkErrorParameter, char const*, char const*, char const*)::$_0> >::__execute() in libGameAnalytics.a(GAHTTPApi.o)
  "_curl_easy_setopt", referenced from:
      gameanalytics::http::GAHTTPApi::requestInitReturningDict(gameanalytics::http::EGAHTTPApiResponse&, rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator>&, char const*) in libGameAnalytics.a(GAHTTPApi.o)
      gameanalytics::http::GAHTTPApi::createRequest(void*, char const*, std::__1::vector<char, std::__1::allocator<char> > const&, bool) in libGameAnalytics.a(GAHTTPApi.o)
      gameanalytics::http::GAHTTPApi::sendEventsInArray(gameanalytics::http::EGAHTTPApiResponse&, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> > const&) in libGameAnalytics.a(GAHTTPApi.o)
      std::__1::__async_assoc_state<void, std::__1::__async_func<gameanalytics::http::GAHTTPApi::sendSdkErrorEvent(gameanalytics::http::EGASdkErrorCategory, gameanalytics::http::EGASdkErrorArea, gameanalytics::http::EGASdkErrorAction, gameanalytics::http::EGASdkErrorParameter, char const*, char const*, char const*)::$_0> >::__execute() in libGameAnalytics.a(GAHTTPApi.o)
  "_curl_easy_strerror", referenced from:
      gameanalytics::http::GAHTTPApi::requestInitReturningDict(gameanalytics::http::EGAHTTPApiResponse&, rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator>&, char const*) in libGameAnalytics.a(GAHTTPApi.o)
      gameanalytics::http::GAHTTPApi::sendEventsInArray(gameanalytics::http::EGAHTTPApiResponse&, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> > const&) in libGameAnalytics.a(GAHTTPApi.o)
      std::__1::__async_assoc_state<void, std::__1::__async_func<gameanalytics::http::GAHTTPApi::sendSdkErrorEvent(gameanalytics::http::EGASdkErrorCategory, gameanalytics::http::EGASdkErrorArea, gameanalytics::http::EGASdkErrorAction, gameanalytics::http::EGASdkErrorParameter, char const*, char const*, char const*)::$_0> >::__execute() in libGameAnalytics.a(GAHTTPApi.o)
  "_curl_global_cleanup", referenced from:
      gameanalytics::http::GAHTTPApi::~GAHTTPApi() in libGameAnalytics.a(GAHTTPApi.o)
      gameanalytics::http::GAHTTPApi::~GAHTTPApi() in libGameAnalytics.a(GAHTTPApi.o)
      gameanalytics::http::GAHTTPApi::cleanUp() in libGameAnalytics.a(GAHTTPApi.o)
  "_curl_global_init", referenced from:
      gameanalytics::http::GAHTTPApi::GAHTTPApi() in libGameAnalytics.a(GAHTTPApi.o)
      gameanalytics::http::GAHTTPApi::GAHTTPApi() in libGameAnalytics.a(GAHTTPApi.o)
      gameanalytics::http::GAHTTPApi::initInstance() in libGameAnalytics.a(GAHTTPApi.o)
  "_curl_slist_append", referenced from:
      gameanalytics::http::GAHTTPApi::createRequest(void*, char const*, std::__1::vector<char, std::__1::allocator<char> > const&, bool) in libGameAnalytics.a(GAHTTPApi.o)

The GameAnalytics extension has to be updated with ARM support for macOS. You should open a request on GitHub in that repo.

Here is an issue for that https://github.com/GameAnalytics/GA-SDK-DEFOLD/issues/40
Please add your comment to the ticket, I hope @gameanalytics will pay attention and update the extension.

3 Likes

Have been using it for 2 days on a new project.
It is fast! Opening times for the editor and projects are a third of what it used to take with Rosetta emulation.It is faster than my Intel mac for sure as well. Not sure how it compares to Windows machines.

I haven’t encountered any issue or bug so far. I have DefOs and it seems to compile and work just fine.

I want to test my released game since I have also to update it to a new version. That is a bit more involved. Will report back if anything goes bad.

5 Likes