Cannot run Sample Project at iPhone - I see only black screen

Hi,

I am trying to deploy SampleProject to iPhone device.

I configured iOS envirionment as described in the tutorial:

https://s3.amazonaws.com/gamedev-tutorials/Tutorials/Mobile_iOS-Building_a_Project-(01)_Building_iOS.pdf

and compiled game via XCode (debud profile) (and earlier by waf command in command line for profile target).

But after installation to the iPhone device the screen is blacka and I get a few errors in console like:


debug: <12:43:35> [Error] ERROR: CShaderSrv::Compile: could not connect to 192.168.2.104 (sys_net_errno=AzSockError::eASE_ENETUNREACH, retrying 0)
debug: <12:43:35> [Error] ERROR: CShaderSrv::Compile: could not connect to 192.168.2.104 (sys_net_errno=AzSockError::eASE_ENETUNREACH, retrying 0)
debug: <12:43:35> [Error] ERROR: CShaderSrv::Compile: failed to compile SunShaftsGenPS (Network Error)
debug: <12:43:35> [Error] <?xml version="1.0"?><Compile Version="2.1" JobType="Compile" Profile="ps_5_0" Program="cbuffer PER_BATCH:register(b0)

At specified machine 192.168.2.104 I have started Asset Processor and CrySCompileServer. Cache folder is shared with mac. All ports are opened.

I do not see any activity in Asset Processor and CrySCompileServer during building and deployining in XCode.

And then I have looped errors like:

	!!ASSERT!!
Condition: !resToClear->m_bStencilLoadDontCare
Message : File : /Users/Sylwek/Downloads/lumberyard-1.9.0.1-398643-mac/dev/BinTemp/uber_files/CryRenderMetal/../../../Code/CryEngine/RenderDll/XRenderD3D9/DXMETAL/Implementation/METALContext.cpp
Line : 2418debug: <12:51:59> [Error] DXGL: Resource was given MTLLoadActionDontCare stencil flag. Stencil target's view cannot be set to be cleared. : [@?] /Users/Sylwek/Downloads/lumberyard-1.9.0.1-398643-mac/dev/BinTemp/uber_files/CryRenderMetal/../../../Code/CryEngine/RenderDll/XRenderD3D9/DXMETAL/Implementation/METALContext.cpp(2421)
2017-07-24 12:51:59.507563+0200 SamplesProjectLauncher[698:170308] Execution of the command buffer was aborted due to an error during execution. Insufficient Permission (to submit GPU work from background) (IOAF code 6)
2017-07-24 12:51:59.507661+0200 SamplesProjectLauncher[698:170308] Execution of the command buffer was aborted due to an error during execution. Insufficient Permission (to submit GPU work from background) (IOAF code 6)
2017-07-24 12:51:59.507733+0200 SamplesProjectLauncher[698:170308] Execution of the command buffer was aborted due to an error during execution. Insufficient Permission (to submit GPU work from background) (IOAF code 6)
2017-07-24 12:51:59.507761+0200 SamplesProjectLauncher[698:170308] Execution of the command buffer was aborted due to an error during execution. Insufficient Permission (to submit GPU work from background) (IOAF code 6)
debug: <12:51:59> [Error] DXGL: This process does not have aceess to use device : [@?] /Users/Sylwek/Downloads/lumberyard-1.9.0.1-398643-mac/dev/BinTemp/uber_files/CryRenderMetal/../../../Code/CryEngine/RenderDll/XRenderD3D9/DXMETAL/Implementation/METALContext.cpp(2827)
autoexec.cfg has:
map Camera_Sample The mobile screen is black. Do you have any idea how to resolve it ?

Hello @jasiuj,

The problem you are experiencing is that the game running on the iPhone is unable to connect to the remote shader compiler (CrySCompileServer).

ERROR:CShaderSrv::Compile: could not connect to 192.168.2.104(sys_net_errno=AzSockError::eASE_ENETUNREACH, retrying 0)

