Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество
Главная
    Документация jMonkeyEngine
        jMonkeyEngine Уроки и Документация
            Сценарии(Скрипты) в JME3 с Groovy. Все об этом!

Сценарии(Скрипты) в JME3 с Groovy. Все об этом!

Опубликованно: 03.06.2017, 20:05
Последняя редакция, Andry: 29.10.2017 11:48

Обезьянки,

Для тех, кто все еще просит что-то вроде «Сценариев(Скриптов)» в JME3, вот они!

Мы почти достигли 3,0, я очень взволнован и хочу что-нибудь написать об этом. Этот пост будет хорошим обзором возможностей так что вы сможете пройти путь от полного Нуля до Героя с Groovy и Monkey. Без шуток!

😄
Быстрый вопрос: Это связано с моими другими tuts 😩?
Atomixtuts Ответ: Как я уже писал другим, я думаю что я должен написать об этом первым, потому что, если никто не знает о Groovy, то никто не сможет понять ни одной строки моего кода 😩, и это плохо!

Введение:

Мы пойдём от базовой настройки Groovy в JMP, и затем к примеру где рассмотрим каждый игровой аспект, который вы можете развивать с помощью Groovy. Более сложные темы будут в конце, например: способ получить лучшую производительность Java, метапрограммирование, множество шаблонов проектирования (PP), даже AI и программирование в ограничениях … Звучит безумно? Нах ах…

Дайте мне знать, хотите ли вы писать или читать другие уроки по Groovy или Сценариям. Благодарю!

Давайте начнем!


Содержание:

  1. НАЧНЕМ
  2. ИЗУЧЕНИЕ GROOVY
    1. Синтаксис и Gotchas
    2. Мета-программирование
    3. Groovy Builder — SwingBuilder
    4. Groovy — для умных
    5. GPars
  3. EMBED GROOVY
    1. Groovy в JME3
    2. Groovy в JMP
    3. Groovy везде (фрагменты)
  4. В ИГРЕ
    1. Базовые Сценарии
    2. Событие — Trigger Manager
    3. Конфигурации с Groovy
    4. AI Tricks с Groovy
    5. Сборка Сценариев с Groovy
  5. ШАБЛОН ПРОЕКТА В GROOVY ИГРЕ(WIP)
  6. ДОПОЛНИТЕЛЬНЫЕ ТРЮКИ
    1. Взломайте JVM с помощью Groovy
    2. Codegen
    3. Groovy –Всемогущий Бог!

НАЧНЕМ

Если вы уже знакомы с Groovy и просто интересуетесь, как интегрировать Groovy в JME3. Тогда вы можете перейти прямо к части Part scripting

ЧТО ТАКОЕ GROOVY?

Groovy…

Является гибким и динамичным языком для виртуальной машины Java, основанный на сильных сторонах Java, но обладает дополнительными мощными возможностями таких языков как Python, Ruby и Smalltalk

Официальный сайт: http://groovy-lang.org

Основные моменты

Самые короткие из них можно найти здесь: Википедия Groovy

  • Большинство допустимых Java файлов также являются допустимыми Groovy файлами. Хоть оба языка и похожи, код Groovy может быть более компактным, поскольку он не требует всех элементов, которые требуется Java. Это позволяет программистам Java начинать постепенно изучать Groovy, со знакомого синтаксиса Java, не углубляясь сразу же сильно в идиомы Groovy.
  • Функции Groovy, недоступные в Java, включают в себя как статическую, так и динамическую типизацию (с ключевым словом def), закрытие, перегрузку оператора, собственный синтаксис для списков и ассоциативных массивов (maps), встроенную поддержку регулярных выражений, полиморфную итерацию, встроенные выражения внутри строк, дополнительные Вспомогательные методы и SNO оператор»?. Для автоматической проверки нулей (например, «“variable?.method(), или “variable?.field»).
  • Начиная с версии 2 Groovy также поддерживает модульность, имея возможность поставлять только необходимые jar-вы в соответствии с потребностями проекта, тем самым уменьшая размер библиотек groovy, проверку типов, статическую компиляцию, улучшенные синтаксические улучшения Project Coin, многоканальные блоки и постоянные улучшения производительности с использованием JDK7’s вызов динамических инструкций.
  • Groovy предоставляет встроенную поддержку различных языков разметки, таких как XML и HTML, которые выполняются с помощью встроенного синтаксиса DOM. Эта функция позволяет определять и манипулировать многими типами гетерогенных данных с единым и сжатым синтаксисом и методологией программирования. [Править]
  • В отличие от Java, исходный код Groovy может быть выполнен как (нескомпилированный) скрипт, если он содержит код вне любого определения класса, является классом с основным методом или является Runnable или GroovyTestCase. Скрипт Groovy полностью анализируется, компилируется и генерируется перед исполнением (аналогично Perl и Ruby). (Это происходит под капотом, а скомпилированная версия не сохраняется как артефакт процесса.)

