Пятница, 26 Апреля 2024, 05:26

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Ваши проекты » Разработка движков и сред разработки » WindMill 2D Game Engine (Движок для 2D игр любого жанра.)
WindMill 2D Game Engine
nilremДата: Воскресенье, 04 Июля 2010, 14:19 | Сообщение # 1
Просветленный разум
Сейчас нет на сайте
Все.
Сегодня я решил, что пилить двиг можно до скончания веков, и он так и не станет(на мой взгляд) пригодным для демонстрации.
Итак, встречаем.






Скачать WindMill Framework v0.88 альфа (3,59 мб)




Скачать WindMill SDK v0.90 (4,84 мб)




Скачать WindMill SDK v0.92 (5,24 мб)




Скачать WindMill SDK v1.25 (5,09 мб)




WindMill SDK v1.30 rev.39 (5,02 мб)

Учтите, что теперь SDK не содержит скомпилированные примеры, их нужно скачивать отдельно

Скачать скомпилированные примеры WindMill v1.25 (2,71 мб)




WindMill SDK v1.40 (6,02 мб)

Патч Windmill Engine 1.42
Небольшой патч движка от 1.11.2012. Стабильная работа в Windows 8.
Для установки достаточно распаковать скачанный файл в папку с Windmill SDK 1.4.

Windmill 2




Windmill framework - это построенный на базе DirectX движок для создания двухмерных игр. Задуман он был, когда делая текстовую игру я понял, что уже тошнит от псевдографики и что в гробу я ее видел. Так появился Windmill framework. За пару месяцев из 12 простых функций он разросся до текущего состояния.
Главное достоинство - простота использования. Базовое приложение, выводящее пустое окно, занимает всего 7 строк кода. Далее дабы нарисовать картинку, проиграть звук, нужно всего по одной функции на действие. Движок ориентирован на начинающих программистов, поэтому кроме просторы использование имеет и довольно высокую надежность.(я надеюсь))))
Состоит движок из нескольких взаимосвязанных классов, но для работы доступно только несколько интерфейсных функций. ООП реализация полностью скрыта. Для .NET все функции те же, но для простоты включения они собраны в базовый класс. Библиотеки импорта для С++, .NET, PDA не совместимы.
Поддерживаемые языки программирования С++, все .Net языки (пока тестил на шарпе и бейсике). Возможно и Делфи.
Также собираю версию для КПК.
Среда разработки - пока только Microsoft Visual Studio 2008/2010(в остальных просто еще не тестировал)

Возможности:
Вывод двухмерной графики, как статической, так и анимированной. Поддерживаются следующие форматы bmp tga png dds jpg.
Работы с устройствами ввода (клавиатура, мышь)
Воспроизведения звука (формат wav) в отдельном потоке.
Вывод текста(быстрый, не GDI и не его родственник D3DXFont)
Управления звуковыми и графическими ресурсами
отсечение невидимой графики,
воспроизведение звуков с учетом позиции в пространстве(EAX)
самостоятельный поиск ресурсов в структуре каталогов


Требования: DirectX Ноябрь 2008 и выше.
Знание С++ на базовом уровне (на уровне моего курса).

Относительно названия. Почему именно Windmill(Ветряная мельница), я вам не скажу. А framework (каркас) потому что то, что я сейчас вам демонстрирую, в дальнейшем будет обвешано дополнительными наворотами, и станет отличным каркасом для создания двухмерных игр любого жанра и любой сложности.

http://fabermun.at.ua/load/wmfdemo/1-1-0-13
По этой ссылке можно скачать демо движка, содержащее откомпилированные туториалы, и демку стресс-теста производительности

На закуску скрины:



Игры:

АйсТетрис с исходным кодом (1 мб)




Если у кого-то что-то не запустилось сообщать сразу же, указывая конфигурацию компа.

если вы используете версию 0,89 и выше то и лог-файл.
Прикрепления: 5820661.jpg (11.3 Kb) · 4810306.jpg (78.6 Kb) · 3150085.jpg (66.5 Kb) · 7628550.jpg (65.7 Kb)


Windmill 2

WindMill 2D Game Engine
RumataДата: Понедельник, 09 Июля 2012, 20:13 | Сообщение # 221
почетный гость
Сейчас нет на сайте
Insonex, какое управление? Внимательно читай руководство, урок 6 "Управление анимацией". Никаких проблем быть не должно


InsonexДата: Понедельник, 09 Июля 2012, 20:26 | Сообщение # 222
частый гость
Сейчас нет на сайте
Quote (Rumata)
Insonex, какое управление? Внимательно читай руководство, урок 6 "Управление анимацией". Никаких проблем быть не должно

