Вопрос к знатокам объектно ориентированного программирования

+66
InvisiblePonyв блоге IT Pony!20 сентября 2013, 21:18
Уважаемые товарищи знатоки! Возникло определенное желание и время написать нечто, имеющее визуальную и звуковую составляющую, а также отвечающее на команды пользователя типа нажатия клавиш. Иными словами игру. Прошу не улюлюкать и не гнать со сцены по примеру многих энтузиастов игроделов — для меня довести красный шарик стрелочками до финиша, избегая стенок, это тоже игра и на таком уровне я вполне способен что-то написать.
Основная проблема заключается в том, что хочется среду не слишком сложную к освоению и поддерживающую достаточно непримитивную графику. Первая мысль, конечно, «Flash», тем более что одну мини-игру на флеше я уже писал, но сомнения терзают меня — а не существует ли что-то лучше, о чем я знать не знаю? Скажем, я знаю, что в том же Си есть объектно ориентированное прграммирование, но без понятия каковы его пределы и может ли оно подойти для решения данной задачи.
Собственно, прошу дать совет касательно среды, а также, если это возможно, учебных пособий/гайдов/хелпов, которые вы могли бы порекомендовать по теме.

34 комментария

как вариант можно попробовать unity,
WhiteWing
0
Хм, интересный вариант. В таком, насколько я понял, можно удобно отработать собственно движок игры. Было бы неплохо еще найти, где лучше всего реализовать финальный код (правда скорее всего его придется переписывать на новую среду, но хоть с точки зрения алгоритмов все будет более-менее понятно).
InvisiblePony
0
Эм, а зачем его переписывать? Ныне очень много проектов прям на юнити и выходят, да не какие-нибудь, а весьма ожидаемые например Wasteland 2 на нем будет. Собственно Unity и стоит осваивать если есть замысел в будущем сделать крупный 3д проект. Для всего остального Flash удобнее на мой взгляд.
BackgroundPony
+1
Обязательно учту, спасибо за совет.
InvisiblePony
0
Для простых 3д игр и 2д игр конечно флеш. Удобные среды разработки(flash builder, flash develop, idea итд), удобное создание анимации, огромное количество готовых библиотек, годная кросплатформенность(не сложные игры с ходу заведутся в вебе, Ios, android, PC). Маленькие игры проще всего создавать именно на нем.

Для более комплексных 3д игр можно пробовать Unity: более годная кросплатформенность и производительность. Неплохой доступный инструментарий.

На какой-нить разновидности С++ можно написать все что угодно, но это потребует гораздо больших усилий и для маленького обучающего проекта на одного человека, по моему это не самый правильный выбор. С другой стороны преодоление всяких трудностей может дать довольно много опыта.
BackgroundPony
+2
За 3д проект я браться не собираюсь — пожалуй пока остановлюсь на 2д. Да и функционала особого навешивать не собираюсь — движение объекта по набору «стенок», соответственно на пути некие другие объекты, которых нельзя касаться. С точки зрения физических моделей и функций эта штука вообще должна быть простой, основная сложность будет заключаться пожалуй в динамической камере (во всяком случае я с таким еще не работал), ну и в том, что объектов будет много и анимация планируется очень качественная. Так что чем удобнее можно вставлять анимацию и рисунки без потери функционала, тем лучше.
InvisiblePony
0
Для 2д игр я бы однозначно советовал Flash. Разрабатывать в каком-нибудь IDE(я в основном работаю в Flash builder, но это скорее чисто сила привычки). Если погуглить можно найти достаточно много туториалов эффектов и програмных анимаций. Покадровые анимации делать в Flash CS 6. Если используется много спрайтов и важна динамика, то для производительности использовать старлинг.
BackgroundPony
+1
> годная кросплатформенность и производительность
Судя по бета-тесту Legends Of Equestria, там нет нормального ни того, ни другого :(
Todash
0
Не замечал проблем с производительностью в Legends Of Equestria. Основные не доработки там скорее с онлаиновой и игровой составляющей.
BackgroundPony
+1
А на моем пека оно жесточайше лагало :(
Todash
0
Legends Of Equestria в целом не очень на высоком уровне написан, по крайней мере сейчас. Так что я слонен винить в ваших лагах скорее разработчиков чем движок. В принципе Unity конечно медленнее чем нативные игры, но производительность вполне неплохая.
BackgroundPony
+1
Оно, кстати, компилируется в бинарники для каждой из платформ или тащит за собой ещё виртуальную машину со свойственными ей недостатками?
Todash
0
Unity везде таскает с собой Mono, но что это меняет? Что на .Net Framework, что на Mono с самого начала был JIT. Проблема только в модели данных, хотя это не совсем проблема. К тому же, все критичные части всё равно написаны на C++.
veon
+1
Qt
Современный C++ фреймворк всегда пригодится, плюсы нужны всем, программировать легко, потому что все очень логично.
Liksys
+2
По большому счету согласен с тем что С++ весьма полезен для развития и карьеры. Но как по мне проблем при первичном изучении и написании простой игры на нем будет больше( что не обязательно плохо). С другой стороны Action Script 3 тоже достаточно приятный и логичный язык и с него потом достаточно легко при желании перейти к Java и Javascript.
BackgroundPony
+3
Не перейдешь. Мозг надо к нормальным языка приучать с ранних проектов.
Liksys
0
Эм… а чем Action Script 3 не нормальный язык? Хорошая событийная модель, Ecmascript как основа языка итд… По мне он как раз заметно приятнее Javascriptа, а Java вполне удобно после него выглядит.
BackgroundPony
+1
python + фреймворки навроде pygame
Todash
0
Есть ещё java + libgdx, jmonkey и иже с ними, если тебе не жалко памяти :)
Todash
0
python отличный язык и обучение ему вполне полезно. Про разработку на нем именно клиентской части игр ничего не слышал(просто прошло мимо, хотя вот серверные и админские части на нем видел часто), но возможно в обучающих целях это и не плохой выбор.
BackgroundPony
+1
Делай всё в блендере!
PonyHater
+1
HTML5 и JavaScript, яркий пример игры — Game Dev Tycoon.
GMC Engine
yurijmi
0
Html 5 сейчас моден, но разработка на javascript это примерно + 200% времени разработки(исходя из опыта нескольких знакомых фирм). Плюс куча заморочек с браузерами. Плюс не очень проработанный инструментарий (не знаю как сейчас, а год назад были жуткие проблемы с удобной вставкой нормальных анимированнх спрайтов, такие, что я даже знаю 2 стартапа занимающиеся только этим). Вообщем сейчас разработка в Html 5, это скорее ставка на то, что его таки допилят до уровня на котором можно вести нормальную разработку, а не только отдельные проекты, в которых строчка html 5 вставлена скорее ради следованию трендам. То есть года через 3 возможно это и станет адекватной заменой unity и flash в игрострое, сейчас же это в основном банеры и пруф ов концепт игры.
BackgroundPony
+1
C&C (новая) на html5. Да, со спрайтами геморрой ужасный
yurijmi
0
А я думал ее на фростбайте 3 делают, который на С++ написан…
0x1042E
0
Я про C&C Tiberium Aliances
yurijmi
0
Да, со спрайтами геморрой ужасный
Собственно я про это и говорю. Можно делать проекты, можно даже большие игры, только смысла в этом пока мало. Это заметно дороже и сложнее причем на ровном месте. Приходиться использовать всевозможные довески для корректной работе в разных браузерах. Использовать не особенно удобные инструменты, да и яваскрипт еще есть куда улучшать. У Flash сейчас единственное серьезная неувязка, это весьма условная поддержка Linux платформы. Тут Adobe конечно не прав.
BackgroundPony
+1
в том же Си есть объектно ориентированное прграммирование
Сообщу на всякий случай: его там нет.

Для 2D-игр ещё есть движок LÖVE (язык программирования Lua, игра на нём, например), но для него голый код писать надо, в отличие от трехмерного Unity и блендера.
andreymal
+2
Сообщу на всякий случай: его там нет.

Его там есть :3 Равно как и в ассемблере и где угодно ещё.
На самом деле, ООП — это не свойство языка, а стиль написания программ. Просто в одних языках для этого есть удобные средства, а в других — нету.
Посмотри, например, на en.wikipedia.org/wiki/GObject — это весьма себе ООП на Си.
Это не значит, что надо бросаться его использовать. Просто оно есть :)
eeyupbrony
0
Про GObject знаю. Это называется костыль :) А в самом синтаксисе языка ООП нету.
andreymal
+1
если вам нужен простой 2д (2.5д) движок — большинство проектов делаются на райтракинг гейм маркет
или при знании языков программирования можно обратиться к конвертам доом1-2 на опен гл с++ например ризен3д или гздоом
(этот вариант я рассматривал для себя когда собирался спилить свою игру) — но плохо со скриптами.
также есть фифе (конверт движка фоллаут 1-2)
и грен эльф (что сырой но имеет 2д физику например)
все включая примеры статейки и уроки для несложных игор можно найти тута
gcup.ru/
UnicorN616
-2
Хм, а что это никто gamedev не упомянул?
AndrewTheHarya
+1
Если хочется «джаст фор фан» и без претензий на суперсовременные фишки — попробуй BlitzMax достаочно простой в освоении и мощный язык со своими проблемами оптимизации. Шарик с лабиринтом в строчек 10-20 можно написать.
Daylight
0
Я использую HGE.
Slam
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.