aruslan: (Default)
[personal profile] aruslan
Прочёл сабжевую колонку про Tony Hawk из мартовского Game Developer, что начиналась словами

"Until recently, game programmers consistently used a deep class hierarchy to represent game entities.
The tide is beginning to shift from this use of deep hierarchies to a variety of methods that compose a game entity object as an aggregation of components."

Меня раньше было довольно просто вывести на интересный спор, если проявлять достаточную упёртость.
Например, настаивать на ровно одном прочтении и ровно одной интерпретации.
Ровно одной точке доступа. Ровно одном паттерне взаимодействия.

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

Недопущение взгляда со стороны или другой точки отсчёта - как попытка оставить систему механистичной и мертвой.
Как противоположность wabi sabi.
Как противоположность живым, приспосабливающимся системам.

Я, конечно, понимаю, что идеи тэгирования достигли критической массы только с появлением тэгов в ЖЖ.
И inplace загрузкой заинтересовались только когда петух клюнул.
И идеи композиции и делегирования достигли умов широкой аудитории только с появлением вопросов по GoF на собеседованиях.
И многократно-прошитые коллекции и join против тупых иерархий потребуют WinFS, не иначе.

В последнее время я чрезвычайно ("по-постмодернистски") толерантен и циничен по этому поводу.
Особенно циничен, поскольку, наконец, вижу (с ужасом), что - окупается short term, и что - приносит доход даже long term.

Но, блин, ребята, ведь 2006 год идёт?..

Date: May. 28th, 2006 22:00 (UTC)
From: [identity profile] justy-tylor.livejournal.com
И?

Хороший код - код, который хорошо выполняет свои задачи. А пидерастичность архитектуры какой-нибудь Unr. Engine - только повод пофлеймить, не более того.

Date: May. 28th, 2006 22:58 (UTC)
From: [identity profile] aruslan.livejournal.com
Ну что ты, [livejournal.com profile] justy_tylor, если тебе нужны выводы - для этого есть [livejournal.com profile] sim0nsays.
У меня - только риторика и ссылки, уж извини.

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

Я пробовал и то, и это.
И могу на полном серьёзе сказать, что да, тупой незамутнённый подход не позволит per se выйти на above averages. И обойдётся он, в конечном итоге, дороже.

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

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

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

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

Что и наполняет меня оптимизмом.

Date: May. 29th, 2006 07:18 (UTC)
From: [identity profile] neteraser.livejournal.com
> Я пробовал и то, и это. И могу на полном серьёзе сказать, что да, тупой незамутнённый подход не позволит per se выйти на above averages. И обойдётся он, в конечном итоге, дороже.

.

Date: May. 29th, 2006 08:44 (UTC)
From: [identity profile] aruslan.livejournal.com
wazzup? не согласен?
с цитатой или с её продолжением?

Date: May. 29th, 2006 09:44 (UTC)
From: [identity profile] neteraser.livejournal.com
Напротив, выцепил мораль для себя.

Date: May. 29th, 2006 10:17 (UTC)
From: [identity profile] aruslan.livejournal.com
К сожалению, мораль там дальше.
Про хакопригодность и по локоть в каловых массах.

Date: May. 28th, 2006 23:48 (UTC)
From: [identity profile] justy-tylor.livejournal.com
Хорошо, если изменение архитектуры системы не требует изменения данных.
Хорошо, если изменение архитектуры одной из подсистем не требует изменения архитектуры системы.
Хорошо, если изменение реализации одной из подсистем не требует изменения её архитектуры.
Хорошо, если изменение алгоритмов нижнего уровня не требует изменения реализаций каких-либо подсистем.

Но за 5 лет изменятся даже данные. А если нет, то "эта программа на Коболе проработает ещё пару десятилетий".

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

Date: May. 29th, 2006 00:14 (UTC)
From: [identity profile] aruslan.livejournal.com
Ну, ожидаемые хотспоты изменений легко инкапсулируются.
То есть embrace change - не самое сложное, вообще говоря, в дизайне.

