iPhone4S revisited

Hey guys,

Today I’ve build my old project,

and I get a black screen.

So I’ve changed it back to the last build which was on Sept 8th, 2021 of this year.

Any idea why this is happening. I actually noticed it happen also on my public testing project
https://playcanvas.com/project/842692/overview/testing

does it happen on newer apple devices as well or only 4S?

Might be related to the use of the Basis WASM module.

If you need to use texture compression on an older device, remove the basis compression on the textures (untick Basis and ‘compress’) and compress with legacy options.

I tried @yaustar suggestion but it didn’t work. This issue persists for Playcanvas’ default project, without any materials on the primitive objects. I’ve created a new ticket here:

1 Like

I’m not sure, I don’t have a newer iPhone.

Below the results on my iPhone 12 Pro with iOS 15.

1 Like

Yes that is what you should be seeing :stuck_out_tongue: it’s temporary assets but at least we know it’s a new issue on iPhone4S that wasn’t there on Sept 8th of this year

Unfortunately, we don’t have an iPhone 4S on hand nor can I create a simulator device for it as it requires us to be on Mojave OSX

iPhone 5S seems to be fine however.

Can you get any console logs from the browser devtools via Safari? That will help us narrow down the issue

Send me an address to send you an iPhone4S (free of charge)

I will try to send console logs when (and if) I am able, I havn’t tried that before.

Can you try this build please of a project: https://playcanv.as/e/p/tWgNW0ao/

Also, what version of iOS is the iPhone 4S on?

No, it didn’t work

ios 8.4.1

It shows the PC loading screen fine, but once the loading screen is removed, screen becomes black

Looks like we introduced a change that broke support for iOS 8.

Going forward, we aren’t sure if we still want to support older versions of iOS as they are very old now.

The short term workaround is to update the devices to iOS 9.

If you are self hosting the build, you can replace the engine with an older version. Go https://code.playcanvas.com/playcanvas-1.47.2.min.js and replace the version number with the one that you would like to use.

Releases for the version numbers can be found here: https://github.com/playcanvas/engine/releases

If Sept worked for you, try version 1.46.0 or before.

Ok, that’s the short workaround. But can you give me a long-term solution when or if you stop supporting iOS 9.

Like, what do I need to do in terms of setting up a playcanvas engine locally on my computer so that I can continue working on my project for iPhone 4S. Are you guys planning on releasing at least the legacy PC editor for those that have paid you guys all these years for your service? I mean I don’t plan on developing for devices newer than iPhone 4S precisely because the market will have that phone as the cheapest to purchase in bulk for me to distribute our game

It’s less about the device and more about iOS versions.

In general, we don’t support legacy engine versions and tend to focus on supporting a minimum OS version as outlined here: Introduction | Learn PlayCanvas

The fact that it doesn’t run on iOS 8 is a bug that we need to investigate and evaluate if we should fix it without affecting forward features given that a 10 year old iPhone 4S does support iOS 9.

Arguably at some point, we may stop support a particular version but even for iOS 8, that’s 7 years old now.

There are currently no short term plans on releasing an offline Editor or keeping a version running that supports older versions of the engine.

This is tricky as it is possible that the Editor may change the data format to support the latest versions of the Engine.

In theory, as long as the project is not using any new features beyond an Engine version, you can still use that Engine version going forward. However, we cannot promise that to be true all the time.

Eg here’s a project using old features running against an old version of the Engine: https://launch.playcanvas.com/440156?debug=true&use_local_engine=https://code.playcanvas.com/playcanvas-1.0.0.js

In your situation, what I would do is keep archives of published builds that have unminified code. That way, at the very least you could edit code in __game-scripts.js and change scene by hand.

It’s not a great solution but this has been the only case where such an old device and iOS version needs to be support by a developer that I’ve had.

Here’s a little update. iOS 8 support broke because the engine code was updated to iterate the contents of a Set object. You can see here that this was only supported from iOS 9 onwards:

https://caniuse.com/mdn-javascript_builtins_set_--iterator

We’ll apply a fix tomorrow and the next engine release will resolve the problem. So absolutely no need for a ‘legacy editor’!

Thanks for bringing this to our attention!! :grinning_face_with_smiling_eyes:

1 Like

Thank-you so much Will, my prayers were answered :slight_smile:

1 Like

Thanks Yaustar I will look into your suggestion as precautionary measures for worst-case scenario moving forward.