УСТАНОВКА GROOVY?

Если вы использовали JMP для кодирования вашей игры (я не знаю о пользователях Eclipse, извините). Перейдите в Центр обновлений, чтобы установить плагин Groovy, а затем загрузите последний Groovy (ver2.1) и оберните его как библиотеку. Вы готовы к приключениям!

http://groovy.codehaus.org/Download?nc

ЧТО МОЖЕТ БЫТЬ СЦЕНАРИЕМ(СКРИПТОМ)

* Или «ЗАПРЕЩАЕТСЯ ИЛИ НЕ СКАЗАТЬ, ПРОБЛЕМА»? *

Все. Вы можете делать почти все с Groovy, как с Java.

В этом посте я покажу пример на примере каждого аспекта игры, который вы можете развить с Groovy.

* Плюсы: *

  • Сценарии — очень распространенный и интуитивно понятный способ программирования игры. Это обычное дело, потому что оно короче, чище, легко читается, поддерживается и повторно используется.
  • Groovy молод, но развит очень талантливыми людьми, много преданных участников.
  • Web и Enterprise в ваших руках. Когда-либо слышал о Grails http://grails.org/?
  • Многочисленные дополнения для Java. Бог-как в Swing, ORM, XML …
  • В последнее время производительность улучшилась: если вы беспокоитесь о производительности, в следующей версии она может даже дойти до скорости Java и вскоре стать очень конкурентным противником Scala! Прочитай это? http://java.dzone.com/articles/groovy-20-performance-compared

* Минусы: * Это хорошо, но как насчет нисходящей стороны?

  • Пока не удается запустить Android.
  • Некоторые вещи могут быть ошибочными, если не заметили, появились во время выполнения, как и каждый язык сценариев
  • Еще проблема с производительностью.

КОГДА ИСПОЛЬЗОВАТЬ СЦЕНАРИИ:

Некоторые очевидные, но всегда существующие проблемы сценариев.

Сначала каждый язык сценариев получал такую же безопасную для типа дилемму. Если вы вкладываете слишком много средств в Scripting, вы сразу же попадаете в беспорядок, что скрытые ошибки, которые всегда очень трудно найти, отображаются только во время выполнения. Баланс между преимуществами и чертой скриптов тонкий. Утиная печать не всегда беспроигрышная.

Небезопасный

Поскольку Groovy поддерживает Duck-typing, почти невозможно узнать тип, методы объекта, который вы хотите использовать. Это можно улучшить, если вы находитесь в статическом режиме, но этот режим просто не то, что мы действительно хотим с помощью Scripting?

Итак, поскольку вопрос был задан членом форума:

Хех. Мне бы очень хотелось, чтобы сам Groovy, но мне было очень сложно изучить набор методов, которые передал объект-поддержка.

Ответ:

По моему опыту, просто спросите себя, как «естественный» код кодируется, в смысле ООП:

Chicken.eat (рис) Вы знаете, какие методы и их тип параметра и имя.

Monkey.eat (банан) Вы знаете, что общего в классах в пакете. Без знания наследования и интерфейса они реализовали.

Human.eat ([цыпленок, рис, банан]). Вы можете догадаться, что человек происходит от Monkey, а код кодируется гибким, ex: методы — это многотипные, необязательные параметры. и т.д…

Если у него есть этот уровень «естественного» смысла, вам не обязательно учиться наизусть, поэтому используйте сценарии в ситуации.

С другой стороны, это очень связано с поддержкой IDE для такого языка. Если вы внимательно посмотрите, Groovy получит лучшую поддержку в Netbean:

https://blogs.oracle.com/netbeansgroovy/entry/groovy_refactoring_in_netbeans

ЗАМЕТКА:

  • Вы можете использовать GROOVY для Java как Lua для C ++ (даже намного лучше)
  • Вы можете заставить GROOVY работать как FAST как Java
  • Вы можете позволить GROOVY легко интегрироваться с Java и другими языками JVM.
  • И последнее, но не менее важное: Groovy надерет задницы! :п

