Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2011, 00:24   #21
Odinok
Пользователь
 
Аватар для Odinok
 
Регистрация: 08.03.2011
Сообщений: 91
По умолчанию

Цитата:
Сообщение от Ulex Посмотреть сообщение
Ну как бы не прикольная фича.


А слабо просто бомбермена но до конца доделать, со своей графикой адекватной, со звуками, с таблицей рекордов, бонусами, препятствиями различными, врагами разными, уровней хотя бы 30, сохранение и загрузку игры сделать?
С графикой адекватной не реально сделать, со звуками еще может быть, с таблицей рекордов легко, бонусы их осталось только на экран вывести, припятсвие различны, просто нет для них текстурок, а программно уже прописано, а с картой у меня предполагалось одна огромная карта, сохранение и загрузка это работы на час иль два.

Чем ближе я к завершению проекта, тем больше мне хочется, усложнить задачу
Всё будет так, как должно было быть, даже, если будет наоборот.
Odinok вне форума Ответить с цитированием
Старый 15.04.2011, 03:54   #22
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Я глянул ваш исходник. Сразу скажу, я не бог весть какой программист, тем более на Delphi, поэтому можете не воспринимать мой гундёж всерьёз. Но, пардон. То, чего можно было бы назвать движком - не увидел. Ожидал увидеть крутой замес из объектов, классов, структур и т.д. А не, нема их тут. Всё очень жёстко, куча констант.

У вас всего один объект. Тип клетка. И в этом объекте всё. Мне кажется это неправильно. Например, вот это:
Код:
  TGPlayerTxtr: Byte;                   {номер текстуры моба}
  TGPlayerKadr: Byte;                   {кадр анимации моба}
  TGPprTime:    Integer;                   {время для смены кадров анимации}
  TGPVector:    Byte;                   {направление для моба куда движится}
  TGPLast:      Byte;                   {направление для моба где уже был}
  TGPmesto:     Byte;
  TGPl_X:       Integer;                {смещение моба относительно клетки}
  TGPl_Y:       Integer;                {смещение моба относительно клетки}
Зачем всё это в объекте карта? Это параметры не карты, это параметры моба. Тот же самый вопрос про бомбу. У вас карта размером 64*64 и каждый элемент массива MapMas содержит резерв под моба и под бомбу. А бомб на поле может быть всего две. Зачем такая избыточность?

Нет уж, извините. Мухи отдельно, котлеты отдельно. Есть бомбы, заводите класс "бомбы", заводите банк (массив) объектов класса "бомба" и работаете с этим банком. То же самое с мобами, то же самое с бонусами.

Про бонусы - их я вообще не увидел. Нету их там вообще ни в каком виде. Если не заметил, ткните носом.

Цитата:
с таблицей рекордов легко
Да ладно. Прям так и легко? Хорошо, допустим у вас пять типов мобов и каждый из них стоит по разному, а также очки плюсуются за разрушение препятствий (разные типы препятствий, разная стоимость) и за подъём бонуса.

Анимации... Анимации должны вообще быть независимы от типа объектов. Должен быть прям класс (структура, как хотите) под названием "анимация". И универсальные методы для работы с анимациями. А то вот такой фрагмент:
Код:
            If MapMas[x,y].TGPlayerKadr=5 then
                MapMas[x,y].TGPlayerKadr:=1;
А если анимация будет из десяти кадров? А если у одного типа мобов анимация из пяти кадров, а у другого из десяти? Что тогда будете делать, опять кучу case-ов городить?
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 15.04.2011, 19:19   #23
Odinok
Пользователь
 
Аватар для Odinok
 
Регистрация: 08.03.2011
Сообщений: 91
По умолчанию

Цитата:
Сообщение от Ulex Посмотреть сообщение
Я глянул ваш исходник. Сразу скажу, я не бог весть какой программист, тем более на Delphi, поэтому можете не воспринимать мой гундёж всерьёз. Но, пардон. То, чего можно было бы назвать движком - не увидел. Ожидал увидеть крутой замес из объектов, классов, структур и т.д. А не, нема их тут. Всё очень жёстко, куча констант.