Ты, похоже, не понял меня. Управление-то работает, если я делаю так:
Code

DrawSprite(L"Hero.png", x, y);

Но... он (спрайт) появляется где-то в левом верхнем углу, а мне нужно, чтобы он появлялся там, где мне надо. Пытался задать координаты:
Code

DrawSprite(L"Hero.png", 10, 517);

И управление перестает работать (и я даже знаю почему так, наверное), но я не знаю того, как это можно пофиксить.
DemeronДата: Понедельник, 09 Июля 2012, 20:33 | Сообщение # 223
User created in C++
Сейчас нет на сайте
Quote (Insonex)
и я даже знаю почему так

Да неужели? dry Может потому что ты задаешь статистические данные?

Quote (Insonex)
а мне нужно, чтобы он появлялся там, где мне надо

А ты попробуй "объяснить" движку, что ты от него хочешь, ибо даже я мало чего понял...
TimKruzДата: Понедельник, 09 Июля 2012, 21:05 | Сообщение # 224
старожил
Сейчас нет на сайте
Quote (Insonex)
Управление-то работает, если я делаю так:
DrawSprite(L"Hero.png", x, y);

Quote (Insonex)
Пытался задать координаты:
DrawSprite(L"Hero.png", 10, 517);
И управление перестает работать

С движком я не работал, но могу предположить, что x и y - это управляющие переменные, они меняются от нажатий кнопок клавиатуры... Изначально они нулевые, т.е. задают координаты (0;0) - левый верхний угол экрана/окна. Я так понимаю, DrawSprite выводится каждый тик таймера (или каждая прорисовка экрана). Так вот, когда ты задаёшь x и y в качестве аргументов, они могут изменяться от нажатий кнопок клавиатуры и, соответственно, менять расположение спрайта (ведь он перерисовывается каждый раз). Если ты задашь константу (просто числа), то спрайт будет всегда перерисовываться в этом месте, и не будет никак зависеть от x и y, т.е. от клавиатуры. Как я уже говорил, x и y сначала нулевые, поэтому их нужно задать, но не в цикле прорисовки, а в коде инициализации окна/движка. Не знаю, где и как инициализируется WindMill, но наверняка это делается при инициализации окна (событие onCreate, эквивалентное Windows-сообщению WM_CREATE), поэтому тебе нужно найти эту строчку и после неё (и после всех остальных строчек, отвечающих за настройку движка) вписать две строчки, в которых ты присваиваешь начальные значения X и Y, в данном случае 10 и 517. А в функции DrawSprite оставь аргументы x и y.


InsonexДата: Понедельник, 09 Июля 2012, 21:26 | Сообщение # 225
частый гость
Сейчас нет на сайте
TimKruz, я уже разобрался, но все равно спасибо за старание помочь.

Сообщение отредактировал Insonex - Понедельник, 09 Июля 2012, 21:28
zodiakДата: Понедельник, 09 Июля 2012, 23:40 | Сообщение # 226
постоянный участник
Сейчас нет на сайте
Нашел баг в работе системы анимации. Чем больше времени проходит между созданием анимации функцией CreateAnimation и ее отрисовкой, тем менее предсказуемо ее поведение. Такое ощущение, что она пытается нагнать пропущенный интервал, либо проигрываясь быстрее, либо пропуская кадры. Такое происходит только один раз, потом все нормально.
Если создавать анимацию непосредственно перед ее отображением, то все ок.


Точка зору окремо взятого індивіда завжди суб'єктивна!

Взломщик
Battle City.Net
DemeronДата: Понедельник, 09 Июля 2012, 23:52 | Сообщение # 227
User created in C++
Сейчас нет на сайте
zodiak, скорее всего анимация просто обновляется все время, а не перед рисованием.
InsonexДата: Вторник, 10 Июля 2012, 20:14 | Сообщение # 228
частый гость
Сейчас нет на сайте
Что насчет физики? Можно ли подключить физический движок, например, Box2D?
AGENTX001Дата: Вторник, 10 Июля 2012, 20:48 | Сообщение # 229
почётный гцупер
Сейчас нет на сайте
Insonex, это зависит только от тебя biggrin
nilremДата: Вторник, 10 Июля 2012, 21:48 | Сообщение # 230
Просветленный разум
Сейчас нет на сайте
Quote (zodiak)
Такое ощущение, что она пытается нагнать пропущенный интервал, либо проигрываясь быстрее, либо пропуская кадры.

