"Unity, Godot или мой собствен... Заметка
DEV Community на русском

"Unity, Godot или мой собственный движок? Почему мои карточные игры написаны на TypeScript" опубликовано: false теги: gamedev, reactnative, typescript, showdev

Автор решил создать приложение для карточных игр Decks, разработав собственный движок, а не используя готовые игровые движки, такие как Unity или Godot. Такой подход был выбран, поскольку целью было разместить множество карточных игр на одной платформе, что достигается путем определения игр в виде JSON-документов, интерпретируемых центральным движком. Прототип на Godot оказался слишком громоздким и медленным, и автор обнаружил, что рендеринг карточных игр по своей сути прост и не требует сложного 3D-движка. Основная часть проекта, правила игры, должна была быть легко тестируемой и независимой от системы рендеринга.Выбранный стек состоит из пакета game-core на чистом TypeScript, дизайн-токенов и мобильного приложения, созданного с использованием Expo, React Native и React Native Skia. Ключевым преимуществом является game-core без зависимостей, что позволяет ему работать как в Node.js, так и на мобильных устройствах, облегчая обширное тестирование и воспроизводимое исправление ошибок с помощью сидов. Правила определяются как данные, что обеспечивает гибкость и поддержку таких функций, как подсказки и ИИ-боты, без использования eval. Использование TypeScript во всем проекте упрощает разработку и тестирование.Нативные элементы пользовательского интерфейса, управляемые React Native, обеспечивают доступность и отзывчивость, в то время как сам игровой стол рендерится с помощью Skia. Лицевые стороны карт генерируются динамически, что способствует небольшому размеру приложения. Однако создание собственного движка сопряжено со значительными затратами, включая ответственность за тестирование попаданий, оптимизацию частоты кадров и управление нативными зависимостями. Общность языка правил также может привести к многословным определениям данных. Несмотря на трудности, особенно при работе с сенсорными жестами и производительностью, автор счел подход с собственным движком в конечном итоге полезным благодаря его гибкости и расширяемости. Планы на будущее включают добавление игр для двух игроков и большего количества вариаций пасьянса.