У вас всего один объект. Тип клетка. И в этом объекте всё. Мне кажется это неправильно. Например, вот это:
Код:
  TGPlayerTxtr: Byte;                   {номер текстуры моба}
  TGPlayerKadr: Byte;                   {кадр анимации моба}
  TGPprTime:    Integer;                   {время для смены кадров анимации}
  TGPVector:    Byte;                   {направление для моба куда движится}
  TGPLast:      Byte;                   {направление для моба где уже был}
  TGPmesto:     Byte;
  TGPl_X:       Integer;                {смещение моба относительно клетки}
  TGPl_Y:       Integer;                {смещение моба относительно клетки}
Зачем всё это в объекте карта? Это параметры не карты, это параметры моба. Тот же самый вопрос про бомбу. У вас карта размером 64*64 и каждый элемент массива MapMas содержит резерв под моба и под бомбу. А бомб на поле может быть всего две. Зачем такая избыточность?

Нет уж, извините. Мухи отдельно, котлеты отдельно. Есть бомбы, заводите класс "бомбы", заводите банк (массив) объектов класса "бомба" и работаете с этим банком. То же самое с мобами, то же самое с бонусами.

Про бонусы - их я вообще не увидел. Нету их там вообще ни в каком виде. Если не заметил, ткните носом.


Да ладно. Прям так и легко? Хорошо, допустим у вас пять типов мобов и каждый из них стоит по разному, а также очки плюсуются за разрушение препятствий (разные типы препятствий, разная стоимость) и за подъём бонуса.

Анимации... Анимации должны вообще быть независимы от типа объектов. Должен быть прям класс (структура, как хотите) под названием "анимация". И универсальные методы для работы с анимациями. А то вот такой фрагмент:
Код:
            If MapMas[x,y].TGPlayerKadr=5 then
                MapMas[x,y].TGPlayerKadr:=1;
А если анимация будет из десяти кадров? А если у одного типа мобов анимация из пяти кадров, а у другого из десяти? Что тогда будете делать, опять кучу case-ов городить?
про бомбы будет отельный массив из 100 элементов, ну при убийстве моба добовляется значение в переменную, не так уж сложно это организовать, с анимацией вы скорее правы, над этим мне стоит подумать

То, чего можно было бы назвать движком - не увидел.
МММмм а по вашу, что есть движок игры
Всё будет так, как должно было быть, даже, если будет наоборот.
Odinok вне форума Ответить с цитированием
Старый 15.04.2011, 20:27   #24
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Цитата:
МММмм а по вашу, что есть движок игры
Если рассматривать движок как некую логическую структуру внутренней организации программы, то это есть полный и достаточный набор классов, структур, методов и процедур, необходимых для реализации такого типа программ.
Вот например - моб, враг, в случае убийства которого из него могут вываливаться всякие плюшки. У него есть набор свойств. И надо постараться описать его класс как можно универсальнее. Они могут быть разных типов, могут быть одинаковых типов, но разные по скорости, силе, уровню брони, могут таскать разные вкусности и т.д. Вот как вы сейчас сделаете двух одинаковых мобов, но с разными скоростями движения, или как вы сейчас сделаете моба, которого можно убить с двух/трёх попаданий? Опять будете прописывать это в виде case-ов и if-ов непосредственно в функциях? Тем самым вы всё больше будете усугублять неуниверсальность ваших процедур. Это плохо. Процедуры должны быть по возможности универсальны. Это достигается путём заложения свойств объекта в сам объект, а не в методы, его обрабатывающие. Например, есть процедура, обрабатывающая передвижения моба, она универсальная, она берёт структуру объекта и там есть параметр скорость, поэтому ей впринципе даже неинтересно кого она двигает, лучника, или дракончика. А вдруг это медленный танк, который наелся бонусов скорость и должен носиться как угорелый по карте. Как вы сейчас это сделаете? Вот это и называется структурой программы (и, наверное, может называться движком).
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 15.04.2011, 23:37   #25
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Добавлю пару слов, если позволите.