ИЗУЧЕНИЕ GROOVY

Если вы уже знаете о Groovy и просто интересуетесь, как интегрировать Groovy в JME3. Перейдите прямо к Part scripting

Во-первых, Groovy намного короче — чище, чем Java. Он легко превращает Java в мир функциональных программ, таких как Python, Haskell и т. Д., Но при этом разработчик Java чувствует себя как дома. Вы можете читать гораздо больше на сайте Groovy и в Интернете, поэтому я не буду взорвать его.

В любом случае, давайте изучим синтаксис Groovy, я уверен, вы сможете освоить его через 3 часа!

СДЕЛАЙ groovy_learn

Groovy — для умных

Emoji: * Итак, что вы можете сделать с Groovy? * Emoji: все, даже заложите! смайлики: open_mouth

Я имею в виду использовать ваше воображение. Я приведу несколько примеров:

  • Закрепление процесса сборки
  • Заменить почти конфигурацию
  • Извлечение информации из XML и текста, веб …
  • Преобразование RenderMonkey, шейдеры FXComposer
  • Скрипт Диалог, Кинематографический, …
  • Сделайте In-Game Editor, плагины JMP
  • Сделать всю фальшивую игру
  • Даже кормите своих собак …

То, что я хочу сказать, это Groovy для умных, овладеть им, и это избавит вас от больших ошибок! Java и Groovy — самое сладкое сочетание языков программирования, которые я когда-либо пробовал около десятка других.

Некоторые из приведенных выше примеров будут включены в этот пост или в мой проект AtomScript!

Официальные примеры и другие

Вот некоторые веб-сайты, на которых вы можете найти множество примеров из простых и сложных задач:

http://groovy.codehaus.org/Cookbook+Examples

http://www.groovyexamples.org/

http://snipplr.com/all/language/groovy

http://rosettacode.org/wiki/Rosetta_Code ⇐ Изучите Groovy и java, если вы пришли с других языков программирования.

GPars

Если вы уже знаете Groovy, я рекомендую попробовать GPars! Параллельные системы Groovy. Зачем? Потому что это # $ kin потрясающе, вот почему? Каждый умный обезьяна и разработчик Java должны знать об этом, создавать приложения и игры!

Структура GPars предлагает разработчикам Java интуитивно понятные и безопасные способы одновременного решения задач Java или Groovy. Используя огромную гибкость языка программирования Groovy и основываясь на проверенных Java-технологиях, мы стремимся сделать параллельное программирование для многоядерного оборудования интуитивно понятным, надежным и приятным.

http://gpars.codehaus.org/

Я объясню некоторые концепции и применения GPars, которые помогут мне в игре JME3 и других задачах!

GOTO gpars_usecases

EMBED GROOVY

Сначала я рекомендую всем, кто мало что знает о Groovy, прочитайте эту официальную документацию
http://groovy.codehaus.org/Embedding+Groovy

Groovy очень подходит для встраивания в Java-приложение, даже в игру. Наше намерение здесь — заставить Groovy работать с JME несколькими способами. Некоторые общие проблемы, трудности могут возникнуть из-за различий, несовместимых между Java-Groovy-Native OpenGL.

Таким образом, технические проблемы и требования будут рассмотрены в первую очередь, затем набросается дизайн интеграции, наконец, полная реализация. Полный исходный код находится в проекте AtomScript!

ОБЗОР

ТЕХОБСЛУЖИВАНИЕ

НЕОБХОДИМОСТЬ МОЩНОЙ СИСТЕМЫ СКРИПТИРОВАНИЯ

iframe::https://docs.google.com/presentation/d/1Kc1ehI1qLbtEGe-6-q8NikY7Q77A6jvozDaX94BqX0g/embed?start=false&loop=false&delayms=3000[width=»100%», height=»850px», alt=»», scroll=»true»,border=»true»,align=»false»]

ДИЗАЙН И АРХИТЕКТУРА

слайд

РЕАЛИЗАЦИЯ

слайд

Groovy в JME3

ScriptEngine

ScriptBase

Tools

Groovy в JMP

ScriptBaseTopComponent

ScriptEngineModule

Расширенные Tricks, чтобы получить JMP Scripted

Groovy везде (фрагменты)

Извлечение информации из XML и текста, веб …

Преобразование RenderMonkey, шейдеры FXComposer

СДЕЛАТЬ snippets

В ИГРЕ

Возьмите код примера из ссылки проекта AtomScript

