Скажімо, у мене гра, написана на C ++. Але я хочу додати до нього деяку функціональність модифікації чи сценаріїв. Як би ви могли додавати сценарій функціональності до вашої гри?
Скажімо, у мене гра, написана на C ++. Але я хочу додати до нього деяку функціональність модифікації чи сценаріїв. Як би ви могли додавати сценарій функціональності до вашої гри?
Відповіді:
Перш за все, ви повинні вирішити, яка частина вашої гри написана. Один із варіантів - мати повністю скриптовану гру в тому сенсі, що хоча критичні для часу операції з резервного копіювання кодуються в C ++, вся логіка гри знаходиться на мові сценаріїв. Дизайнери використовують бекенд як API, викликаний із мови сценаріїв високого рівня. З іншого боку, у вас можуть бути декілька конкретних місць, де використовуються сценарії, такі як користувальницький інтерфейс або сценарії послідовностей, при цьому більшість ігрових кодів все ще знаходяться на C ++. У кожного підходу є переваги (швидкість, гнучкість, час складання, масштаб гри тощо), але це потрібно вирішити заздалегідь.
Як тільки ви дізнаєтесь, як ви хочете використовувати сценарій, вам тепер потрібно вирішити, чи збираєтесь ви використовувати існуючу мову сценаріїв або вашу власну мову, що стосується домену . Сьогодні існує багато мов сценаріїв на вибір з різними цілями дизайну та цільовою аудиторією, тому я не впевнений, чи варто вже створювати власну. Якщо ви вирішили реалізувати власні, ось деякі ресурси:
Lua - популярний легкий і легкий для вставки мову сценаріїв. Він використовує стек для зв'язку між хостом і вбудованою мовою, і його успішно застосовують у багатьох професійних іграх . Sol2 спрощує процес зв’язування Lua і C ++. Якщо ви не любите синтаксис Луа, Moonscript - це мова, яка компілюється в Lua і додає приємний набір функцій.
До інших варіантів можна віднести AngelCode , який дозволяє безпосередньо викликати функції C і C ++. Python та Ruby трохи складніші для вбудовування, але їх дуже приємно програмувати. Якщо ви хочете вставити Python, тоді подивіться на Boost.Python . Ще одна ідея - вбудувати JavaScript, щоб скористатися швидкими движками сценаріїв, розробленими для браузерів (див. V8 та SpiderMonkey ).
Я написав повідомлення про вбудовуванні GameMonkey сценарію до гри з допомогою DragonFire SDK тут .
В основному ідея полягає в тому, щоб викрити свої функції C \ C ++ вибраній мовою сценаріїв і використовувати їх у своєму сценарії. У своєму підручнику я відкрив 2 функції від DragonFire SDK. При запуску гри я закликаю функцію onStart зі скрипту, а при оновленні - запускаю функцію onTimer із скрипту.
Сподіваюся, що це допомагає!