Движком структура будет называться только тогда, когда можно будет зайти в каталог, выбрать специализированный файл и заменить параметры не вмешиваясь в код программы, после чего объект без проблем подключится не нарушая целостности. Также должен быть набор функций и процедур для работы со спрайтами и шрифтами, т.е. на входе параметры отрисовки, на выходе графика в указанное место с анимацией или без, ...все должно быть заложено.

Для начала нужно разделить объекты на группы, что есть карта, что есть моб, что есть бомба, что есть бонус, что есть банк анимации, и пр. ...все это типы записей. К этим типам нужны элементарные процедуры, например, к мобу: появление, движение, атака (съедание героя), гибель. А что нужно пользователю, если это будет РПГ? ...подумай, там хуча та еще.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 16.04.2011, 01:36   #26
Odinok
Пользователь
 
Аватар для Odinok
 
Регистрация: 08.03.2011
Сообщений: 91
По умолчанию

Цитата:
Сообщение от Beermonza Посмотреть сообщение
Добавлю пару слов, если позволите.

Движком структура будет называться только тогда, когда можно будет зайти в каталог, выбрать специализированный файл и заменить параметры не вмешиваясь в код программы, после чего объект без проблем подключится не нарушая целостности. Также должен быть набор функций и процедур для работы со спрайтами и шрифтами, т.е. на входе параметры отрисовки, на выходе графика в указанное место с анимацией или без, ...все должно быть заложено.

Для начала нужно разделить объекты на группы, что есть карта, что есть моб, что есть бомба, что есть бонус, что есть банк анимации, и пр. ...все это типы записей. К этим типам нужны элементарные процедуры, например, к мобу: появление, движение, атака (съедание героя), гибель. А что нужно пользователю, если это будет РПГ? ...подумай, там хуча та еще.
Щас над этим думаем
Всё будет так, как должно было быть, даже, если будет наоборот.
Odinok вне форума Ответить с цитированием
Старый 14.05.2011, 18:56   #27
Odinok
Пользователь
 
Аватар для Odinok
 
Регистрация: 08.03.2011
Сообщений: 91
По умолчанию

Переделал структуру программы, появились отдельные типы для игрока, бомб, карты
Кто может сказать как оптимизировать вывод графики на экран, так как при взрыве бомбы заметно падает производительность игры


PS Игра еще далеко не готова, нет интерфейса, анимации взрыва стен, не сделано нормальное меню, и прочие плюшки для комфортной игры
Вложения
Тип файла: zip Проект.zip (632.4 Кб, 64 просмотров)
Всё будет так, как должно было быть, даже, если будет наоборот.
Odinok вне форума Ответить с цитированием
Старый 18.05.2011, 20:27   #28
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

В код не залезал, но если поставить две бомбы подряд, то они взрываются одновременно. Стало быть, недостаточно хорошо вы выделили сущности. Каждая бомба должна иметь свой собственный таймер.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 19.05.2011, 14:45   #29
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

Цитата:
В код не залезал, но если поставить две бомбы подряд, то они взрываются одновременно. Стало быть, недостаточно хорошо вы выделили сущности. Каждая бомба должна иметь свой собственный таймер.
Да нет, как раз это правильно. Вы в оригинал играли? Если бомба взрываясь задевает другую, то они взрываются вместе.
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 19.05.2011, 16:55   #30
Odinok
Пользователь
 
Аватар для Odinok
 
Регистрация: 08.03.2011
Сообщений: 91
По умолчанию

МММмм, кто-нибудь может залезть в код и посмотреть, что можно оптимизировать
Всё будет так, как должно было быть, даже, если будет наоборот.
Odinok вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На Delphi 7 сделать игру кто хочет стать миллионером в delphi 7 666dart666 Помощь студентам 11 04.11.2010 17:57
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism savva-paladin Софт 18 02.10.2010 20:24
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54
не StringGrid1.Cells[1,1]:='Delphi'; а вот так SG1.C[1,1]:='Delphi' Nemesisking Компоненты Delphi 7 08.09.2007 03:27