Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Зачем мы этим занимаемся?(филосовствуем) [D6, WinXP]


Страницы:   1 2 3 4 5 6 7

NailMan ©   (2004-06-17 18:27:00) 

Имеется в виду занятие геймдевом...

Бдящим начальникам: Прошу ветку никуда не переносить(в потрепаться), так как тамошний народ в большей части мало понимает наши так сказать интимные геймдевелоперские проблемы.

<Также навеяно ветками про оболочки GLScene и DelphiX>

Хочется обсудить и выслушать мнения по поводу того чем мы тут занимаемся. Так сказать по сути и делу мы ничем от садомазо не отличаемся. Сидим годами-месяцами у компа и насилуем себя - и мозг и желудок, ну и наконец бедную задницу отсиживаем.

Какова ваша конечная цель?

Скажу от себя: считаю что конечная цель должна быть самосовершенствование и создание работоспособного и жизнеспособного продукта, который заинтересует не только вас, но и других. Залог второго - продуманная и красивая графика/саунд, удобный интерфейс и геймплей(интересный сюжет и реализация задуманного). Залог первого - реализация второго полностью своими мозгами.
Имхо, считаю тех кто ратует за быстрое создание игры с использованием интерфейсов ускоряющих создание(оболочек DX и OGL) не настоящими программистами, так как такой подход заранее убыточен в плане самосовершенствования и неправилен в плане создания качественного продукта, а своего рода дизайнерами, которые готовы реализовать свои идеи быстро, но с непременной потерей красоты реализации.

Игры создаются не месяцами, а годами. Хороший тому пример Half-Life 2 -создается уже 5(!) лет и до сих пор еще финал-релиз не вышел(ожидается летом). Судя по демкам - плоды 5-летнего непосильного труда(переписано я так думаю 90-95% кода абсолютно с нуля) стоят потраченного времени на все 120%. Заметьте - это писалось в уже опытной и очень мощной команде девелоперов, дезайнеров, художников и т.д и т.п.

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

Скажу правду - эти мысли полезли ко мне после того как я закончил(вчера) разработку своего GUI для игрушки. Хотя на сайте валяется демо этого GUI, новый я переписывал с абсолютного нуля, приложив к разработке его структуры изначально привильные(в моем понимании и при влиянии специфики моего будущего движка) подходы. Скажем так я за основу GUI взял тот же подход как и в VCL. Все элементы интерфейса(tbutton,tedit,tlabel,tcheckbox,tlistbox,tscrollbar и т.д.) написаны с нуля и все придумывалось собственными мозгами. Скажем так - я не мог написать грамотного алгоритма  таскания слайдера для скролла больше полугода. Именно реализовав систему GUI в заведомо правильном варианте все сделалось за 10 мин.
Тот старый ГУИ этого не позволял. Теперь посмотрите сколько я потратил на это времени - полгода я писал тот GUI и за неделю написал этот, причем ничего из того старого кроме констант не перенималось.

(Для справки: сегодняшний вариант протодвижка пятый вариант и, надеюсь, последний)

Фактически я теперь мугу делать любые формы с любыми элементами меню в любых вариантах(в рамках игры) без особых проблем и с хорошим качеством графики и комфортом пользования для юзверя(все аналогично привычным дельфевским компонентам).

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

Я конечно же не смогу осилить полностью свой проект(кто знает о нем то поймут какой объем придется делать), поэтому, когда осилю 50% движка я возможно буду искать единомышленников, которые смогут помочь с оставшейся частью. Главное это основа, которая должна быть известна лишь одному человеку. Собственно точно так же и делается в больших конторах(скажем в Valve или ID Soft.). Все в целом(взаимодействие всего со всем) знает только отсилы пара человек(если не один), остальные делают только небольшие части.

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