Базовые Сценарии

Повернуть колесо

Путешествие по дереву

Задайте в очереди задачу

GroovyAppState

ClosureCondition

GOTO groovy_basicscripts

Событие — Триггер — Менеджер

Первая идея приходит мне на ум, когда думать о программировании игры — это обновление цикла игры или событий.

На самом деле, часто обновление и внезапное событие — совершенно противоположная парадигма, суть состоит в том, чтобы получить лучшее от мира в одном дизайне. Но можем ли мы? По крайней мере, я могу ответить частично да. И такое решение, которое я видел в большой системе баз данных, использует ту же самую хиридную концепцию.

Я также видел на форуме, что у парней была беседа о Entity System, которая частично включила такой дизайн … Но это одно другое. Это не общий, я имею в виду, что код под тентом для использования в виде RTS-игры, такой как War-craft of Starcraft, и я точно моделирую его, как эти две игры. И коды очень короткие, очень короткие, показывают мощь Groovy в usecase.

GOTO groovy_event

Конфигурации с Groovy

Подумайте о том, как настроить разрешение экрана вашей игры, клавиатуру, подключение к базе данных, без необходимости писать и анализировать свойство java или файлы XML. Groovy — текстовый файл, но гораздо более мощный, например, он имеет переменные, методы (def), loop (for), условия (if-else) … и т. Д. Для создания сложных вещей (например, программы) по сравнению с простым текстом. Короче говоря, Groovy может заменить практически любую конфигурационную задачу, которую вы можете себе представить. Эта тема об использовании Groovy-скриптов для этой цели.

GOTO groovy_config

AI Tricks с Groovy

Как и во введении выше, я сказал, что эта вики будет включать все о сценариях … Итак, в нее также должен входить AI (Artifacial Intelligent) … Но я не буду рассказывать вам об AI в этой вики, это должно быть больше в другой вики Некоторых профессоров ИИ. Я просто хочу показать, как быстрая реализация простых моделей AI может быть закодирована в Groovy:

GOTO ai

Finite State Machine

Какая самая простая, но эффективная техника для создания ИИ. Это FSM

Древо решений

Builder

Соответствие шаблону

Regexp emoji:

Простой Chatbot

Builder + Закрытие emoji:

Simple Goalbase Agent

emoji:

Простой поиск пути

Используйте расширение Groovy emoji:

Simple Steering behavior

emoji:

Сборка Сценария с Groovy

Groovy может использовать Ant и Maven в snapt. Но подождите … у него также есть собственное расширение сборки под названием Gradle.

http://www.gradle.org/

Проверьте это: Для JME3 Desktop: emoji:

Для JME3 Android: http://tools.android.com/tech-docs/new-build-system/user-guide

ШАБЛОН ПРОЕКТА В GROOVY ИГРЕ(WIP)

ДОПОЛНИТЕЛЬНЫЕ ТРЮКИ

Взломайте JVM с помощью Groovy

Codegen

Это должно быть в другой вики, но как-то супер подходит для примера расширенного использования Groovy. Проект CodeGen — генератор кода — мой первый проект Groovy. Он создан для генератора общих кодов для Java, Groovy, GLSL и может быть интересной игровой площадкой для не-разработчика. Это вдохновило концепцию:

Alice http://www.alice.org/index.php

GreenFoot http://www.greenfoot.org/door

И старый плагин PGI — участника форума JME: PgiLogic http://hub.jmonkeyengine.org/forum/topic/dead-combinable-logic-framework/

Это будет набор для создания Jme3 Games: Atom framework. Посетите: GOTO atom_framework GOTO codegen

Groovy –Всемогущий Бог!

Получите скорость на Java

Расширение и модуляция

База данных и ORM

DSL

Посетите Луну

ВЫВОД

По прочтении какое-то время, я думаю, вы уже влюблены в Groovy. Пожалуйста! Emoji: солнцезащитные очки

Эта страница НЕ МОЖЕТ быть подробным описанием Groovy … но моментальным снимком ее хорошего с несколькими кодами, разработанными для вашего JME3.

Помимо знания силы и слабых сторон языка и способа его использования в повседневной жизни. Если вы хотите иметь полные фрагменты, загрузите проект AtomScript.

Любая коррекция приветствуется!

Смотрите так же:


Переведено для jmonkeyengine.ru, оригинал
Автор перевода: Andry

Добавить комментарий

jMonkeyEngine.ru © 2017. Все права сохранены.