Вторник, 26 Ноября 2024, 17:25

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
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
noTformaTДата: Воскресенье, 22 Января 2012, 22:39 | Сообщение # 141
Ukrainian independent game developer
Сейчас нет на сайте
smach1, для ссылок используется элемент доступа ->, для статических переменных - ".".
Пример

knight *Zerat = new knight;//ссылка/указатель на экземпляр класса knight;
Zerat->x =10; //устанавливаем для свойства х значение 10

knight Zerat; //статическая переменная
Zerat.х = 10; //устанавливаем для свойства х значение 10


@noTformaT
smach1Дата: Воскресенье, 22 Января 2012, 22:57 | Сообщение # 142
был не раз
Сейчас нет на сайте
Угу, спасибо. Тогда, если можно, еще вопрос

мне нужно создать несколько экземпляров одного класса и получить координаты каждого

Code

class ground
{
      int  x,y;
...
}
void ground::DrawGr(void)
{  
      DrawSprite(L"file.png",x,y);
}

ground *Grnd;

...

for(int i=0; i<1000;i+=100)  //цикл 9 раз подряд выводит один и тот же экземпляр
    {
      x=i;
      y=400;
      Grnd->DrawGr()
}


Метод срабатывает 9 раз, спрайт нарисован в требуемых координатах, но теперь при попытке обратиться к ним (координатам, например проверить столкновение с динамическим объектом) доступны только последние присвоенные, то есть x=900, y=400
Можно каким то образом использовать подобную конструкцию? Или же безперспективняк?
DemeronДата: Понедельник, 23 Января 2012, 00:59 | Сообщение # 143
User created in C++
Сейчас нет на сайте
smach1,
Code

class ground    
    {    
         int  x,y;    
    ...    
    }    
    void ground::DrawGr(void)    
    {     
         DrawSprite(L"file.png",x,y);    
    }    

    ground *Grnd;    

    ...    

    for(int i=0; i<1000;i+=100)  //цикл 9 раз подряд выводит один и тот же экземпляр    
       {    
         Grnd[i].x=i;    
         Grnd[i].y=400;    
         Grnd[i].DrawGr();
    }


Сообщение отредактировал Demeron - Понедельник, 23 Января 2012, 01:00
smach1Дата: Понедельник, 23 Января 2012, 06:54 | Сообщение # 144
был не раз
Сейчас нет на сайте
Благодарю, буду пробовать
zodiakДата: Понедельник, 23 Января 2012, 12:30 | Сообщение # 145
постоянный участник
Сейчас нет на сайте
Quote (noTformaT)
для ссылок используется элемент доступа ->, для статических переменных - ".".

О, великий знаток С++, зачем пишешь бред? Зачем вводишь незнающих людей в заблуждение?
Если ты не в курсе, то в с++ ссылки и указатели хоть и близкие по смыслу, но их использование отличается. Как раз для указателей используется стрелка "->" а для ссылок точка. Ты же обозвал указатель ссылкой, что знающий программист никогда не сделает, слишком они разные.
А термин "статические переменные" вообще из другой оперы. Есть объект, или экземпляр класса.


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

Взломщик
Battle City.Net
noTformaTДата: Понедельник, 23 Января 2012, 13:13 | Сообщение # 146
Ukrainian independent game developer
Сейчас нет на сайте
Quote (zodiak)
О, великий знаток С++, зачем пишешь бред? Зачем вводишь незнающих людей в заблуждение?
Если ты не в курсе, то в с++ ссылки и указатели хоть и близкие по смыслу, но их использование отличается. Как раз для указателей используется стрелка "->" а для ссылок точка. Ты же обозвал указатель ссылкой, что знающий программист никогда не сделает, слишком они разные.
А термин "статические переменные" вообще из другой оперы. Есть объект, или экземпляр класса.

блин, чет я реально сфейлил...


@noTformaT
RikettaДата: Понедельник, 23 Января 2012, 14:13 | Сообщение # 147
Strategist
Сейчас нет на сайте
Тьфу на вас. Подняли тему. Я думал апдейт. :(

Fougerite - Rust Server OpenSource API
TerraDev - Terraria OpenSource Hack
smach1Дата: Пятница, 27 Января 2012, 12:24 | Сообщение # 148
был не раз
Сейчас нет на сайте
Попробовал ваш пример в действии. Все плохо biggrin Может быть указатель этот на объект класса нужно каким то особым образом объявить?
При отладке компилятор просто начинает глючить, ошибки выдает каждый раз разные, иногда проект даже компилируется, но ведет себя совсем не так как должен -изображение начинает прыгать, дергаться и т.п., а при закрытии выдает что то вроде "куча повреждена" и еще пару ошибок со ссылкой на библиотеки msvs
Рискну предположить, что каким то образом необходимо выделить определенный объем оперативной памяти под объект? Если я прав, то как же это провернуть?

Добавлено (27.01.2012, 12:24)
---------------------------------------------
Сам отвечу на свой вопрос, кому то пригодится мб

Объявлять объект класса нужно так, как написал Demeron, кроме одного момента: в теле главной функции Grnd = new ground[100]; так же удалять нужно с помощью оператора delete[]

AGENTX001Дата: Пятница, 27 Января 2012, 18:37 | Сообщение # 149
почётный гцупер
Сейчас нет на сайте
От смотрю на этот плюсовский код и думаю, как же всётаки хорош делфи!) Всё понятно, просто, безупречно biggrin
prog_154rusДата: Пятница, 27 Января 2012, 18:40 | Сообщение # 150
Lonely Developer
Сейчас нет на сайте
AGENTX001, ага, а еще слабофункциональный, медленный и без контроля памяти. А так - все ок
stalkeryaДата: Пятница, 27 Января 2012, 18:53 | Сообщение # 151
Пользователь Blender 2.5
Сейчас нет на сайте
prog_154rus, Просто нормально юзать надо его.

Бросила девушка после того, как узнала, что я перешел с гм на Construct.
AGENTX001Дата: Пятница, 27 Января 2012, 19:10 | Сообщение # 152
почётный гцупер
Сейчас нет на сайте
Quote (prog_154rus)
а еще слабофункциональный

с каких пор?
Quote (prog_154rus)
медленный

Ненамного медленней плюсов.
Quote (prog_154rus)
без контроля памяти

А оно вам надо? Делфи сам следит чтобы утечки не было.
05142Дата: Пятница, 27 Января 2012, 19:33 | Сообщение # 153
постоянный участник
Сейчас нет на сайте


mecinvader
prog_154rusДата: Пятница, 27 Января 2012, 19:51 | Сообщение # 154
Lonely Developer
Сейчас нет на сайте
AGENTX001, программист должен сам управлять памятью и юзать это во благо проги.
AGENTX001Дата: Пятница, 27 Января 2012, 20:28 | Сообщение # 155
почётный гцупер
Сейчас нет на сайте
Quote (prog_154rus)
программист должен сам управлять памятью и юзать это во благо проги.

Возможно, но во благо, получается далеко не всегда... Поетому Delphi лучше))
smach1Дата: Пятница, 27 Января 2012, 21:21 | Сообщение # 156
был не раз
Сейчас нет на сайте
хм, для интереса, можете назвать примеры "больших" проектов написанных на делфи?
DemeronДата: Пятница, 27 Января 2012, 21:44 | Сообщение # 157
User created in C++
Сейчас нет на сайте
Quote (smach1)
хм, для интереса, можете назвать примеры "больших" проектов написанных на делфи?

Ну на сколько я знаю, то раньше GameMaker был написан на нем) Чем не большой проект?)
RorschachДата: Пятница, 27 Января 2012, 21:46 | Сообщение # 158
участник
Сейчас нет на сайте
Предлагаю отрубить prog_154rus`y руки за провокацию холивара.

Never compromise. Not even in the face of Armageddon.
smach1Дата: Пятница, 27 Января 2012, 22:18 | Сообщение # 159
был не раз
Сейчас нет на сайте
Холивары - это весело!

А если брать из области тех же игр, есть хотя бы несколько ААА класса? Нет.
Если просто немного поискать в инете на эту тему, на той же википедии посмотреть, то обнаружиться, что из сколько нибудь известных программ на делфи были написаны скайп, квип и неплохая игрушка "Космические рейнджеры". Не то чтобы совсем ничего, но все же негусто, а?
А если такой же вопрос задать в отношение c++?
Миллионы не могут ошибаться! =)
AGENTX001Дата: Пятница, 27 Января 2012, 22:27 | Сообщение # 160
почётный гцупер
Сейчас нет на сайте
smach1, дружище, делфи естественно не для проектов ААА класса, но для инди игрушек - самое оно!
Поиск:

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