Скажем Quake3 отличается от Q2 также как и Doom от Quake. Большая половина кода переписана с нуля. Фактически это новая во всех отношениях игра, с новым уровнем графики, физики и геймплея. И до сих пор пользуется огромной популярностью.
Взять даже тот самый half-life. Фактически я не видел сколько уж хороших в плане играбельности игр на основе этого движка(Counter-Strike это всего лишь мод[надстройка] над Half-Life и фактически там ничего не переписывалось) с момента выхода Халвы. Это потому что идеи которые закладывались в игре(на основе движка HL) не могли быть реализованы этим движком, и видимо из-за лени и желания поскорей "срубить бабла" писатели не заботились кропотливым написанием собственного чада. Лишь декоративный моддинг купленного двигла. Порой глюков в такой игре больше чем в оригинале именно из-за того что документация на купленный движок не гарантирует его понимание при любом уровне "мозгов".

Вобщем привожу итог своих мыслеблудий: если ты ALLхочешь стать гемдевелопером, тоесть разработчикомигр, а не гейммейкером, тоесть " делателем" игр, и твоя цель научитьсяделать игры, то ты обязан делать все сам и с самого нуля - с азов и вверх по лестнице.
Если ты ALLхочешь создать свою "игру", а точнее "поделие" в реальные сроки(месяцы), и тебе важен исключительно результат, то и называй сабя гейммейкером(я всегда рад помочь и тем и другим если у человека есть желание понятьсвою проблему).

Кстате почему так происходит, что многие, имеющие идею(порой даже очень хорошую идею игры), прогорают буквально на втором месяце нашей тернистой геймдевелоперской жизни? Ответ прост - они не программисты в истинном смысле слова, а геймдизайнеры и сценаристы. А сценаристы кина не могут правильного снять - они не режиссеры и не операторы.

Я очень надеюсь повтречать хорошего дизайнера когда у меня уже будет что показать миру и за что не будет мне стыдно(пока мне стыдно за свою демку). Хотя я и сам неплохо владею моделлингом да и помощник есть, который взял на себя отчасти этот нелегкий труд, все таки для качественного продукта требуется настоящий дизайнер-художник и с этим не поспоришь. Чтож буду писать и буду надеяться что допишу...садомазо-програмисты рулят!

Вот.


cyborg   (2004-06-21 09:21:00) [81]

Огромное Кулясище
Знаешь в чём разница между нами?
У меня есть готовые проекты, у тебя нет. Так кто из нас знает как делать?


КиТаЯц   (2004-06-21 07:08:00) [82]

2 kas-t   (20.06.04 22:56) [48]
Респект! Поддерживаю!


kas-t   (2004-06-20 22:56:00) [83]

Долго и внимательно читал этот топик. Сделал для себя вывод, что спор идет примерно о следующем: «- Я круче!
- Да нет! Мы круче, мы пишем сами!
- Да нефика Вы лохи! Потому что изобретаете велосипед!
- Мы его изобретаем, потому что ранее изобретенные велосипеды нам не нравятся!
- Ну и дураки!
- Ну мы же не виноваты что если слепить ранее изобретенный велосипед с нашим велосипедом он будет криво ездить. Поэтому изобретаем свой.» и т.п. и т.д.

А вообще общее впечатление от топика осталось такое. Что те, кто пишет на чистом Direct (в смысле без оболочек), просто хочет похвастаться перед теми, кто пишет при помощи оболочек. Кстати хочу подчеркнуть, что именно ПИШУТ при помощи оболочек! Так как не умея программировать и скачав компоненты DelphiX или GLScene (и другие им подобные), игру просто не написать. Тут вы уважаемые глубоко уже запутались в терминах гейммейкеры и программисты. Гейммекерами – я считаю тех кто потрашит уже готовую игрушку изменяя картинки, текстурки, скрипты, сюжет, а если все вместе делает просто мод к уже существующей игре. А программистов совсем не разделяет то на чем он делает игру, на базах данных или на бейсике при помощи кнопочек, или на чистом айпи, а может и при помощи оболочки. Важно во всем этом то, что он её сидит и пишет, придумывая все почти с самого нуля. Подчеркиваю почти! Но он тоже программист!