Вирусный дизайн - это не "выбери самое простое, но не проще".
Это штатная мозговая установка.

Объёмы copy-paste, плохой (по-настоящему плохой) код и т.п.

Видя "хороший" код, программист предполагает, что он будет вести себя адекватно. Но как только появляются хаки, всё становится сильно хуже, поскольку "хороший" код создаёт иллюзию, что вокруг безопасно, cozy and warm.

А говнокод с кучей copy-paste и минимумом параметризаций - не страшен.
Потому что "на войне - как на войне".

Date: May. 29th, 2006 09:50 (UTC)
From: [identity profile] justy-tylor.livejournal.com
Хотспот изменений - вся система, в дальней перспективе. Кроме того, организационная проблема отсутствия "заморозки требований" может здорово сбить прогнозы.

Если тебе сейчас напишут так, как ты сам писал "хорошую архитектуру" лет 5 назад, вполне возможно, что это тоже сейчас окажется говнокодом.

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

Date: May. 29th, 2006 10:20 (UTC)
From: [identity profile] aruslan.livejournal.com
Быстро заменять архитектуру - радуюсь, ты такое видел? :)
Архитектуру можно только с людьми поменять.
Или со временем (оттого, что люди развиваются).
Никак не от требований.

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

Date: May. 29th, 2006 17:43 (UTC)
From: [identity profile] justy-tylor.livejournal.com
Быстро заменять архитектуру подсистемы мне приходилось. А что ещё делать, если релиз на носу, а переплетение хаков не спасала и пачка багфиксов?

Что же касается меняющихся требований, то в таких условиях архитектура стареет намного быстрее. Проверено.

Date: May. 29th, 2006 00:40 (UTC)
From: [identity profile] sergey-shandar.livejournal.com
Многие программеры на Java до сих пор думают что иерархия не может быть множественной, а ты тут про композиции и агрегации...

Date: May. 29th, 2006 10:52 (UTC)
From: [identity profile] aruslan.livejournal.com
Ну, Серёж, в том бизнес-коде, что я видел (на C#) - у них таки гораздо больше композиции и делегирования, чем в игровом коде.
Только они вот не считают это достижением.
И стараются вменяемо решать встающие проблемы.
Кто как. DSEL, кодогены и т.п.

Date: May. 29th, 2006 11:11 (UTC)
From: [identity profile] sergey-shandar.livejournal.com
Не знаю, не знаю. Может композиции и делегирования больше. Но, зачастую, все это превращается в фарш с Invoke(string, object[]), System.Type, и т.п. runtime (по крайней мере то что я видел и то что сам пытался сделать). Runtime Info конечно очень мощное. А вот compile time и проверка на уровне compile time страдает серьезно (может Nemerle им поможет). Generics - синтаксический сахар, не больше.

Все таки это действительнно нечто в голове. Думаю можно и на асме писать с компизицей и делегированием :-)

Date: May. 29th, 2006 12:00 (UTC)
From: [identity profile] aruslan.livejournal.com
Это точно :)

Date: May. 29th, 2006 11:15 (UTC)
From: [identity profile] sergey-shandar.livejournal.com
По поводу кодогенов. Так как в C++ compile time info отсутствует - у меня сейчас от 50% до 75% C++ кода генерируется из XML. Уже больше года использую такой подход, вторую версию инсталятора уже сдали на днях (без спешки, в отличии от того как зачастую делается в gamedev) :-) Сорри за оффтоп.

Date: May. 29th, 2006 02:56 (UTC)
From: [identity profile] sim0nsays.livejournal.com
Ну, по-моему, сказано только то что сказано. "is beginning to shift" - это мягкое высказывание. Вообще, весь английский язык очень мягкий. Мол, не дай бог никого не хочу обидеть.
Ну и как бы да, есть такая альтернатива - на компонентах писать. Выпушенные продукты ты знаешь, делающиеся тоже знаешь, смысл худо бедно есть. Нет, я конечно всю статью не читал, но сомневаюсь, что там категорично все.

