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 и выше то и лог-файл.
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) а только на каких-то иероглифах. Что делать? Учить китайский.
Что пишет в логе?
Windmill 2
WindMill 2D Game Engine
|
|
| |
Insonex | Дата: Пятница, 06 Июля 2012, 17:00 | Сообщение # 203 |
частый гость
Сейчас нет на сайте
| Quote (nilrem) Учить китайский. я английский учу, мне не до китайского 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) ? Неа, не канает. Проблема осталась. Координаты задаю - управление пропадает.
|
|
| |
|