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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2013, 16:50   #1
Ruz34
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 10
По умолчанию Birds Killer

Моя первая законченная(почти) игра. Суть в отстреливании птиц. Среда программирования: Borland Delphi.

Управление: Кликать мышкой по птицам, для перезарядки используем 'R'. В обойме 2 патрона, дополнительные можно купить в магазине(нижний правый угол).


P.S. Игра самому не нравится. С самого начала была продумана плохо и поэтому является скучной. Пытался исправить добавлением миссий, но не вышло, поэтому вряд ли буду работать над ней еще. Но если есть идеи по улучшению, то не молчите.

Анимация птиц не моя! Они находятся в свободном доступе в интернете.
Вложения
Тип файла: rar Birds Killer.rar (505.2 Кб, 17 просмотров)
Ruz34 вне форума Ответить с цитированием
Старый 11.09.2013, 18:27   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

В целом задумка неплохая. Этакий клон морхуна, со своей спецификой.
Поиграть, конечно, получается немного, однообразная игра, но тем не менее, определённый фан есть, если бы ещё были падающие после выстрела птицы в какой-то забавной позе (как в морхуне), было бы уже весело играть.
Не очень способствует в такой казуалке иметь всего 2 патрона на перезарядку, которая очень неудобна (если её ещё юзер догадается искать на клавиатуре, кнопка R малоочевидна - надо знать про Ваш пост тут, а ридмихи не идёт в комплекте), в морхуне, например, на правую мышку перезарядка поставлена, что удобно.

Систему магазина сложно оценить, т.к. чтобы его использовать надо серьёзно потренироваться, что требует времени, а это не каждый будет делать в такой игре.
По сути ведь, игра ведётся просто на место в таблице рекордов, а в морхуне была серьезная "квестовая" составляющая - кучи секретов и комбинаций выстрелов, что сильно поднимали игру и хотелось переигрывать снова и снова.
Также не очень нравится графика и оформление, анимированные птички - хороши вполне, а вот фоны (игра и магазин) и тем более интерфейс - смазанные по краям картинки (видимо из-за jpg размытия и невозможности адекватно использовать TransparentColor) и стандартные VCL-контролы очень портят впечатление. Фоны то уж можно было тоже тяпнуть с инета, да и кнопки из картинок у Вас есть - в меню.

По программной части тоже нарекания - после показа геймовера можно дальше кликать мышкой, слышать звук выстрела, осечки, перезарядиться со звуком и так хоть до бесконечности. Также странно мерцает светофором меню при перемещении мышки над кнопками - может так и задумано, но не приятный эффект ни разу. Также мелочь - текст при ошибке ввода (пустом никнейме) остаётся красный и уже никак не меняется, аналогично вроде ведёт себя кнопка ок при геймовере, только она остаётся фиолетовой при наведении мыши и после не меняется, а правильное поведение (подсветка при наведение и возвращение прежнего вида при отведении)- неявная подсказка что элемент интерактивен (между прочим, тоже ошибка - то что "ок" ничем не отличается от иного текста и не обрамлён рамкой, как привычно для кнопок- не сразу можно понять что клик по нему выведет в меню).

Чисто программно-моделировочная ошибка - альт+ф4 (часть пользователей пользуется им) на форме игры оставит игру висеть в процессах - нужно решение - либо отслеживать закрытие формы и ставить меню или вообще выходить из игры, либо сформировать всю работу на одной форме. Использование кстати нескольких форм и стандартных контролов это лёгкая возможность знающему человеку манипулировать ими через специальные программы и производить недопустимые операции - показывать формы/кнопки и прочее нежели те что разрешены на данном этапе в игре, менять некоторые значения (я не говорю про артмани и подобное, это другая песня). Поэтому одна форма с минимумом готовых контролов, а лучше чтобы они все были собственные рисованные это уже будет очень хороший шаг вперёд к грамотному подходу.

В целом, я бы сказал так - что это должно быть для Вас хорошим учебным проектом, и то, что оно доведено до играбельного состояния уже огромная заслуга Вас как "предпринимателя" и учащегося. Поэтому, если есть желание - стоит развивать, если же нет желания именно развивать эту игру - ничего страшного - наоборот, стоит взяться за ещё более сложное и занимательное дело - и тогда учебный рост не заставит себя ждать.

Так что удачи в любом проекте Вам !
phomm вне форума Ответить с цитированием
Старый 13.09.2013, 19:47   #3
Ruz34
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 10
По умолчанию

Спасибо за ваши советы и замечания, но я решил не продолжать работу над этой игрой и перешел к созданию 2D платформера. В новой игре я учту большинство ваших советов...
Ruz34 вне форума Ответить с цитированием
Старый 13.09.2013, 20:24   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Ruz34 Посмотреть сообщение
Спасибо за ваши советы и замечания, но я решил не продолжать работу над этой игрой и перешел к созданию 2D платформера. В новой игре я учту большинство ваших советов...
А зачем тогда было выкладывать? У нас у каждого есть по скелету в шкафу. Хоть бы вопрос задали - "Оцените мою первую игру", а так, пост просто в никуда.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.09.2013, 22:49   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

По платформерам стоит изучить прикреплённые темы в этом разделе - Уроки по созданию игр для новичков
Особенно обратить внимание на примеры Beermonza , такие , например , как этот
phomm вне форума Ответить с цитированием
Старый 14.09.2013, 10:51   #6
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
По платформерам стоит изучить прикреплённые темы в этом разделе - Уроки по созданию игр для новичков
Особенно обратить внимание на примеры Beermonza , такие , например , как этот
Немного добавлю от себя - в теме "Уроки..." не стоит особенно серьезно относиться к самым первым постам - там не очень хороший подход даже для самых простых игр. А вот дальше уже начинаются действительно полезные для новичка сведения. Мне в свое время очень помогло.

И по поводу поста Beermonza - там есть ссылка, последняя, "Создание меню/интерфейса". Я очень не советую варианты 1 и 2, поскольку они страшно неэффективные, но на деле и ненамного проще пункта 3. Я бы для новичка рекомендовал бы вариант, родственный третьему, только без пустых Image (вместо них получать клики по главной форме и через координаты клика считать, попал ли он в заданный прямоугольник, в который мы отрисовали ту или иную кнопку; можно даже хранить координаты кнопок в TRect вместо TImage, не используя ненужную информацию). Такой метод показал себя сравнительно простым и при должном использовании достаточно эффективным.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 14.09.2013, 16:28   #7
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Гром, когда создаёшь очередной совет, он не должен быть сразу самым эффективным. Гораздо поучительнее - "прогнать" начинающего через элементарные компоненты, входящие в пакет среды Delphi, чтобы он прочувствовал где эффективнее, где сложнее, а где проще, лично для него. От простого к сложному. Я, хоть и указывал несколько вариантов, но с конкретной целью, а сам пользуюсь совершенно другими, которые в тему "начинающим" уже не бьют, это сильно сложно. Поэтому всё правильно.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 14.09.2013, 18:56   #8
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Beermonza, само собой, не стоит сразу пытаться писать суперсложный код, который дает максимальную эффективность. Абсолютно согласен, что начинать нужно с чего попроще, но и к принципиально индусскому коду тоже не стоит стремиться. Соотношение простота-эффективность должно быть разумным с обеих сторон. Есть хорошая пара цитат на эту тему:
Цитата:
Преждевременная оптимизация — корень всех зол.
— Д. Кнут
С другой стороны, мы не можем игнорировать эффективность.
— Джонатан Бентли
Излишне пессимизированные варианты могут быть опасны во-первых тем, что могут создать иллюзию, что "так тоже можно" и тогда человек на них и застрянет и не будет использовать "хорошие" методы; во-вторых тем, что могут на деле давать почти нулевой прирост простоты при чудовищном падении эффективности. Я все-таки за то, чтобы с самого начала приучаться к таким методам, которые при умеренной уровне сложности как можно ближе к "взрослому" подходу.

На самом деле можно с помощью всего одного брошенного на форму компонента (таймера) получить очень простой, но эффективный вариант. Я в свое время именно с такого кода на сотню максимум строк начинал свой "Погостъ".

Вот, например, в плане сложности. Image на форме против рисования через Bitmap на канву формы. Если мы делаем меню, то в первом случае имеем код
Код:
Событие ИмейджСтартГейм-КнопкаМышиНажата
{
начать игру
}
Событие ИмейджПомощь-КнопкаМышиНажата
{
показать помощь
}
Событие ИмейджВыход-КнопкаМышиНажата
{
выход
}
имеем тривиальную проверку
Код:
Событие Форма-КнопкаМышиНажата(X, Y)
{
если (X >  10 и X < 110)
 {
 если (Y > 10 и Y < 40)
  начать игру
 если (Y > 50 и Y < 80)
  показать помощь
 если (Y > 90 и Y < 120)
  выход
 }
}
Код действительно стал немного сложнее, но только самую малость, никаких непонятных новичку выкрутасов. Но при этом игра стала гораздо ближе к тому, "как надо делать".

Что касается подходов "один объект - один Image на форме" против "рисование на Canvas формы", то на деле вообще никакого выигрыша нет, особенно если мы делаем анимацию. В первом случае мы пишем
Код:
Image1.X = NewX
Image1.Y = NewY
Image1.Canvas.Draw(0,0,НовыйКадр)
во втором:
Код:
Object1X = NewX
Object1Y = NewY
Form1.Canvas.Draw(Object1X, Object1Y, НовыйКадр)
Вот практически и все отличие в использовании имейджей и битмапов. Принципиальной разницы в коде между формами и панелями (варианты 1 и 2) я вообще не вижу (но у меня при попытке работать с формой был еще такой косяк, что сильно отставала от нижней при ее перетаскивании; кстати, это дополнительная сложность по сравнению с вроде бы более простыми панелями - нужно следить за перемещением главной и двигать за ней второстепенную).