А про гибкость... Думаю, самые удачные системы - имеющие концепт, а не гибкость. Иметь разумный набор констрейнов для задачи, которые формируют на нее такой взгляд, чтобы было ясно что делать. Как пример - Крейтовый двежок [livejournal.com profile] ddima. No allocation, статический scene graph, и т.д. и т.п.

Date: May. 29th, 2006 07:13 (UTC)
From: [identity profile] aruslan.livejournal.com
Гештальт, да.

Что гибкость и универсальность нахер никому не нужны - это как бы очевидно.
Достаточно, чтобы было понятно, почему и что.
Скажем, у меня в Тахионе - No allocation, жёсткий in-place, статический scene graph, и т.д. и т.п.

Но я как бы не про это немножко говорю.
Я скорее про то, что народ - спит.

Date: May. 29th, 2006 07:20 (UTC)
From: [identity profile] neteraser.livejournal.com
> Я скорее про то, что народ - спит.

"кризис очевидно в головах" (ББ). И что? Я бы задумался над вопросом "кризис в головах и как заработать на этом денег".

Date: May. 29th, 2006 08:43 (UTC)
From: [identity profile] aruslan.livejournal.com
Ну, с Борей я согласен лишь отчасти.
Кризиса-то особо нет, для кризиса почва нужна.
То есть некоторое число вменяемых людей.

Когда стадо ведут на забой, это не называют "кризисом в стаде".

А вот с твоим вопросом - согласен на все сто.

Date: May. 29th, 2006 12:33 (UTC)
From: [identity profile] neteraser.livejournal.com
Осталось согласится с моим ответом :)

Date: May. 29th, 2006 13:11 (UTC)
From: [identity profile] aruslan.livejournal.com
Ответа я там не увидел ;)

Date: May. 29th, 2006 07:32 (UTC)
From: [identity profile] sim0nsays.livejournal.com
Отлично. Значит, и я могу покемарить.

Date: May. 29th, 2006 08:40 (UTC)
From: [identity profile] aruslan.livejournal.com
Сон разума рождает чудовищ, Семёнчег.
Можно спать в майнстриме, можно - перпендикулярно.
Хуже - когда спишь и упираешься в "несовершенство" тека.
И потом, сонный, начинаешь с "несовершенством" бороться.

Вот здесь нужно аккуратно думать и катить фичи или людей.

Date: May. 29th, 2006 08:49 (UTC)
From: [identity profile] sim0nsays.livejournal.com
Про несовершенство тека - это типа наезд, да? :)
Если наезд - я вздохну и обижусь.

Date: May. 29th, 2006 10:22 (UTC)
From: [identity profile] aruslan.livejournal.com
Семёнчег, разве я на тебя наезжал когда-нибудь? :)

Одна из характеристик main stream - течение.
Но русло - разной степени извилистости.
То есть весла ломать не стОит ;)

Date: May. 29th, 2006 12:04 (UTC)
From: [identity profile] sim0nsays.livejournal.com
Впрочем, я тут подумал, что никогда особо и не боролся с несовершенством тека. Т.е. задорной джедайской мысли "все нахер переделать" как-то нету. Зажило бы - и слава богу.

Date: May. 29th, 2006 13:14 (UTC)
From: [identity profile] aruslan.livejournal.com
Взрослеешь, да.
"Всё нахер переделать" - это не джедайская мысль, кстати.
Ибо leads to suffering.

Date: Aug. 4th, 2006 15:23 (UTC)
From: [identity profile] rahal.livejournal.com
- "Ибо leads to suffering."
жжёшь, определённо :) и да, не джедайская вовсе.

Date: May. 29th, 2006 13:30 (UTC)
From: [identity profile] sergey-shandar.livejournal.com
>Т.е. задорной джедайской мысли "все нахер переделать" как-то нету.
Везет... :-) А у меня что не день, то новый велосипед :-)

Date: Aug. 4th, 2006 15:25 (UTC)
From: [identity profile] rahal.livejournal.com
Заранее извиняюсь за некоректность...
Семён Козлов, это вы?