Так и есть, поскольку, для упрощения использования, функция автоматически высчитывает время между кадрами. Если между созданием анимации и ее первым отображением прошло некоторое время, то часть кадров анимации будет пропущена. Чтобы этого избежать, нужно либо создавать анимацию перед воспроизведением, либо обновлять ее вручную функцией UpdateAnimation, передавая ей время, прошедшее с последнего обновления. Или при создании анимации задать ей нулевую скорость, потом установив нужную.


Windmill 2

WindMill 2D Game Engine
ilgamerДата: Вторник, 14 Августа 2012, 15:50 | Сообщение # 231
Needle Games
Сейчас нет на сайте
Давай поворот спрайта!

Извиняюсь, мой косяк.




Сообщение отредактировал ilgamer - Понедельник, 03 Сентября 2012, 12:14
nilremДата: Среда, 15 Августа 2012, 19:58 | Сообщение # 232
Просветленный разум
Сейчас нет на сайте
Quote (ilgamer)
Давай поворот спрайта!

Шо?


Windmill 2

WindMill 2D Game Engine
maXimBestUAДата: Суббота, 18 Августа 2012, 10:10 | Сообщение # 233
почетный гость
Сейчас нет на сайте
Подскажите а как выводить значение переменных на экран, и записывать данные в файл(делать сохранения, таблицы рекордов)?
zodiakДата: Четверг, 23 Августа 2012, 14:54 | Сообщение # 234
постоянный участник
Сейчас нет на сайте
Quote (maXimBestUA)
Подскажите а как выводить значение переменных на экран,

Функциями Print и PrintDigit.

Quote (maXimBestUA)
и записывать данные в файл

С помощью движка никак. Используй стандартные средства языка, на котором пишешь (с++ - fstream, C# - IO.File или сериализацию в xml)

Добавлено (23.08.2012, 14:54)
---------------------------------------------
nilrem,
Редактор GUI в Виндовз 7 падает при загрузке файла гуи. Можно поправить?
Как раз очень нужно, а ВинХР рядом нет.


Точка зору окремо взятого індивіда завжди суб'єктивна!

Взломщик
Battle City.Net
AGENTX001Дата: Воскресенье, 26 Августа 2012, 13:54 | Сообщение # 235
почётный гцупер
Сейчас нет на сайте
zodiak, файл гуи должен быть в одной папке с экзешником редактора. Мне помогло.
nilremДата: Воскресенье, 26 Августа 2012, 23:27 | Сообщение # 236
Просветленный разум
Сейчас нет на сайте
Quote (zodiak)
Редактор GUI в Виндовз 7 падает при загрузке файла гуи. Можно поправить?

Можно, вот редактор версии 1.1. У меня на Вин7 работает. Протестируйте в ВинXP.


Windmill 2

WindMill 2D Game Engine
nilremДата: Суббота, 01 Сентября 2012, 13:25 | Сообщение # 237
Просветленный разум
Сейчас нет на сайте
Патч Windmill Engine 1.41
Выкладываю небольшой патч движка в честь начала нового учебного года.
Ничего нового он не вносит, только правит найденные баги.
Для установки достаточно распаковать скачанный файл в папку с Windmill SDK 1.4.

• Основные исправление - работа звука на Вин7. Звуковой движок ранее не работал в 50% пользователей седьмой винды.
• Также поправлены некоторые баги в С# врапере, в частности ошибки маршалинга.
• Уменьшено потребление памяти в генераторе шрифтов (примерно на 40 мб), что согласитесь не мало.
• Ускорена работа менеджера ресурсов.
• Другие мелкие ошибки (23 штуки)
• Используется версия DirectX от июня 2010 года.
• В патч включен исправленный редактор ГУИ.

Инициатором появления патча был пользователь zodiak, который периодически слал мне найденные баги, за что ему отдельное спасибо. У него в Вин7 звук не заработал и он пригрозил бросить движок. Чтобы не потерять ценного тестера, пришлось немножко перелопатить код.))

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


Windmill 2

WindMill 2D Game Engine
ilgamerДата: Понедельник, 03 Сентября 2012, 07:50 | Сообщение # 238
Needle Games
Сейчас нет на сайте
Подскажите как вывести значение переменной с типом int или float?

nilremДата: Понедельник, 03 Сентября 2012, 14:04 | Сообщение # 239
Просветленный разум
Сейчас нет на сайте
Quote (ilgamer)
Подскажите как вывести значение переменной с типом int или float?

PrintDigit


Windmill 2

WindMill 2D Game Engine
ilgamerДата: Суббота, 08 Сентября 2012, 08:57 | Сообщение # 240
Needle Games
Сейчас нет на сайте
Спасибо. Ждите новых проектов на движке. wink

Форум игроделов » Ваши проекты » Разработка движков и сред разработки » WindMill 2D Game Engine (Движок для 2D игр любого жанра.)
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг