| HGE & Visual C++ |
| Aikidos | Дата: Суббота, 14.01.2012, 15:24 | Сообщение # 21 |
постоянный участник
Сообщений: 261
Сейчас нет на сайте
| Если я не ошибаюсь, HGE перестал развиваться с 2008 года?
Нет рабства безнадежнее, чем рабство тех рабов, себя кто полагает свободным от оков.
|
| |
| | |
| noname | Дата: Суббота, 14.01.2012, 16:18 | Сообщение # 22 |
участник
Сообщений: 228
Сейчас нет на сайте
| Quote (Aikidos) Если я не ошибаюсь, HGE перестал развиваться с 2008 года? не знаю, но похоже на то.
там, на предыдущей странице я вопрос задал. очень нужна помощь.
дневник разработчика
|
| |
| | |
| GECK | Дата: Суббота, 14.01.2012, 17:20 | Сообщение # 23 |
заслуженный участник
Сообщений: 658
Сейчас нет на сайте
| Посмотрел твой проект. Подключил к проекту файлы maz_gen.h и maz_gen.cpp, потом студия сама подсказала записать #include "stdafx.h" в maz_gen.cpp. Все скомпилилось
На будущее - выкладывай только исходники, в архиве мусора много.
Всё гениальное просто. И хреново работает.
|
| |
| | |
| noname | Дата: Четверг, 19.01.2012, 15:02 | Сообщение # 24 |
участник
Сообщений: 228
Сейчас нет на сайте
| Quote (GECK) Подключил к проекту файлы maz_gen.h и maz_gen.cpp как?
Quote 1>kosmobiaky.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl WorldFill(void)" (?WorldFill@@YAXXZ) в функции _WinMain@16
1>D:\my_projects\03-raise-HGE\01-Kolobok\0008\Debug\kosmobiaky.exe : fatal error LNK1120: 1 неразрешенных внешних элементов Добавлено (14.01.2012, 17:46) --------------------------------------------- так, вроде бы как-то это сделал. хотя сам толком не понял, что я делал.'
GECK, СПАСИБО большое)) Добавлено (16.01.2012, 16:23) --------------------------------------------- ---------------------------------------------
блукаю щазз в модулях своей многомодульной проги.
хочу понять, как делается одна штука на MS Visual C++. а именно:
1. в функции main() объявляется двумерный массив, а затем он передаётся в качестве параметра функции, реализованной в другом модуле.
2. размеры этого массива задаются только в одном месте программы(константой, дефайнами, да чем угодно- лишь бы работало), И эти размеры доступны из любого модуля программы.
не мог ли бы кто-нить показать, как это делается, на примере с двумя модулями(основной- тот, в котором ф-ция main() И другой- в котором ф-ция, обрабатывающая массив). Добавлено (16.01.2012, 16:24) ---------------------------------------------
Quote (noname) в функции main() объявляется двумерный массив а лучше- глобальное объявление, до объявления функций, в основном модуле(где main())Добавлено (16.01.2012, 19:08) --------------------------------------------- --------------------------------------------- вышеописанная проблема РЕШЕНА  Добавлено (19.01.2012, 14:56) --------------------------------------------- --------------------------------------------- ---------------------------------------------
я сделал генерёжку простого лабиринта. в отличие от старой версии "колобка", на этот раз лабиринт составляется из комнат. размеры комнат и другие константы задаются в файле stdafx.h сейчас там установлен режим 1050x1680xFULL_SCREEN, но это легко изменить: http://dl.dropbox.com/u/52494730/Kolobok/2012_01_19/0012.zip для более удобного экспериментирования с программой режим экрана лучше сменить на оконный, значения которого указаны там в комментах.
прога очень сырая. управление- стрелками, выход по ESC.
есть причина, по которой я предлагаю вашему вниманию именно полноэкранный вариант. дело в том, что меня абсолютно не устраивает скорость перерисовки экрана: при движении видны заметные искажения.
если кто что может подсказать по этому поводу- буду благодарен. Добавлено (19.01.2012, 15:02) --------------------------------------------- я имею ввиду небольшие искажения в тот момент, когда перерисовывается весь экран.
дневник разработчика
|
| |
| | |
| GECK | Дата: Четверг, 19.01.2012, 15:31 | Сообщение # 25 |
заслуженный участник
Сообщений: 658
Сейчас нет на сайте
| Quote (noname) при движении видны заметные искажения Используй вертикальную синхронизацию: Code hge->System_SetState(HGE_FPS, HGEFPS_VSYNC);
Всё гениальное просто. И хреново работает.
|
| |
| | |
| noname | Дата: Четверг, 19.01.2012, 16:06 | Сообщение # 26 |
участник
Сообщений: 228
Сейчас нет на сайте
| Quote (GECK) Используй вертикальную синхронизацию: СПАСИБО. наиболее неприятный эффект при горизонтальном смещении экрана убрался.
и, в-принципе работает нормально. с учётом того, что я юзаю режим 1050x1680x32bit. тот же BlackThorne гораздо поскромнее в этом плане И к тому же без скроллинга))Добавлено (19.01.2012, 16:06) --------------------------------------------- и тут же СЛЕДУЮЩИЙ ВОПРОС:
вот есть у меня ф-ции: - FrameFunc (опрос ввода и модификация состояния игры) - RenderFunc (перерисовка экрана)
я так понимаю, что они выполняются так часто, как могут.
RenderFunc меня в этом плане абсолютно устраивает, а вот что касается FrameFunc, то хотелось бы задать частоту её вызова. напр- 100 или 10 раз в секунду. тогда и отрисовка получится более качественной, т к она будет происходить чаще, чем изменения в том, что надо отобразить.
дневник разработчика
|
| |
| | |
| GECK | Дата: Четверг, 19.01.2012, 17:02 | Сообщение # 27 |
заслуженный участник
Сообщений: 658
Сейчас нет на сайте
| noname, судя по коду, проблема в другом. Каждый кадр все объекты нужно смещать не на фиксированную величину, а на скорость_объекта * dt, где dt - промежуток времени между кадрами. В случае hge это hge->TimerGetDelta(). Если сейчас в игре уменьшить фпс вдвое, то и сама игра замедлится вдвое, что не есть хорошо. Ну или я не понял проблему
Quote (noname) отрисовка получится более качественной, т к она будет происходить чаще, чем изменения в том, что надо отобразить. Ну, на самом деле нет. Если не изменять игровой мир, то в чем смысл несколько кадров рисовать одно и то же?
Всё гениальное просто. И хреново работает.
|
| |
| | |
| noname | Дата: Суббота, 21.01.2012, 23:24 | Сообщение # 28 |
участник
Сообщений: 228
Сейчас нет на сайте
| Quote (GECK) Если сейчас в игре уменьшить фпс вдвое, то и сама игра замедлится вдвое, что не есть хорошо именно так. а я и хочу как-то управлять частотой вызова этих функций.
Quote (GECK) Если не изменять игровой мир, то в чем смысл несколько кадров рисовать одно и то же? хм.. дельное замечание!
если всё просчитывается, а затем- всё выводится И при этом движение объектов на экране происходит с постоянной для каждого объекта скоростью, то лагов не должно быть.
ну чтож. буду надеяться, что отрисовка в HGE (RenderFunc) происходит только после того, как мир полностью обсчитан (FrameFunc). тогда остаётся только покумекать над переделкой моей функции отображения игрового мира (WordShow).
Quote (GECK) hge->TimerGetDelta() СПАСИБО, почитаю.
Добавлено (20.01.2012, 15:15) --------------------------------------------- --------------------------------------------- личкой пришло: HGE (Meragon) Вчера Quote FrameFunc исполняется каждый кадр, т.е. если у тебя вертикальная синхронизация сейчас в игре есть, то это значит фпс = частота монитора (в моем случае - 75 - кадров в секунду). Ограничить можно через произвольную установку fps: hge->System_SetState( HGE_FPS, 60 ); Если тебе надо ограничить передвижение, то используй вместо Input_GetKeyState, InputGetKeyDown.
Добавлено (20.01.2012, 15:45) --------------------------------------------- но это- не выход. от таких ограничений у меня только ещё больше лагает.
попробую последовать совету GECK. чё-та разленился, никак не начну))
Добавлено (21.01.2012, 13:05) --------------------------------------------- упс, нашёл ошибку- оказывается я видимую область каждый раз перерисовывал дважды.
Добавлено (21.01.2012, 13:19) --------------------------------------------- Quote (noname) упс, нашёл ошибку- оказывается я видимую область каждый раз перерисовывал дважды. в функции WorldShow перед оператором switch есть совершенно лишний условный оператор, который выводит либо стены либо обои, которые ниже перерисовываются в свиче.
щазз я занят более радикальной переделкой проги.
Добавлено (21.01.2012, 20:38) --------------------------------------------- ---------------------------------------------
игру упростил и перешёл на отрисовку с использованием dx=hge->TimerGetDelta(); http://dl.dropbox.com/u/52494730/Kolobok/2012_01_21/0016.zip временно оставляю Колобка в покое И перехожу к шахматам.
в папке Debug лежит экзешник со всеми нужными для запуска файлами. остальное- для тех, кто хочет поковыряться в исходниках.Добавлено (21.01.2012, 23:24) ---------------------------------------------
проблема: экзешник запускается только на моём компе(возможно, ещё у тех, у кого стоит MS Visual C++ и HGE).
здесь два отзыва от форумчан: http://forum.sources.ru/index.p....064302
проверил на компе своего отца- пишет "программа не запускается".
я так понимаю, что надо доложить в архив ещё файлов. НО каких?
дневник разработчика
Сообщение отредактировал noname - Суббота, 21.01.2012, 20:39 |
| |
| | |
| Demeron | Дата: Суббота, 21.01.2012, 23:29 | Сообщение # 29 |
User created in C++
Сообщений: 468
Сейчас нет на сайте
| noname, режим Release стоит? hge.dll и bass.dll вкинул к .exe? Под какую систему компилировалось?
|
| |
| | |
| noname | Дата: Четверг, 26.01.2012, 16:39 | Сообщение # 30 |
участник
Сообщений: 228
Сейчас нет на сайте
| Quote (Demeron) режим Release да, дело было именно в этом. тока щазз узнал об этом режиме. спасибо. (режим с Debug на Release переключается на стандартном тулбаре Visual C++).Добавлено (22.01.2012, 00:06) --------------------------------------------- итак, проблема решена
и, раз исходники я уже выложил выше, то кладу только то, что необходимо для запуска игры: http://dl.dropbox.com/u/52494730/Kolobok/2012_01_22/Release.zip
движение всё равно далеко до идеального, а так же колобок входит в стены.
мне нравится, как реализовано движение вот этой игре: http://gcup.ru/forum/28-15605-254259-16-1308849878 (нажимайте F1 и F2, чтобы настроить режим отображения) --
на этом временно бросаю Колобка и перехожу к шахматам. Добавлено (22.01.2012, 12:05) --------------------------------------------- рассматривал ещё раз 7-й туториал к HGE- там плавно двигается большое кол-во спрайтов одновременно
надо только разобраться, как это делается. и применить к шахматным фигурам. Добавлено (25.01.2012, 18:56) --------------------------------------------- --------------------------------------------- куча уроков по HGE есть здесь: http://hge-blog.ru/17_urok....io-2008 в самом низу жмите левую ссылку, чтобы перейти к следующему уроку. Добавлено (26.01.2012, 12:29) --------------------------------------------- --------------------------------------------- --------------------------------------------- хочу хранить спрайты всех шахматных фигур и кое-чего ещё в анимации(в хелпе в разделе hints&tips есть указание на то, что библиотеки спрайтов удобно хранить именно так).
в связи с этим вопрос: как загрузить анимацию из *.png- файла? в уроках что-то такое есть, но там загружается из какого-то менеджера ресурсов, а это мне вообще не понятно, да и не нужно. мне бы- просто из файла.. Добавлено (26.01.2012, 15:40) --------------------------------------------- --------------------------------------------- т е есть в файле *.png куча спрайтов одинаковых размеров. ВОПРОС: - как загрузить эти спрайты, чтобы они стали кадрами анимации? Добавлено (26.01.2012, 16:39) --------------------------------------------- решение найдено Code HGE* hge = hgeCreate(HGE_VERSION); HTEXTURE tex = hge->Texture_Load(filename/*имя файла с текстурой*/); float w = hge->TexureWidth(tex); float h = hge->TexureHeight(tex); hgeAnimation anim = new hgeAnimation(tex/*текстура*/, numFrames/*количество кадров на текстуре*/, FPS/*частота обновления, если кадры менять не надо - ставишь 0*/, 0/*верхний левый угол Х*/, 0/*верхний левый угол У*/, w/*ширина текстуры*/, h/*высота текстуры*/);
дневник разработчика
|
| |
| | |
| Demeron | Дата: Четверг, 26.01.2012, 22:09 | Сообщение # 31 |
User created in C++
Сообщений: 468
Сейчас нет на сайте
| noname, ну не совсем.... Нужно так: Code HGE* hge = hgeCreate(HGE_VERSION); HTEXTURE tex = hge->Texture_Load(filename/*имя файла с текстурой*/); float w = 64.0f;//ширина одного кадра float h = 64.0f;//высота одного кадра int numFrames = 10;//количество кадров в анимации float FPS = 10;//количество кадров в секунду (скорость воспроизведения) hgeAnimation anim = new hgeAnimation(tex,numFrames,FPS, 0/*верхний левый угол первого спрайта анимации по Х*/, 0/*верхний левый угол первого спрайта анимации по У*/, w,h);
Сообщение отредактировал Demeron - Четверг, 26.01.2012, 22:13 |
| |
| | |
| noname | Дата: Суббота, 04.02.2012, 10:10 | Сообщение # 32 |
участник
Сообщений: 228
Сейчас нет на сайте
| в туториалах к HGE есть пример, где перемещается много покемонов Zazaka.
я только что дотумкал и реализовал другой способ перемещения, который больше подходит к шахматной программе, которую я пишу: http://forum.sources.ru/index.p....3069006Добавлено (04.02.2012, 10:10) --------------------------------------------- как создать русский шрифт для HGE?
я бы предпочёл не сам рисовать шрифт, а перевести какой-нить из виндузовских.
дневник разработчика
|
| |
| | |
| GECK | Дата: Суббота, 04.02.2012, 10:18 | Сообщение # 33 |
заслуженный участник
Сообщений: 658
Сейчас нет на сайте
| В комплекте с HGE идет генератор шрифтов же. В окошке Characters range выбираешь нужные символы, и все.
Всё гениальное просто. И хреново работает.
|
| |
| | |
| noname | Дата: Пятница, 16.03.2012, 23:09 | Сообщение # 34 |
участник
Сообщений: 228
Сейчас нет на сайте
| да, появились другие дела, так что шахматы мои пока что заброшены. и давно.
скачать то, что получилось, можно здесь: http://dl.dropbox.com/u/52494730/CHESS/2012_02_05/0020.zip
если кто подскажет, какого поцелуя мои шахматы вылетают, когда я ставлю шах компу, буду признателен. по-моему я как-то не правильно юзаю движок.Добавлено (16.03.2012, 23:09) --------------------------------------------- кста, в моих шахматах переворачивать доску можно даже во время перемещения фигуры))
дневник разработчика
|
| |
| |
|