Подходит ли React Native для создания 2D-игры с ускорением OpenGL? - PullRequest
0 голосов
/ 05 июня 2018

Скажем, я хотел создать что-то вроде 2D-игры с боковыми скроллерами.Подойдет ли React Native с точки зрения производительности?Например, можно ли использовать для этого OpenGL-ускорение?Или это, вероятно, будет медленнее, чем просто использование WebGL и HTML5?

Еще немного исследовал и получил следующую информацию:

По-видимому, существует GLView, который содержит контекст WebGL: https://docs.expo.io/versions/latest/sdk/gl-view.html

На этой странице написано следующее:

Любая библиотека, поддерживающая WebGL, которая ожидает использования WebGLRenderingContext.Иногда такие библиотеки принимают веб-JavaScript-контекст (например, предполагающий документ).Обычно это для загрузки ресурсов или обработки событий, при этом основная логика рендеринга все еще использует только чистый WebGL.Таким образом, эти библиотеки обычно можно использовать с несколькими обходными путями.Вышеприведенные специфические для Expo интеграции включают в себя обходные пути для некоторых популярных библиотек.

Также комментарий от Twitter от Expo, в котором конкретно упоминаются «игры»:

Expo Graphics gives you the power of GL combined with Expo+React Native. It 
is the foundation for image filters, games, and special effects.

И должна быть демонстрацияздесь: https://github.com/gre/gl-react

Не так много проектов, перечисленных там, которые используют React Native для создания игры.Тем не менее, наличие контекстного интерфейса WebGL для собственного ускорения OpenGL вселяет надежду.

1 Ответ

0 голосов
/ 07 января 2019

Я использовал act-native-webgl для создания игры тральщика .Эта библиотека обеспечила прирост производительности, необходимый для рендеринга сетки ячеек 16x30 с быстрым переходом из одного состояния в другое.В некоторых обстоятельствах игра должна перерисовывать десятки или даже сотни ячеек одновременно.Стандартный рендер React Native недостаточно быстр, чтобы пользователь не заметил задержку.

Обратите внимание, что хотя Reaction-native-webgl решает проблему производительности, он требует написания низкоуровневого кода, такого как создание шейдеров, управлениевершины и т. д. И я не нашел библиотек, построенных на основе response-native-webgl, которые бы работали для моей задачи.

Так что, если вам действительно нужно или вы хотите использовать React Native для своей игры, используйтеact-native-webgl или GLView for Expo.В противном случае используйте другую технологию, например Unity.

Вы можете найти исходный код моей игры здесь .

...