2

Minha primeira contribuição para a Raylib

Recentemente abri uma Pull Request adicionando suporte experimental a iOS(a única plataforma que não tinha suporte) na raylib

O ponto mais interessante da implementação foi adaptar o modelo clássico de game loop usado em desktop para a arquitetura orientada a lifecycle/callbacks do iOS.

Em plataformas desktop, engines normalmente controlam completamente a execução da aplicação:

// initialzation + resources

while (!WindowShouldClose())
{
   // update + draw 
}

// cleanup + shutdown

No iOS, esse modelo não funciona da mesma forma.

A aplicação é controlada pelo UIKit/UIApplication, onde o sistema operacional gerencia o lifecycle, eventos, scenes/views e o próprio render scheduling. Ou seja: a plataforma “possui” o loop principal, essa implementação exigiu criar uma camada de compatibilidade para preservar a experiência tradicional da API da Raylib enquanto a execução real acontece dentro da infraestrutura do iOS.

Alguns pontos envolvidos:

• adaptação da main() tradicional para o modelo esperado pelo UIKit
• integração com UIApplication lifecycle
• gerenciamento de render/update callbacks
• sincronização com o frame scheduling do sistema
• suporte para simulator + physical devices
• ajustes de platform layer/window handling

Foi uma experiência muito interessante trabalhando com arquitetura cross-platform, runtime lifecycle e diferenças fundamentais entre desktop/game loops e plataformas mobile modernas.

Apesar de ainda ser uma POC experimental e existirem problemas arquiteturais em discussão na PR entre o modelo de execução desktop e o lifecycle do iOS,
o processo tem sido muito interessante do ponto de vista deo runtime lifecycle e cross-platform.

Linkedin: https://www.linkedin.com/posts/vsaint1_opensource-raylib-ios-activity-7464683536474722304-HJsp?utm_source=share&utm_medium=member_desktop&rcm=ACoAADuvGfMBlIIsYsKIO1WsO0lrlzARjIHC2WI

Carregando publicação patrocinada...