Чи повинні сценарії взаємодіяти з абстракцією двигуна?


10

Я використовую Java та Jython, і після деяких досліджень я виявив, що надання скриптам прямого доступу до інтерфейсу двигуна може бути помилкою, оскільки це щільно з'єднає їх два.

Схоже, більшість сценаріїв дозволяють модам створювати та керувати об'єктами, роблячи це через певну абстракцію. Чи є ці абстракції з цієї причини, чи це просто запропонувати інтуїтивніший спосіб непрограмістів модифікувати гру?

Відповіді:


7

І те, і інше. Ваші сценарії повинні спілкуватися з абстрагованим (або принаймні проміжним) рівнем функціональності, а не з самим двигуном.

По-перше, це забезпечує додатковий рівень контролю та безпеки. Це дозволяє легко, чітко визначити інтерфейс, до якого дозволено мати сценарій у вашій грі, і, таким чином, з чим він може змуситись, а також дозволяє розмістити додаткові перевірки безпеки в проміжній пізніше, що не обов'язково буде доречним у власне функціональний шар.

По-друге, це дозволяє спростити інтерфейс, що піддається впливу сценаріїв, щоб бути більш зручним для непрограмістів або простішим у використанні загалом.

Це дійсно забезпечує трохи ізоляції від з'єднання між ними, але це часто вже не що великий угоди , тому що сценарії завжди будуть пов'язані з інтерфейсами вони можуть взаємодіяти з, за самою своєю природою. Інші два моменти набагато вигідніші.


3

Я також думаю, що це допомагає вам у випадку, якщо ви хочете внести зміни в двигун. Ви можете їх робити, не турбуючись про необхідність зміни всіх своїх сценаріїв з моменту зміни двигуна. Вам просто потрібно змінити шар абстракції, про який згадував Джош.


1

Створення шару між ядром гри та скриптами, що використовується для створення модифікацій, на мій погляд, необхідне.

За допомогою цього методу ви отримуєте кілька переваг:

Простіше для моддерів.
Важливою причиною цього є, як ви вже згадували, простіші способи виготовлення модів. Писати менше рядків коду означає більше читабельності та мінімізує розуміння проблем програмування новачків. В ідеалі цей API повинен представляти собою сукупність методів змінити щось на високому рівні гри . Це означає, наприклад: Породжуйте сутність, не знаючи, як вона насправді породжується , або не відображаючи зображення одним викликом, який приймає лише ім'я зображення як параметр.
Ви, як програміст, також отримуєте користь від цього, оскільки можете менше писати за менший час ніж потрібно Java.

Безпека: Захист
людей контролювати всю гру дуже важливо. Мені було б байдуже, якщо в грі буде назва одного гравця, але я би переймався, коли гра отримає певну багатокористувацьку дію. Навіть якщо це лише таблиця рейтингу.
Інші люди завжди розчаровані, коли хтось перемагає через обман (наприклад: зміни позиції, більш конкретно: зміна позиції та пряме обмеження прапора). Щоб запобігти цьому гравцям, це ваше головне завдання.
Майте на увазі, що шахрай завжди може декомпілювати, змінювати код, перекомпілювати та грати з цим клієнтом, тому додайте чеки на стороні сервера. Взагалі, надана "Безпека" - це лише інший, а не 100-безпечний варіант, щоб зробити життя для шахраїв складніше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.