Вообще хотелось бы отдельно сказать автору топика «Не суди других, и сам не будешь судим» (с) Умный дядька и Ко.

А от себя хочу добавить, что пока NailMan напишет своего космосима, его игра уже никому не будет интересна. Так как сейчас все его новомодные спецэффекты просто устареют к релизу, как собственно и графика. К тому времени уже такие игры будут… Которые нам и не снились. Еще пять лет назад мы только мечтали о том, во что сейчас играем. Тем более если команда Valve трудится над Half-Life 2 уже пять лет. То сколько же ты (NailMan) будешь трудиться над своим проектом!? Пахнет долгостроем :)

В общем спор идет ни о чем…

ЗЫ: Всем успехов в своих проектах! Надеюсь они никогда не запылятся на ваших винтах.


Огромное Кулясище   (2004-06-20 21:56:00) [84]

2 NailMan:

Я добьюсь своего и вы ещё позавидуете своему бесцельно прожитому времени. На сим с меня для этой дурацкой ветки хватит. Избрали свой путь - сидите и молчите в тряпочку. Один опоздавший труп у нас есть (cybord и Чебуратор времён 1994), второй - готовится (miek и демка SpriteUtils 2 в 16-цветном режиме 320х200).


wiz   (2004-06-20 21:53:00) [85]

2 NailMan: мне-то оно тоже не особо нужно... я-то уверен, что pure вариант это лучший вариант... и у меня мой проект потихоньку двигается (жаль, что потихоньку)

---
бритва Оккама: 'Не создавайте сущности сверх необходимого'


NailMan   (2004-06-20 21:36:00) [86]

Огромное Кулясище

> Пользовался когда-нибудь Graphic32? Если нет, то я не смогу
> объяснить. Если да, то слушай. Graphic32 - это замечательная
> вещь. Это безупречная логика, простота и мощность одновременно.
> Замечательный подход - 32-битные изображения, т.е. изображения
> с маской прозрачности. Можно забыть про всякие ColorKey,
> это не нужно, это всё включает в себя такой подход.

К сожалению(или наоборот?) я сие не видел, но вот мне скажи, это все раелизуется программным путем? Если да, то вывод сделанный тобой...

> Получилось обалденно красиво, но увы, FPS умер.

Вполне логичный результат использования того что не использует аппаратной части компа.


> И вот теперь я хочу тебя спросить? Я лентяйничал? Я не работал.
> Я использовал всё готовое при создании этого?

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


> Я не представляю, как сделать то же самое при помощи DirectDraw.
> Точнее знаю и пытаюсь сейчас, но задача мне представляется
> лишь попыткой уподобиться - придётся хранить две поверхности
> на один спрайт, я не представляю, как можно сделать проективное
> преобразование. Мне неудобно использовать DirectDraw для
> достижения своей высокой цели.

А зачем вообще использовать DirectDraw для 2Д, если еще со времен DX7 можно все 2Д реализовать через 3Д(назовем это условно 3Д)? Со всеми прибамбасами в виде аппаратного Alpha и прочего?

Заменить спрайты можно наборами треугольников в XYZRHW(Экранные координаты) хоть с 8 текстурами на треугольник. Используй что-хочешь и как хочешь. Eсли не хочешь поиметь аппаратный lightning(имею ввиду точечные источники), то придется юзать в нормальных координатах и позаботиться об обеспечении эмуляции изометрии, посредством установки в правильном направлении камеры.


> Да, я так и буду делать, но на меня косо смотрят, более
> того, меня называют ДЕЛАТЕЛЕМ игр, меня называют НОВИЧКОМ
> (см. первый пост), причём делает это человек, который досконально
> не знает, что такое antialiasing (см. соответсвующую ветку,
> если помнишь).

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

