Четверг, 25 Апреля 2024, 07:02

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Ваши проекты » Разработка движков и сред разработки » 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
InsonexДата: Пятница, 06 Июля 2012, 16:18 | Сообщение # 201
частый гость
Сейчас нет на сайте
nilrem, у меня возникла такая проблема: при, кхм, вот таком коде:
Code

#include ".\windmill.h"  

#pragma comment (lib,"windmill.lib")

void game();

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
  IniEngine(L"TEST",800,600);
  TextIni(L"Arial32.tga",L"Arial32.dat",32);
  RunEngine(game);
  return 0;
}

void game()
{
  Print(L"Ну вот мы и можем выводить текстовую информацию",10,50);  
  DrawSprite(L"Jeki.png",70,250);

  DevelopHelp(true);
}

Ничего кроме спрайта на экране не рисуется. Хотя, по идее, должен же быть текст?
А ещё... выводило текст, по коду из туториала:
Code

#include "..\\..\\..\\..\\wme\\windmill.h"  //подключение заголовочного файла

#pragma comment (lib,"..\\..\\..\\..\\wme\\windmill.lib")    //подключение файла библиотеки
void game();

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
  IniEngine(L"Текст 2. Генерация шрифта",800,600);
  TextGen(L"China",32,true,0);  // Генерация шрифтов
  RunEngine(game);
  return 0;
}
void game()
{
  // Отображение текста

  Print(L"Ну вот мы и можем выводить текстовую информацию",10,50);  
  Print(L"Можем увеличить",10,100,3);
  Print(L"или уменьшить.",10,200,0.5);
  Print(L"Можно сменить цвет",10,250,1,0,COLOR(255,255,0,0));
  Print(L"сколько угодно раз",10,300,1,0,COLOR(255,0,0,255));
  Print(L"сколько угодно раз",10,350,1,0,COLOR(255,0,255,0));
  Print(L"сколько угодно раз",10,400,1,0,COLOR(255,255,0,255));
  Print(L"сколько угодно раз",10,450,1,0,COLOR(255,0,255,255));
  Print(L"сколько угодно раз",10,500,1,0,COLOR(255,0,100,255));
  Print(L"сколько угодно раз",10,550,1,0,COLOR(255,255,255,0));

  // Отображение вспомогательной информации
  DevelopHelp(true);
}

Но он не на русском, а только на каких-то иероглифах. Что делать?
nilremДата: Пятница, 06 Июля 2012, 16:36 | Сообщение # 202
Просветленный разум
Сейчас нет на сайте
Quote (Insonex)
а только на каких-то иероглифах. Что делать?

Учить китайский. tongue

Что пишет в логе?


Windmill 2

WindMill 2D Game Engine
InsonexДата: Пятница, 06 Июля 2012, 17:00 | Сообщение # 203
частый гость
Сейчас нет на сайте
Quote (nilrem)
Учить китайский.

sad я английский учу, мне не до китайского dry
Quote (nilrem)
Что пишет в логе?

Если ты про лог при построении, то вот... :
Code

1>------ Построение начато: проект: WinmillEngine_test, Конфигурация: Debug Win32 ------
1>Компиляция...
1>main.cpp
1>Компиляция манифеста в ресурсы...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>Компоновка...
1>LINK : не найден или не выполнена сборка (адрес_скрыл)\WinmillEngine_test\Debug\WinmillEngine_test.exe при последней инкрементной компоновке; выполняется полная компоновка
1>Внедрение манифеста...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>Журнал построения был сохранен в "(адрес_скрыл)\WinmillEngine_test\WinmillEngine_test\Debug\BuildLog.htm"
1>WinmillEngine_test - ошибок 0, предупреждений 0
========== Построение: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ==========



Сообщение отредактировал Insonex - Пятница, 06 Июля 2012, 17:02
RumataДата: Пятница, 06 Июля 2012, 17:11 | Сообщение # 204
почетный гость
Сейчас нет на сайте
Insonex, покажи содержимое файла windmill.log, который лежит рядом с исполняемым файлом




Сообщение отредактировал Rumata - Пятница, 06 Июля 2012, 17:14
InsonexДата: Пятница, 06 Июля 2012, 17:39 | Сообщение # 205
частый гость
Сейчас нет на сайте
Quote (Rumata)
покажи содержимое файла windmill.log, который лежит рядом с исполняемым файлом

Вот, вроде бы, он:
Quote

WindMill 2D Game Engine v1.40
19:40:14 Инициализация окна приложения
19:40:14 Инициализация окна приложения выполнена
19:40:14 Инициализация графики...
19:40:14 Инициализация графики выполнена.
19:40:14 Инициализация менеджера ресурсов...
19:40:14 Инициализация менеджера ресурсов выполнена.
19:40:14 Инициализация звукового движка...
19:40:14 Инициализация звукового движка выполнена.
19:40:14 Инициализация менеджера сцены...
19:40:14 Инициализация менеджера сцены выполнена.
19:40:14 Инициализация системы ввода.
19:40:14 Инициализация системы ввода выполнена.
19:40:16 Работа приложения успешно завершена.
nilremДата: Пятница, 06 Июля 2012, 18:14 | Сообщение # 206
Просветленный разум
Сейчас нет на сайте
Вызов функции TextIni записывает в лог строчку "Инициализация шрифтов...". Если строчки нет, функция не вызывалась.