Please verify that the firewall on the PC is setup correctly to allow the CrySCompileServer to be able to accept connections, receive and send data. Also make sure you create a config.ini file in the same directory of the CrySCompileServer executable that you are using and add an entry for the whitelist that contains the IP address of the iOS device you are using. Something like:

whitelist=192.168.2.104

You can also specify a net mask to allow a range of IP addresses to connect:

whitelist=192.168.2.0/8
or
whitelist=192.168.0.0/16

The first example will allow any device that has an IP address that starts with 192.168.2 to connect. The second example allows any device that has an IP address that starts with 192.168 to connect.

Thanks,
Chris

Hi Jasiuj,

The binding error is the remote shader compiler (CrySCompileServer) trying to connect to port 80 on the host computer and that is failing. I get the same error here when I start up the remote shader compiler and I’m able to connect to it with no problems.

In general I have found when the game cannot connect to the remote shader compiler but you can telnet/ping it then it is a firewall issue or a network connectivity issue. If you are running windows 7 I would recommend removing the CrySCompileServer from the allowed applications then running the CrySCompileServer. This should prompt you if you want to add it as an exception to the firewall and you should say yes. For Windows 10 it is a bit trickier since it does not seem to handle exceptions the same way as Windows 7. I have had to go into the Windows 10 firewall and explicitly add the CrySCompileServer to the allowed applications to give it access.

Something else to try is making sure the iOS device and the PC are on the same subnet. We have had reports from some of our internal teams that if the mobile device was on a different subnet as the PC then the mobile device would not connect to the remote shader compiler.

As for which executable to run - either is fine. One is built with VS2013 and the other with VS2015. The code is the same between the both.

Let me know how it goes.

Thanks,
Chris

Hi Chris,

We have already provided this data. So we have still the same problem.

Also I observed that Remote Shader Compiler have one warning:


Could not bind server socket
Loading shader cache from C:\Amazon\Lumberyard\1.9.0.1\dev\Tools\CrySCompileServ
er\x64\profile\Cache\Cache.dat
0 shaders loaded from cache
Creating cache backup...
Move C:\Amazon\Lumberyard\1.9.0.1\dev\Tools\CrySCompileServer\x64\profile\Cache\
Cache.bak to C:\Amazon\Lumberyard\1.9.0.1\dev\Tools\CrySCompileServer\x64\profil
e\Cache\Cache.bak2
Copy C:\Amazon\Lumberyard\1.9.0.1\dev\Tools\CrySCompileServer\x64\profile\Cache\
Cache.dat to C:\Amazon\Lumberyard\1.9.0.1\dev\Tools\CrySCompileServer\x64\profil
e\Cache\Cache.bak
Cache backup done.
caching enabled
Ready

that could not bint to server.

By I can connect it via telnet from mac computer (this IP I already provided to white list - the IP of the mac computer where xcode is lunched from where I started game at iPhone device connected by cable).

There I have in profile a two version of it:

CrySCompileServer_vc120x64.exe

CrySCompileServer_vc140x64.exe

As I understand it doesn’t netter which one I have started ? Also the game I build as debug target on mac.

Hi Chris,

Thank You very much you resolve my problem.

What I do wrong: I added and configured only MAC computer with Xcode and add it to CrySCompileServer white list instead configure it for my iPhone IOS device.

So I turn on Wi-Fi connection, set static IP for my iPhone, bridge my Wi-Fi network with my Cable Network (I have 2 independent networks), then add this IP from iPhone device to white list of CrySCompileServer and everything works perfectly.

Thank you for so fast response :slight_smile:

Kind regards,
Jan

Excellent! I’m glad you got it worked out. Continue to post questions on the Forums so that we can help you on your journey of creating an iOS game with Lumberyard!

Thanks,
Chris

Hey guys, I was just wondering if how you got past the aligned allocation issue? I’m not able to deploy the Sample Project to my device, I am getting this error “Aligned allocation function of type ‘void*(std::size_t,std::align_val_t)’ is only available on IOS 11 or newer AZStdContainers.ini”. Is this new unexpected behavior, and is there a way to bypass this?