wiz ©
> PPS (он же anti-offtopic): ну что? никто не решился делать
> сравнение "pure-coding" versus "component-using"???

Да как тебе сказать, я бы согласился бы если не мой большущий проектище, которое наконец-таки сдвинулось с места(после 2 месяцев активной фазы моей болезни и пост-реабилитации).

---
WBR, NailMan aka 2:5020/3337.13


Огромное Кулясище   (2004-06-20 21:26:00) [87]

2 wiz:

Ты сам гнул свою линию и свёл меня к тому, что планировал ещё в посте 29. Ещё раз - с теми алгоритмами, про которые шла речь, у меня проблем нет.

> Ну не знаешь ты пока многого и не знаешь. Научишься когда-нибудь.

Чего я не знаю?

Вот и сейчас - пример из книги Краснова работает медленнее, чем DelphiX.


wiz   (2004-06-20 19:28:00) [88]

2 Огромное Кулясище:

>...не повод для гордости...
Я разве горжусь? Ни фига я не горжусь... просто знания и опыт, это то что отделяет новичков от не-новичков.

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

>...они у тебя под рукой...
в том-то и дело, что у меня они не "под рукой", а в голове (по-крайней мере общие знания и где искать).

>...Обход в ширину...
Обход в ширину - более поздний алгоритм. Хотя (конечно) тоже может считаться классическим.

>...А "пузырёк" я не стал особо запоминать...
во-первых, что там запоминать. весь алгоритм объясняется в пять строчек (это вам не пирамидальная, который всё-таки требует сосредоточения при изучении).
во-вторых, хорошо бы знать пузырёк тоже. В некоторых случаях он даже эффективнее других.

-----
PS (оно же одно большое imho): Разбор показал, что тебя (с моей точки зрения) можно считать новичком. Это не "обзывательство", "принижение" или попытка "самоутвердиться за счёт других"...

Ну не знаешь ты пока многого и не знаешь. Научишься когда-нибудь.

Хотя среди своих друзей ты можешь быть "истинным корифеем" программинга (Я тебе в этом не мешаю).
-----
PPS (он же anti-offtopic): ну что? никто не решился делать сравнение "pure-coding" versus "component-using"???


Огромное Кулясище   (2004-06-20 18:45:00) [89]

2 wiz:

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

Собственно, беглый поиск по Яндексу дал результат: Обход в прямом порядке, Симметричный обход, Обход в обратном порядке, Обход в ширину, т.е. уже 4.

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


wiz   (2004-06-20 17:02:00) [90]

2 Огромное Кулясище:

>Потому что кто тебе сказал, что их три
Дональд Кнут: preorder, postorder, endorder.

>Видел недавно статью на сайте про сортировку? Ещё один новый метод
Ну раз уж зашла речь... Ты сильно обидишься, если я скажу, что он для тебяновый. Мне он известен с весны 1998 года (с курса лекций "Методы программирования" на втором курсе). (Хотя я его ни разу не применял в своей практике)

>И ещё: зачем три?
:))) как ты можешь ставить вопрос "зачем?", если ты их не знаешь...

Потому что результаты обхода разные (порядок обхода). И иногда, вместо того, чтобы городить огород, можно порыться в памяти и сделать как надо...


Огромное Кулясище   (2004-06-20 16:27:00) [91]

2 wiz:

Потому что кто тебе сказал, что их три. Видел недавно статью на сайте про сортировку? Ещё один новый метод. И ещё: зачем три? Или что, три дерева и каждое нужно обойти? Тогда надо использовать один и тот же несколько раз.


wiz   (2004-06-20 15:38:00) [92]

2 Огромное Кулясище:
во-первых, а почему не три?
во-вторых, это самое простое и почти не сомневался в результате :) (в [29] посте я конечно же утрировал)


Огромное Кулясище   (2004-06-20 15:33:00) [93]

2 wiz:

Про обход бинарного дерева - один напишу. "Пузырёк" - очевидно сортировка "пузырьковым" методом? Тоже припоминаю.


wiz   (2004-06-20 15:29:00) [94]

цитата с поста [29]:
...за две минуты написать три классических алгоритма обхода бинарного дерева или "пузырёк"...


Огромное Кулясище   (2004-06-20 14:09:00) [95]

2 wiz:

А что-то я не догнал вот это:

"4) Ну и последнее. to Огромное Кулясище personal. В post[29] я предлагал вспомнить по-быстрому пару классических алгоритмов. Ты их вспомнил? Если нет, то зачем спрашиваешь про новичков? Или вспомнил? только честно..."

В 29 ничего про алгоритмы не увидел :(


wiz   (2004-06-20 13:25:00) [96]

2 Огромное Кулясище: С постом - очень жаль. Хотелось услышать. Честно.


Огромное Кулясище   (2004-06-20 12:14:00) [97]

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


wiz   (2004-06-18 20:13:00) [98]

2 Огромное Кулясище: вас называют делателями и новичками, потому что вы:

1) Пытаетесь сделать "игру" так, как проще вам, а не лучше(быстрее) для пользователя

2) Почему-то вы считаете (непонятно почему), что игровая программа проще того же DirectX'а или Word'а. Почему??? Потому что такую планку вы себе поставили.

3) Редко думаете или вообще не думаете об оптимизации.

Простой пример: "Я решил использовать проективное преобразование и просто натягивать изображение между четырьмя точками". Главное слово здесь - "просто". А о том, какая мощность алгоритма этого преобразования ты не подумал. И скорее всего ты делал это преобразование каждый кадр (интересно зачем?). И я почти уверен, что ты перерисовывал всю сцену каждый кадр... у тебя 3d с постоянно бегающей камерой или 2d, где 50-70% пикселей не отличаются от предыдущего кадра (c точностью до линейного сдвига всей картинки)? Почти наверняка я могу придумать еще пару-тройку способов оптимайза твоего дела. (Но я-то об этом думать не буду, т.к. это твой проект и твоя задача)

4) Ну и последнее. to Огромное Кулясище personal. В post[29] я предлагал вспомнить по-быстрому пару классических алгоритмов. Ты их вспомнил? Если нет, то зачем спрашиваешь про новичков? Или вспомнил? только честно...

---
бритва Оккама: 'Не создавайте сущности сверх необходимого'


wiz   (2004-06-18 19:17:00) [99]

PS: есть конечно способ положить конец этим спорам раз и навсегда...

По-честному пишется ТЗ (для тех, кто на бронепоезде: ТЗ = техническое задание) на некий, не очень большой, (псевдо-)игровой проект.
Что-нибудь вроде: 3d игра в жанре action или strategy, в кадре 100 активных объектов, 1000-2000 пассивных, уровень (или несколько), модельки (1k треугольников) прилагаются. Проверка на collision, взаимодействие объектов (пара-тройки видов), сохранение/загрузка, интерфейс, какое-то количество спец-эффектов (bump mapping, multi-texture, fake-shadows). А если уж совсем заморачиваться, то внести в задание возможность расширения (через скрипты или dll).

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

Тогда сразу станет всё ясно и результат спора будет очевиден: чья игра будет иметь более высокие показатели, при одинаковом внутреннем наполнении те и выиграли.

---
бритва Оккама: 'Не создавайте сущности сверх необходимого'


Огромное Кулясище   (2004-06-18 19:06:00) [100]

2 wiz:

Да, я так и буду делать, но на меня косо смотрят, более того, меня называют ДЕЛАТЕЛЕМ игр, меня называют НОВИЧКОМ (см. первый пост), причём делает это человек, который досконально не знает, что такое antialiasing (см. соответсвующую ветку, если помнишь).


Страницы:   1 2 3 4 5 6 7

Наверх

Титульная страница Поиск, карта сайта Написать письмо