Можешь дать скомпилированный файл?


Windmill 2

WindMill 2D Game Engine
InsonexДата: Пятница, 06 Июля 2012, 18:51 | Сообщение # 207
частый гость
Сейчас нет на сайте
В общем... текст стал выводиться вместе со спрайтом (я просто положил Arial32.tga и *dat файл в папку с исходниками), но... получается какая-то хренатень:


Поменял это:
Code

TextIni(L"Arial32.tga",L"Arial32.dat",32);

На это:
Code
TextGen(L"China",32,true,0);

И текст появился в нормальном размере, не сплюснутый, но опять же не на русском, а на каком-то "херпоймешь".

Добавлено (06.07.2012, 18:24)
---------------------------------------------
В общем, странно, но заработало. Ах да... почему-то, после постройки решения, и запуска программы через кнопочку в Visual C++, все не на русском, а на иероглифах, а вот если запускать *exe файл из папки Debug, то все ок : )

Добавлено (06.07.2012, 18:33)
---------------------------------------------
А при использовании TextGen, в любом случае иероглифы. Перепробывал множество шрифтов - ни один на русском не отобразился. Даже тот, который Вы, уважаемый nilrem, указали в своем туториале (Times New Roman).

Добавлено (06.07.2012, 18:48)
---------------------------------------------
Поддерживает ли Ваш движок *gif-анимацию? А то, пытался тут, вставить ее, но он все время выдает "не найден файл hero.gif". Даже, если я указываю прямой путь. А когда вставляю *png-файл, то после открытия программы спрайт моментом пропадает, хотя ResetAnimation(anim); в коде присутствует. Что мне делать? Неужели я настолько криворук?! Или это проблема двига?: )

Добавлено (06.07.2012, 18:51)
---------------------------------------------
В логе ничего подозрительного нету.

Сообщение отредактировал Insonex - Пятница, 06 Июля 2012, 18:18
nilremДата: Пятница, 06 Июля 2012, 19:08 | Сообщение # 208
Просветленный разум
Сейчас нет на сайте
Quote (Insonex)
В общем... текст стал выводиться вместе со спрайтом (я просто положил Arial32.tga и *dat файл в папку с исходниками), но... получается какая-то хренатень:

Такая фигня получается, когда не находит dat-файл. Нужно правильно настраивать среду. Читай первый урок с шага 8.

Quote (Insonex)
А при использовании TextGen, в любом случае иероглифы.

TextGen может выдавать иероглифы, если на компе проблемы с кодовой страницей, или если выбранный шрифт не поддерживает юникод, хотя не исключенj и еще что-то.
Проверь, правильно ли работает Bitmap Font Builder из папки Тools\BFB.

gif не поддерживается, вот оно его и не находит.


Windmill 2

WindMill 2D Game Engine
InsonexДата: Суббота, 07 Июля 2012, 15:17 | Сообщение # 209
частый гость
Сейчас нет на сайте
Quote (nilrem)
Такая фигня получается, когда не находит dat-файл. Нужно правильно настраивать среду. Читай первый урок с шага 8.

Спасибо! Все заработало! : ) Оказывается, была небольшая ошибка - я случайно не выделил последний символ, при копировании строчки $(SolutionDir)\Debug.
Quote (nilrem)
Проверь, правильно ли работает Bitmap Font Builder

Проверил. Вроде бы все работает правильно.
Проверил шрифт Arial CYR, судя по этой программе, там имеются русские символы, однако, при запуске программы, все равно появляются иероглифы.
Quote (nilrem)
gif не поддерживается, вот оно его и не находит.

Спасибо за информацию.

Добавлено (07.07.2012, 15:17)
---------------------------------------------
А что же с анимацией делать? Когда будет поддержка gif-анимации?

Сообщение отредактировал Insonex - Пятница, 06 Июля 2012, 19:31
RumataДата: Суббота, 07 Июля 2012, 15:27 | Сообщение # 210
почетный гость
Сейчас нет на сайте
Quote (Insonex)
А что же с анимацией делать? Когда будет поддержка gif-анимации?

Зачем тебе гифка в игре?оО



InsonexДата: Суббота, 07 Июля 2012, 18:36 | Сообщение # 211
частый гость
Сейчас нет на сайте
Quote (Rumata)
Зачем тебе гифка в игре?оО

А как же анимация? Как мне ее сделать? Я просто новенький в этом деле : ) Можно ссылку на статью? Или что-то в этом роде?