Date: Aug. 4th, 2006 15:43 (UTC)
From: [identity profile] aruslan.livejournal.com
Да, это они :)

Date: Aug. 4th, 2006 16:47 (UTC)
From: [identity profile] sim0nsays.livejournal.com
Никаких проблем.
Да, я.

Date: Aug. 4th, 2006 19:10 (UTC)
From: [identity profile] rahal.livejournal.com
О, блин! Мир тесен, в который раз понимашь... Спасибо большое за помощь в работе над проектом -- games.1c.ru/faberge :) Мы, выходим скоро, релиз на днях на завод укатывает. Вы общались только с напарником моим, Иреком. А меня зовут Рим, приятно познакомиться и всё такое :)

Date: Aug. 5th, 2006 05:11 (UTC)
From: [identity profile] sim0nsays.livejournal.com
Мне тоже приятно и все такое :)
Всегда пожалуйста.

P.S. А как получилось, что ты в Японии?

Date: May. 29th, 2006 07:18 (UTC)
From: [identity profile] aruslan.livejournal.com
Статья была бы интересной, если б он действительно рассказал, почему и как всё в Tony Hawk. И занафига там такое вообще.
Ну и почему Bilas есть, а Дюрана - нет.

Date: May. 29th, 2006 05:04 (UTC)
From: [identity profile] shodan-ru.livejournal.com
а чем 2006й с точки зрения зарабатывания денег принципиально отличается от 1978го? :)

Date: May. 29th, 2006 07:10 (UTC)
From: [identity profile] neteraser.livejournal.com
в контексте "миллиона не было и нет"? :)

Date: May. 29th, 2006 07:15 (UTC)
From: [identity profile] aruslan.livejournal.com
в этом контексте отличается инфляцией ;)

Date: May. 29th, 2006 07:14 (UTC)
From: [identity profile] aruslan.livejournal.com
Принципиально - ничем.
В конкретной индустрии - всем.

И каждый следующий год - делает отличие всё более выраженным.

Date: May. 29th, 2006 07:39 (UTC)
From: [identity profile] shodan-ru.livejournal.com
> В конкретной индустрии - всем.

что технологии и прочее очень интересное черным обезьянам меняются - это понятно...

Date: May. 29th, 2006 08:37 (UTC)
From: [identity profile] aruslan.livejournal.com
Да фиг с ними с технологиями и их сменой.

Просто бабки начинают считать иначе.
И вместе с ними - стоимость инструментария.
И сколько игр делать одновременно, и на одном ли инструменте.
И насколько риски быть above averages окупят себя.

И можно ли нормально пропиарить-продать то г, которое пишут уже три года.
И то, что слепили за четыре месяца.

Date: May. 29th, 2006 09:07 (UTC)
From: [identity profile] shodan-ru.livejournal.com
Просто бабки начинают считать иначе.

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

соотв-но до тех пор, пока технологии не сильно мешают принципу...

Date: May. 29th, 2006 10:32 (UTC)
From: [identity profile] aruslan.livejournal.com
Принцип "стриги бабло за функциональные качества продукта" давно отмер, если ты не заметил. Сейчас платят за формирование рынка сбыта и рвоту вместо мозга в виде разнообразных сервис-отчислений.

Сделать и удержать сервис или стандарт de facto куда как выгоднее, чем сделать продукт. XNA как брендинг мне куда более интересен, чем яйца или Cell.

Date: May. 29th, 2006 12:35 (UTC)
From: [identity profile] shodan-ru.livejournal.com
имею мнение, если рассматривать вот эту вот добавка "за..." как необязательное добавление к принципу, все резко становится на свои места.

Date: May. 29th, 2006 13:15 (UTC)
From: [identity profile] aruslan.livejournal.com
Ну, принцип "просто стриги бабло" - это к весёлым лысым дядькам, не ко мне.
Пока, во всяком случае.

Profile

aruslan: (Default)
aruslan

January 2014

S M T W T F S
   1234
56789 1011
12131415161718
19202122232425
262728293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 28th, 2025 10:08
Powered by Dreamwidth Studios