За год чтения этого форума сложилось устойчивое ощущение, что именно проблема с написанием движка тормозит все начинания и движения молодых адвентписателей в сторону своей первой игры.
На мой взгляд неверна изначальная установка о необходимости движка, которую вбивают в голову начинающим. Отсюда новичок уже твердо знает, что просто так игру не пишут - нужен движок, существующие он отвергает, а вот оставшийся единственный вариант написания собственного практически всегда увязает в истощившемся желании, недостатке чисто технических знаний и др. На мой взгляд, это очень опасный прецендент, образующий целую группу отрицательных моментов :
1) Любой новичок как пробовавший, так и не пробовавший начинать писать игру, прочно ассоциируют создание IF с первоначальным написанием движка, причем у пробовавшего - эта ассоциация уже носит отрицательный характер.
2) Любой энтузиаст, севший за написание движка, расходует весь свой энтузиазм (носящий, как правило чисто IF-шный характер) на решение унылых технических проблем движка, чаще всего на этом все и заканчивается.
3) Любому начинающему жизненно необходимо сразу же поселить протагониста хоть в какое-то пространство и отработать основные приемы взаимодействия с окр.ср., почувствовать какие новые взаимосвязи образуются только лишь после добавления одного предмета в локацию, то есть окунуться в чистую метафизику IF, вместо этого он ломает голову над тем, как его движок будет различать одинаковые внешне, но по-разному наполненные плазмой энергетические ловушки, хотя на самом деле герою его игры еще не пришлось просто попробовать прочитать надпись или поднять камень.
То есть, люди, пришедшие в IF, постепенно, сами того не осознавая, перенаправляют свою энергию в другое русло.
Три момента еще более усугубляют эту ситуацию :
а) Новички хотят создать СУПЕР-ПАРСЕР, на котором бы их игры писали все остальные и тем покрыть себя славой (как правило желание самому написать игру тут уже пропадает)
б) Ветераны IF продолжают вбивать в голову новичкам мысль о первейшей необходимости движка и бомбят немногих, написавших хоть что-то похожее на движок, своими "тестами на крутость". Это они бросают фразы типа "твоя игра отвечает на все непонятные глаголы одинаково" или "твой герой даже не может подпрыгнуть на месте". Они формируют аксиому "слабый движок = ОЧЕНЬ слабая игра".
в) Этот момент я называю "IF-аномалией автора-новичка". Абсолютно ВСЕ существующие движки отвергаются в конечном счете. Причины называются разные - итог один.
Я ни в коей мере не отрицаю важность и даже первостепенность значения движка, но это все справедливо только для высшей лиги IF, а ведь дорога к ней трудна и длинна и вымощена ей-богу булыжниками (читай камнями подводными) и шаткими-валкими мостиками (читай костылями и подпорками в коде).
И так, представляю вашему вниванию концепцию "solid code", которая проста и всем знакома. Если вы хотите попробовать написать IF-игру и более-менее умеете программировать (а именно такие люди начинают писать движок), забудьте о движке и СРАЗУ НАЧИНАЙТЕ ПИСАТЬ ИГРУ самым простым способом - IF-ELSE-ELSEIF. Множьте свои IF-ы (в смысле условия внутри программы) и не обращайте внимания на то, что это самый "чайниковый" способ - в скомпилированной игре мы ваших навыков кодописания не увидим, а вот механику можно будет оценить уже сразу. К слову сказать, этим способом гипотетически можно реализовать самую сложную функциональность в небольшой по размеру игре. Вы меня спросите "а в большой", а большие игры даже на хороших движках получется писать только ветеранам, у которых не один десяток любительских "заготовок" за плечами. Нужно отметить тот факт, что больших и сложных игр в русском IF очень мало, несмотря ни на наличие можных движков, ни на программистские способности человека. Большая и хорошая игра - это вопрос не к движку, а к автору в первую очередь.
По мере того, как вы начнете спотыкаться о "спагети-код" своей игры (а это хороший признак, это значит, что в вашей игре уже можно где-то прогуляться, что-то взять и чем-то на что-то подействовать), вы начнете работу по упорядочиванию кода - NPC и предметы инкапсулируются у вас из набора переменных в структуры (struct, record, object), появятся обособленные процедуры для наиболее частых действий, но выполняя все эти правки, вы уже будете держать в голове вашу игру, состоящую из "если X, то Y" и вы будете точно понимать для чего вы сейчас пишете тот или иной кусок кода. Хоть такой подход и не даст создать под готовой игрой универсального и мощного движка, как нельзя пропихнуть под лежащим слоном подстилку, но это даст несколько просто замечательных моментов :
1) Вашу игру, в которую уже можно будет поиграть
2) Вы набъете руку (приступая к другой новой игре, вы уже автоматически организуете элементы кода под нужды вашей игры, с каждой новой игрой эта организация будет становиться все совершеннее).
3) На определеном этапе вашего творчества в стиле "solid code" и имея несколько solid code-игр за плечами, вы уже сможете подготовить для себя некую программную базу своих игр, которую уже можно будет назвать "движком". Самое главное - игры должны опережать движок, а не наоборот.
Нас не интересуют ваши движки, нас интересуют игры.
Удачи в начинаниях!
Отредактировано Owl Wilson (15.02.2008 13:09)
Неактивен
И так, представляю вашему вниванию концепцию "solid code", которая проста и всем знакома. Если вы хотите попробовать написать IF-игру и более-менее умеете программировать (а именно такие люди начинают писать движок), забудьте о движке и СРАЗУ НАЧИНАЙТЕ ПИСАТЬ ИГРУ самым простым способом - IF-ELSE-ELSEIF.
А вот здесь, я жутко не согласен! Я свою платформу так и не забросил, а продолжаю упорно доводить ее до конца. Как движок она у меня вторая так, что опыт в подобных вещах имею.
Owl Wilson, не стану скрывать на ряду с многими мотивами у меня были и типичные желания, которые тебе здесь обрисовали. Но желания постепенно отвалились, а осталось только упорство и интерес, что же из этого выйдет. Особых затруднений в реализации и разработки тоже не испытываю. Но, опять же, скажу не только тебе, но и другим авторам, что разработка движка - это самое трудная вещь, требующая не мало сил и времени. Т.к. при разработке нужно учесть кучу моментов и ньюансов, ну а становится все понятным и очевидным только к самому концу. ![]()
Так, что это вам не хухры мухры.
Неактивен
uux написал:
С этим-то никто не спорит. Вопрос в другом: зачем?
Да затем же, что и остальные делают, чтобы не ходить на ходулях, а писать к примеру в парсере нормальным русским языком и он тебя понимал в соответствии норм русского языка. Наш язык тоже не хуже английского, а намного красочнее и т.д.
Неактивен
fireton, в принципе тебе и так уже указали, на одну из проблем.
goraph, а где ты видел много игр на РТАДС и особого рвения в таком сложном языке у квестостроителей. В данном плане, лидером остается УРКА, т.к. она очень проста.
А вот действительно применить грамматику русского языка на уровне платформы - это круто для нашего сообщества, мы же на русском языке базарим, а не на английском.
Неактивен
goraph, хорошо что на вопрос ты ответил нормально, но этим вопросом я подмечаю, что вы все время ходите вокруг да около, но проблему понять не хотите. Вам, что так сложно отказаться от привычного и без трясучки на пятой точке тела, опробывать нечто новое, пока все варианты не перепробуете многое будет ускользать. Так, что предлагаю выложить на этой теме все достижения и недостатки всего, что можно сказать на тему "русская текстовая игра", только давайте делать это как-то упорядоченее и группировать все высказывания, а не устраивать перебранку на тему типа моя лучше.
Я могу сказать, что ныне сущевствующие западные платформы не полностью отвечают нашим требованиям, русские пишутся по принципу нам и этого хватает (но не всем же!
). Далее, на мой взгляд можно написать платформу, которая может не только работать с одним парсером (по типу один парсер один язык, т.е. у каждого свой). Это реально потому, что мы люди и говорим об одних и тех же вещах, а значит используем одни теже смыслоформы (к примеру слово молоко обозначает то, что под этим словом значится, но на разных языках этот смысел имеет другие формы, иначе говоря другое слово, предлоги почти во всех языках обозначают одни и теже отношения, но также словами они отличаются). Главное, научиться создавать правила задания слов для любого парсера так, чтобы парсер уже сам задавал, как с этим работать.
Продолжая мысль, стоит заметить, что каждое слово - это не просто последовательность символов, а конструкция символов несущая мно-во информации. Значит нужно определиться, какую информацию мы задаем парсеру на словах для определения без конкретики используемого языка, а также те, которые специфичны для конкретного языка. Иначе говоря, нечего сваливать все в кучу и выкатывать в глаза на лоб от удивления.
Самые простые реализации:
-языковые: склонение падежей, части речи, правило построения предложения (в отличии от нашего в других языках это имеет очень большое значение).
-общие: отношения объектов в действии, т.е. объект и субъект, а также предлоги-связи, которые указывают конкретную направленность действия, банальные команды (осм, идти наверх, вперед и т.д.)
К примеру на нашем языке: 1) положить стрелы на стол и 2) положить стрелы в стол - это разные действия. В 1) случае мы кладем стрелы на что-то (поверхность), во втором кладем стрелы во что-то (контейнеры). Допустим стол является контейнером и поверхностью (к примеру есть ящик в столе), то выполняя два действия мы кладем стрелы на стол и в стол (т.е. в тот-самый ящик, вместо выполнения целого ряда команд). Это считается нормальным. Также к примеру стол может быть поверхностью, тогда отказ выполнения действия 2) будет логичным, чем наоборот, иначе с таким же успехом можно положить объекты в камень. ![]()
Отредактировано Eten (18.02.2008 17:06)
Неактивен
В общем выше описанное и так должно быть понятно, но это еще не все и мое предложение остается в силе.![]()
Неактивен
Я тоже не понял. Какой-то поток сознания, извини Андрей.
А чего тут не понятно, в моем городе газета называется "Суть", т.е. зри в корень проблемы. Такая проблема не у нас одних, все языки не основанные на ероглифах, отличаются только способом говорить (вспомните, как мы говорим, привет на разных языках), а суть остается таже. Так, блин в чем проблема?! В том, что мы не можем создать эти понятия на программном уровне парсеров, которые будут принимать общее привило, выражющее суть, а построение слов - это дело лично парсера, а не наше.
З.Ы.
Если вам и это не понятно, то извините, видать не туда написал, о чем тогда говорить вообще??!!![]()
Неактивен
fireton, интересная идея, но свой то движок еще не закончил. Вот когда закончу с первой веткой, тогда велком.
З.Ы.
Когда переведете ТАДС3, проверьте есть ли там действительно возможность не так сильно париться над словами.
К тому же нет ничего плохого, если мы создадим парсер не хуже западного. Это тоже самое, что создавать на равне с GPS свою систему навигации (в России такая есть) - это отнюдь не из-за амбиций, просто мыслим и смотрим на мир по разному.
Отредактировано Eten (18.02.2008 18:32)
Неактивен
Народ Глонас и GPS привел всего лишь для примера сходности разных устройств в одном деле. Прошу эти устройства трогать в отдельной теме.
IDE для РТАДСА было бы не плохо, но не мне его писать. Да и статью можете на вики почитать.
Единственный не достаток на мой взгляд - это, что каждый разработчик делает парсер только на своем родном языке. Как говорится грамматики языков разные, а суть одна. Опять же к чему клоню, настоящий парсер должен уметь понимать общую грамматику для всех языков и отдельные проиложения для каждого языка (Исключения и прочее). Т.е. мы знаем общие правила задания парсерных команд, а также знаем, как парсер понимает эти данные. В итоге никакой мороки с разными языками, тут нет языка-лидера, хоть английский, хоть русский, и т.д. все на равне.
З.Ы.
Может кому-то кажется не реально, тогда взгляните на мой девиз - это не пустое сотрясание воздуха, а фраза основанная на собственном опыте. ![]()
Неактивен
Korwin, ты меня немного не понял, я не предлагал сделать супер-пупер парсер, наших современных парсеров и так хватает, но начинку надо сделать вкуснее. Зачем за уши натягивать парсер для IF, когда нам нужно только грамотное понимание сказанных команд парсером. И даже, если раскатал губу то, что мешает попробовать тоже самое в рамках русского языка?
Неактивен
Мне кажется, что ты не совсем понимаешь значение слова "парсер" и вставляешь его не к месту.
Спешу тебя разочаровать, fireton. Скорее всего, ты сам не понимаешь ни слова парсер, ни того о чем говорилось в моих постах. В моих постах, говорилось о работе парсера с абстрактной т.з. Реализовать же серъезный парсер для группы проффесионалов - дело обычное, но мы же не проффесионалы.
Вот и вывод напрашивается: раз ты решил стать боксером, то ты являешься боксер, но чтобы стать им полностью тебе придется приложить силы с учетом того, что ты еще остаешся на предыдущей стадии. Все описанное называется одним словом развитие в процессе движения. Вот именно про это все, всегда звбывают! Учитесь мыслить объемно, а не плоско, тогда и понятней все станет.
З.Ы.
Что такое парсер сказано и в ifwiki - это понятие я уж точно знаю, если знаешь что-то еще, то не поленись написать об этом.
Ну а все остальное - это только твое, мое и т.д. личное мнение.
Отредактировано Eten (19.02.2008 19:08)
Неактивен
я бы предложил тебе помолчать
Тебе очень рекомендую +на личности переходить по меньше, а то все вы горазд палить горячку.![]()
Пока ты не написал свою супер платформу и супер игру на ней, я бы предложил тебе помолчать, ибо это именно пустое сотрясание воздуха.
У тебя, что другого опыта нет, тяжелый случай.![]()
З.Ы.
То, что я не всегда могу выразить свои мысли понятно для вас - не значит, что они плохи.
Так что, помолчи в тряпочку goraph, пожайлуста на этот счет. Раз уж сказать по лучше не можешь. ![]()
А раз не согласен, то у другого соринку в глазу увидишь, а у себя и сучка не заметишь.
Неактивен
Вам будет проще написать свой обработчик, чем мне разобраться с DLL-ками.
Кому как. ![]()
Неактивен