Добавлено (07.07.2012, 18:05)
---------------------------------------------
Кстати, уважаемый nilrem, было бы неплохо, если б Вы расписывали, что вот это за циферки (пример взят из Урока #7 - Воспроизведение звука):

Code

SoundPlay(L"kuk.wav",1,0,0,0,0);

Что обозначает "1"? А что "0"? И т.д.
Это же относится и к тексту, и к анимации.

Добавлено (07.07.2012, 18:36)
---------------------------------------------
В туториале, в уроке #9 (Управление звуком) нету разъяснения того, что нужно писать в функциях RenderUI() && CheckZone(). Этот урок заканчивается на изменении функции game().
Вы меня извините, конечно, возможно, что я Вас достал уже, но все ровно : ) Примите меня во внимание.

RumataДата: Суббота, 07 Июля 2012, 20:25 | Сообщение # 212
почетный гость
Сейчас нет на сайте
Insonex, для анимации тебе нужен стрип (кажется, это так называется) из кадров в любом из поддерживаемых форматов.
Пример такого стрипа можно найти, например, в папке /tutorials/msvs/cpp/Debug/data/knight.png. В создании такого может помочь программа всё того же nilrem'а АрхиСпрайтер
Работа с анимацией описывается в уроках 5 и 6, по-моему, всё достаточно подробно



InsonexДата: Суббота, 07 Июля 2012, 20:36 | Сообщение # 213
частый гость
Сейчас нет на сайте
Quote (Rumata)
для анимации тебе нужен стрип (кажется, это так называется) из кадров в любом из поддерживаемых форматов. Пример такого стрипа можно найти, например, в папке /tutorials/msvs/cpp/Debug/data/knight.png. В создании такого может помочь программа всё того же nilrem'а АрхиСпрайтер

Спасибо за информацию!
zodiakДата: Суббота, 07 Июля 2012, 21:28 | Сообщение # 214
постоянный участник
Сейчас нет на сайте
Quote (Insonex)
Кстати, уважаемый nilrem, было бы неплохо, если б Вы расписывали, что вот это за циферки (пример взят из Урока #7 - Воспроизведение звука): Code SoundPlay(L"kuk.wav",1,0,0,0,0);


Вобще то в тексте руководства имена функций являются ссылками, если на них нажать, или если перейти к списку функций и найти нужную или просто пролистать руководство до конца то на чтр 199 можно обнаружить следующее:

Quote

SoundPlay
Проигрывание звуков и музыки
void SoundPlay(
wchar_t* fileName,
float volume=1,
int x=0,
int y=0,
int distMin=0,
int distMax=0
);

Параметры:
fileName
Имя файла звука или музыки
volume
Уровень громкости
x
Х позиция источника звука в пространстве. По умолчанию 0.
y
У позиция источника звука в пространстве. По умолчанию 0.
distMin
Дистанция, на которой громкость звука максимальная.
По умолчанию 0.
distMax
Дистанция, за пределами которой звук не слышен.
По умолчанию 0.
Возвращаемое значение: Нет
Примечание:
Если х и у равны 0 то звук проигрывается в фоне, без учета влияния
ЕАХ.


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

Взломщик
Battle City.Net
MyxachДата: Воскресенье, 08 Июля 2012, 13:26 | Сообщение # 215
почетный гость
Сейчас нет на сайте
Кулльный двиг жаль что 2д


OPENGL легкче и круче DX9
maXimBestUAДата: Воскресенье, 08 Июля 2012, 13:52 | Сообщение # 216
почетный гость
Сейчас нет на сайте
Кстати видел такую проблему, что буква L в функции Print, и других где она присутствует, вызывает ошибку компиляции, приходится ее убирать но тогда компилятор выдает предупреждение на каждую функцию. Если я правильно понимаю то нужно чтото настраивать в компиляторе, не подскажите что?
zodiakДата: Понедельник, 09 Июля 2012, 12:24 | Сообщение # 217
постоянный участник
Сейчас нет на сайте
Quote (maXimBestUA)
Кстати видел такую проблему, что буква L в функции Print, и других где она присутствует, вызывает ошибку компиляции, приходится ее убирать но тогда компилятор выдает предупреждение на каждую функцию. Если я правильно понимаю то нужно чтото настраивать в компиляторе, не подскажите что?


Свойства проекта - Общее - Набор символов - Юникод.

Скрин не прикладываю, лень, надеюсь так понятно.


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

Взломщик
Battle City.Net
InsonexДата: Понедельник, 09 Июля 2012, 19:46 | Сообщение # 218
частый гость
Сейчас нет на сайте
Как задать изначальную точку расположения для спрайта? Нет, я знаю, что можно так: DrawSprite(L"filename",x,y); ... но, если использовать управление спрайтом, и тут задать координаты, то управление не работает. Можно как-то это исправить? Или как-нибудь по-другому задать изначальные координаты спрайта?

Сообщение отредактировал Insonex - Понедельник, 09 Июля 2012, 19:47
RumataДата: Понедельник, 09 Июля 2012, 19:51 | Сообщение # 219
почетный гость
Сейчас нет на сайте
Insonex, как насчёт DrawSpriteA(animID, x, y) ?


InsonexДата: Понедельник, 09 Июля 2012, 20:10 | Сообщение # 220
частый гость
Сейчас нет на сайте
Quote (Rumata)
как насчёт DrawSpriteA(animID, x, y) ?

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

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