Отличие в плане кода третьего варианта от первых двух - что мы работаем с битмапами вместо форм и панелей, но при этом выполняем с ними почти одни и те же операции.

В общем, я бы предложил не рассматривать варианты 1 и 2, а начинать сразу с третьего (факультативно - добавить мой вариант оптимизации, заменив пустые имейджи для отслеживания нажатия на простую проверку в событии нажатия на форму; если расположение объектов может быть произвольно, то хранить не весь TImage, а только TRect и пробегать их все в цикле, проверяя через один простой IF попадание внутрь).

Игры - не та вещь, в которой стоит изучать компоненты, предназначенные для создания интерфейса "офисных" приложений. Если мы делаем игру, то мы делаем игру, а не "МС Ворд, в котором один пункт главного меню бегает за другим". Лучше сначала просто не делать игры, в которых нужно использовать кнопки и полоски прогресса, вместо того чтобы лепить на форму стандартные. Змейка или Пакман - хороший вариант для начала.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 14.09.2013, 20:30   #9
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Уважаемый Гром, это не Вам решать, что для начинающего проще и правильнее, ...правильнее на текущий момент для новичка то - что он сумел освоить. Первая игра, обычно, ничем не отличается от программы (тот же Сапёр). Все пункты и 1 и 2 и 3 и 4 абсолютно разные, разные по восприятию, разные по реализации. Вы может и будете прописывать условия на диапазон клика, а кто-то пока не освоил или ему проще разместить на нарисованном куске графики Image и на клик вставлять процедуру, ...достаточно подвинуть и изменить размеры визуально на самой форме, чем считать пиксели и переписывать условие бесконечно. Уровень более опытного не равен уровню начинающего. Об этом нужно помнить. Если бы варианты были бы равноценные или не заслуживающие внимания их бы не было в моём описании.

Скажу прямо, создание игры - это вообще не для начинающих, но что делать, с чего-то нужно начинать. Если Ваш совет - "пропустить" имеет смысл только "я бы выбрал последний", то это Ваше личное дело, запретов не существует, аналогично как и "правильно/неправильно" тоже не существует, есть "понимаю/не понимаю", "быстро/медленно", "сложно/просто", ...сочетания этих противоположностей очень сильно влияют на работу программы (игры).
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 15.09.2013, 11:26   #10
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Beermonza, позвольте с вами не согласиться. Можно, казалось бы, предлагать новичкам попробовать все варианты - и правильные, и допустимые, и откровенно извращенные, бессмысленные и беспощадные. Но зачем учить плохому? Я, откровенно говоря, не вижу принципиальной разницы между "попробуй сделать цикл через GOTO" и "тебе уже 12 и ты все еще не пробовал алкоголь, сигареты и женщин?".

"В жизни надо все попробовать" - крайне гнилое дао. Нельзя надеяться на то, что новичок, попробовав "неправильный" способ, сразу поймет, что он действительно хуже других альтернативных. Во-первых, есть законы Мерфи, и если человек может что-то не понять, то он почти наверняка и не поймет. Во-вторых и в главных, чтобы самостоятельно понять, что какой-то вариант плох, зачастую нужно иметь довольно глубокое понимание предмета, которого у новичка еще нет. А к тому моменту, как человек станет достаточно опытным, он уже привыкнет делать неправильно и не будет переучиваться.

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

Цитата:
Скажу прямо, создание игры - это вообще не для начинающих, но что делать, с чего-то нужно начинать.
Чтобы начать делать простые игры, нужно уметь совсем немного. Но знание ифов в это немного все-таки входит (а знание свойства Form.Transparent - нет). Если человек не знает азов языка - не нужно пытаться писать с помощью того, что он знает, нужно просто прочитать про условные конструкции. Простейшие алгоритмы вначале гораздо важнее, чем дебри VCL.
Цитата:
Если Ваш совет - "пропустить" имеет смысл только "я бы выбрал последний"
Мой совет означает "не нужно идейного быдлокода, особенно когда он не будет проще в реализации, чем простой и правильный код". Почему пункты 1 и 2 не проще в реализации, но хуже как в смысле бессмысленности и беспощадности, так и в плане эффективности, я расписывал в прошлом посте.

Не подумайте, пожалуйста, что я против простых методов. Можно на банальных ифах и функциях с помощью очень простых алгоритмов написать короткий, чистый и в меру эффективный код. Но я против приучения к быдлокоду и извращениям, которые будут к тому же не проще в понимании и гораздо менее эффективны. "Хуже и извращеннее" не значит "проще и короче". Не надо учить людей плохому, когда можно учить хорошему.

P.S. Я, конечно, понимаю, что пост не по теме Birds Killer-а, но раз уж мы даем человеку советы, то и я дал свой, попутно обосновав свою точку зрения. Ну а дальше пусть ТС сам решает, подходит ему моя точка зрения или нет.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
компонента делфи подобие Angry birds S@dist Фриланс 5 22.01.2013 15:17