У каждого умника все получется всегда по своему. (цитата и народа)
Привет все поклоникам Адвентуры! Скажу в кратце в место введения. Я уже достаточно посмотрел разных текстовых квестов и платформ для их создания, но мне всегда не нравилось и не нравятся их короткие возможности или усложненный язык. Буду согласен, если мне скажут, что всегда делают свою платформу (т.к. знают ее хорошо) и под свой квест. Но почему бы тогда не сделать простой язык текстового квеста, который в одно и тоже время будет легким для понимания и мощный по своим возможнотсям. Опять же здесь вылезает мнение, что нашелся еще один умник, который создаст еще один горе язык. На это скажем, что язык СТК явялется специализированным языком, направленным на создание, как текстовой игры, так и текстового квеста. Понятие текстовой игры задается для большей свободы в написании хороших квестов. К примеру возмем редактор ТКР (автору движка: не обижайтесь на критику говорю по сущевству), сам пробовал ничего программа хороша, но есть один недостаток движок полностью ориентирован на создание только определенной группы текстовых квестов. Это конечно хорошо, когда не нужно лишний раз думать и изворачиваться в исходном коде - все просто и понятно, но характер перса может быть сложнее и даже задан по другому. Теперь возмем Урку, тоже хороша и проста, жалко что опять возможностей мало (опять же для хороших больших квестов) и плеер слетает при первой же ошибке. Конечно же скажете, что я бука и сам ничего лучше еще не сделал, но больше всего поражает, что никто (или почти никто) не делает редактор, с помощью которых создать простой квест плевое дело, а хороший самое то! Думаю, достаточно привел основных недостатков современного русского движения (можно привести и еще больше, но лень), поэтому решив не соглашаться с таким положением дел решил создать платформу поновее. Сразу огорошу, господа и дамы, всегда создаю универсально (дольше, но качественнее получается), мой СТК (только русскими) может сразу сбить с толку (многие вещи реализуются простыми командами, почти как веб страница по сути, но другое), создавать буду на языке ООП Visual C# 2005 с поддержкой .Net FrameWork 2.0. В конечном счете планируется создать ряд программ для СТК: редактор, прогрыиватели с разными варияциями испольнения, компилятор(в далеком будущем, если такое возможно). Естественно язык получится со своей концепцией и направленностью.
Чем отлчиается СТК? Ответ: Основное его отлчие в том, что он реализован на верхнем уровне тегами XML(на аглийском, увы таков стандарт), на нижнем кодом СТК, который позволяет влиять на квест и выполнять различные команды. Теги упрощают язык СТК и в плане восприятия, и в плане написания. СТК содержит простые команды как и у любого языка (т.е. стандартный набор), содержит специализрованные операторы, которые облегчают реализацию сложных моментов в квесте, а также полезны в обычном использовании (Например оператор множественного условия - содержит мно-во услвоий, связанных между собой не только по смыслу, но по зависимости от выполненных действий предыдущих условий, для тех кто хоть раз программировал хотя бы на Си - это среднее между простыми операторми условия и оператором выбора, но в тоже время совершенно другое. Использовать можно к примеру, для создания сложного замка, который игроку нужно взломать. Отвлеклись немного в подробности пора и меру знать, пойдем дальше.
Базовые типы данных (для тех кто не понял типы переменных: строка, целое и т.д.) мало, но их достатончо для реализации даже отменного квеста (кстати квест хорош не только возможностями исходного кода, но своим сюжет, а это главное). Типы, следующие: число (десятичное), строка, булев, массив, перечисление, структура. Возможно что-то и еще появится, но это будет если без него в действительности не обойтись.
С помощью тегов можно реализовывать характер перса, инвертарь, настройки квеста, стартовое меню (одно из особенностей СТК), события, окружение ( к примеру время тоже относится к окружению квеста), локации( мульти и обычная). Здесь тоже будут добавления. Одна из особенностей данных локаций в том, что для вывода текста после действия, вовсе не надо создавать лишную локацию, СТК будет хранить в памяти локалные переенные локации и выполнять ее снова и свнова, до тех пор пока вы не сделаете переход в другую (согласен звучит жутко, дико и возможно намудрено, но в коде выглядит во много раз проще, зато и писать короче будет). Также соглашусь, если скажут, что тут надо уметь писать алгоритмы, но ведь такие алгоритмы может и школьник научиться писать без всякой заморочки и направленность, такая что можно будет создать хороший квсет. Основной понт в XML тегах то, что они ОС независимы и просты, поэтому такой формат сможет прочитать любой проигрывател СТК квестов, а редактором можно спрятать само написание тегов и вам останется только думать о создании самого квеста. Также в редакторе будет эмулятор СТК, с помощью которого будет производиться отладка квеста. Короче с проектированнием все в норме, рассказывать могу до посинения. Единственная проблема остается - это само создание и мнение участников форума ( с вопросами конечно), о самом СТК и чего бы ему не помешало бы добавить. Для тех у кого есть сомнения в хорошести даного языка приведу к примеру еще одну фишку: Когда изучал ТКР (ради интереса), то наткнулся на понятие режима боя, реализованно хорошо, но специфично. Попробовал перевести на свой язык СТК такую возможность, оказалось, что у меня это уже запросто осущевствимо через одни только локации и СТК (сам с начало не поверил, но факты сами за себя говорят).
З.Ы.
Скажу для желающих принять участие, помочь сможе только своими вопросами и критикой, так уж сложилось, что писать программы, как у меня получется могут понять не многие и достраивается все окончательно, только когда все перепробую и код пройдет через все возможные варианты (Предаствьте, что я построил 5 раз дом на даче и мне, что-то не понравилось в нем, взял да начал все сначало, только что-то одно отсавил так как есть.). Времени тоже мало(как и у всех в общем), поэтому не так быстро движется разработка, щас работаю над созданием интерпритатора СТК, сложно, но реально (если кому интересно узнать об интерпритаторах и т.д. идите по этой ссылке: http://www.softcraft.ru). Также меня окончательно убедило, при создании данной темы, создать свой сайт на народе с описанием всего о проекте, как создам, ссылку напишу, но не раньше чем, через две неделе. Очень хочется услышать трезвую и коснтруктивную по сущевству критику, так как подобные вещи помогают больше выяснить об потребностях русского движения адвентуры. И не беспокойте, если вам кажется, что я пишу о проекте несколько туманно, все же реализуется в процессе создания.
Естественно это еще не все, будем и остальное, только переварю в нормальный вид.
Неактивен
Unreal написал:
Я являюсь резким противником самодельных платформ, поэтому сразу начну "гнобить" твою идею, чем, искренне надеюсь, спасу тебе от траты месяцев на бесцельное занятие.
1. Представься, вожалуйста. Сколько тебе лет и каким боком ты связан с программированием?
2. Напиши бизнес-план проекта. Как ты представляешь себе процесс и сроки работы? Каков объем человеко-месяцев будет потрачен на каждый элемент проекта (редактор, интерпретатор, стандартные библиотеки и пр.)?
3. Ты хорошо читал все темы разделов https://forum.ifiction.ru/viewforum.php?id=9 (Техническая часть) и https://forum.ifiction.ru/viewforum.php?id=11 (Разработка русской IF платформы)? Сколько незавершеннных грандиозных начинаний ты там насчитал?..
Я не шучу. Обо мне ты можешь почитать здесь: https://forum.ifiction.ru/viewtopic.php?id=819
Я с тобой не совсем согласен. Если человек хочет писать - пусть пишет. И надо ему в этом помочь. Зачем нам руссифицировать ТАДС ,если можно написать свой движок? И все особенности парсера русского языка написать самому. Вот я хочу начать свой проект(но только хочу, не знаю, начну ли его, а если начну, то доведу ли его до конца). Это должно выглядеть как библиотеки для С++.причем С++ кроссплатформенная и можно компилить на любом компиляторе, на любой системе. И для запуска не надо никакого интерпретатора, причем интерфейс может придумать кто какой хочет, хоть текстовый, хоть графический, хоть какой угодно. Единственное что для этого надо - написать отдельную библиотеку. Конечно, я не утверждаю, получится у меня что-то или нет, но хоть попробую, если желание не отпадет до того времени.
Неактивен
Gremour написал:
Потому что шансы довести свой движок до уровня ТАДС (тем более одному человеку) близки к нулю.
Библиотека для C++ это хорошо, но как ты себе представляешь обработчики действий объектов (реакция на глаголы), которые должен вызвать парсер? ТАДС -- язык программирования и обработчики действий это одна из языковых констукций, которых в языке C++ нет. В C++ можно сделать обход, но выглядеть он будет не очень изящно.
А сохранение состояния игры планируется или нет? А откаты хода?
Обработка действий - указатель на функцию. Будут стандартные конструкции в каждом классе, надо будет описать шаблонный класс длинамического массива. В С++ можно довольно изящно написать все. Сохранения тоже придумаю. Откат - динамичемкий массив в который заносятся действия игрока, добавляясь по одному. Все это также можно организовать и на STL.
Отредактировано HeRmiT (31.05.2007 01:31)
Неактивен
Gremour написал:
Сделать можно, не спорю. Но на языке TADS использовать это удобнее. Использовать приходится часто, поэтому удобство здесь играет роль. К тому же, для реализации этого нужен определенный механизм, спрятанный внутри базовых классов, который будет затруднять пошаговую отладку.
Для TADS уже есть библиотека стандартных объектов, которую придётся написать самому. Объекты в TADS описываются удобнее, чем в языке C++, для которого нужно описание типа и декларация объекта этого типа.
С какой целью затевать все эти мучения, вот в чём вопрос? TADS есть -- бери и пользуйся.
Что ты подразумеваешь под динамическим массивом? Дерево объектов?
P.S. Хотелось бы увидеть пример описания нового глагола и установления обработчика для него для базового объекта (чтобы работал на всех объектах мира) и переопределения его для определенного объекта (потомка базового).
Для реализации этого нам нужны всего-то перегруженные конструкторы, абстрактные классы и шаблоны. Вот тебе и удобство.
Да не спорю, но опять же с помощью перегрузки конструкторов, шаблонных классов и абстрактных классов эта задача спращивается.
С такой целью что можно описать каждую библиотеки, их структуру, и каждый человек понимающий С++ сможет себе добавить ту функциональность которую ему надо будет и воложить её в инет для пользования. Опять же - можно обеспечить полный полиморфизм. Хочешь - испоьзуй библиотеку с консольным интерфейсом, хочешь - с ГУИ, ахочешь ГУИ под юниксовый Х-сервер - напиши свою и делись ею с остальными. Это только 1 пример, а их можно навести много.
Под словом динамический массив я подразумеваю массив который изменяет свои размеры во время хода программы и имеет свои собственные обработчики, сортировщики и т.д. Это можно осуществить на основе связного списка и механизма динамического распределения памяти. Это типа вектора в STL.
Пример описания нового глагола? Я буду использовать алгоритм Олегуса. И для каждого обьекта локации будет зашита стандартная обработка типа брать, осмотреть, смотреть в, и т.д. А для специфических будет типа object["картина"].addAction("присобачить", "стена", и тут ссылка на таблицу обработки, указатель на функцию обработки).
Вот тебе динамический список обьектов на основе ключ - значение и стандартная функция addAction();
Ну это все выяснится в ходе написания движка, если я им займусь вообще, будет много нюансов в ходе разработки, так что пока что говорить о точной структуре этого движка рано.
Неактивен
AlsoKorwin написал:
Gremour написал:
Сделать можно, не спорю. Но на языке TADS использовать это удобнее.
...
Для TADS уже есть библиотека стандартных объектов, которую придётся написать самому.
...
Объекты в TADS описываются удобнее, чем в языке C++, для которого нужно описание типа и декларация объекта этого типа.
...
С какой целью затевать все эти мучения, вот в чём вопрос? TADS есть -- бери и пользуйся.
...Стас, ты сказал все четко и понятно... тебя тут просто не слышат... И не хотят услышать... Се ля ви... Их предупреждали, а кто не предупредился, тот сам себе злобный Буратино.
HeRmiT написал:
Для реализации этого нам нужны всего-то перегруженные конструкторы, абстрактные классы и шаблоны. Вот тебе и удобство....
Всего-то... Всего-то их надо сначала создать. До окончания постройки дома надо только быстренько выкопать котлован, привезти кирпич, сложить стены, провести коммуникации, а дальше останется элементарная отделка...
HeRmiT написал:
Да не спорю, но опять же с помощью перегрузки конструкторов, шаблонных классов и абстрактных классов эта задача спращивается..
УПРОЩАЕТСЯ - учите русский язык, друзья.
HeRmiT написал:
С такой целью что можно описать каждую библиотеки, их структуру, и каждый человек понимающий С++ сможет себе добавить ту функциональность которую ему надо будет .
1. Человек понимающий С++ разберется в ТАДС легко; а вот новичку и в вашем, еще не созданном языке будет разобраться невероятно сложно... Кстати, документацию к нему кто будет писАть, товарищ HeRmiT?
2. Это все УЖЕ сделано. Сделано хорошо. Лучшее - враг хорошего. Хотя бы потому, что оно еще не сделано, а силы и ресурсы уже отвлекает. Я бы мог игрой заниматься, а трачу время на дискуссию...HeRmiT написал:
Опять же - можно обеспечить полный полиморфизм. Хочешь - испоьзуй библиотеку с консольным интерфейсом, хочешь - с ГУИ, ахочешь ГУИ под юниксовый Х-сервер - напиши свою и делись ею с остальными..
Может быть, я что-то недопонимаю, но что из перечисленного нельзя сделать с ТАДС? А если пока нельзя сделать, то не проще ли портировать готовую систему, раннер, на любую платформу, чем писать с нуля свою систему и самому отлавливать миллион багов, которые, - поверьте мне, там будут?
HeRmiT написал:
Ну это все выяснится в ходе написания движка, если я им займусь вообще, будет много нюансов в ходе разработки, так что пока что говорить о точной структуре этого движка рано.
Уф. Dixi
Чел. Ты во-ервых делай что-то со своей манией величия, а во-вторых не кричи и не поправляй меня. Если не нравится идея написания движка - не сиди в этой теме и не навязывай людям свои идеи. Во-первых я хочу в первую очередь написать движок ПОД СЕБЯ, а если кто-то захочет им пользоваться, я буду только рад, во в-торых я хочу написать движок чтобы потренироваться в прграммировании, это опять же ДЛЯ СЕБЯ, а во-третих перегруженные конструкторы, абстрактные классы и шаблоны это АБСОЛЮТНО НЕ СЛОЖНАЯ задача, во всяком случае для меня, просто надо терпение и не надо бояться больших листингов. И вообще, что ты на людей наезжаешь? Не трать время и иди пиши игры на ТАДС, а я буду получать удовольствие от программирования.
ТАДС - это ограниченный движок созданный для написания ИФ. Ты не выйдешь за рамки его возможностей. А С++ - язык программирования. На нем можно сделать все.
Неактивен
Gremour написал:
HeRmiT,
На заметку: я по профессии программист и пишу на C++.
Люди, вы до сих пор не поняли почему я взялся за написание движка. Это просто интерес и энтузиазм, я даже не уверен, будет ли он доделан до конца. Мне нравится сам процесс, пока энтузиазма полные штаны и я вижу хоть какие-то результаты своей работы.
Кстати, уже взялся за написание динамического массива. Пробую решить проблему удаления элементов из массива. Они то удалятся, но почему-то запускаются только деструкторы элементов головы и хвоста. Буду пробовать решить.
Неактивен
Gremour написал:
HeRmiT,
Очень тебя понимаю. У самого такое бывает. Хочется попрограммировать. Но, если бы ты пощупал TADS, может у тебя бы возник энтузиазм написать игру а не баловаться с движком? Это всё ж полезней будет для ИФ коммунити.
Гы))). Я не тот человек который пишет игры. У меня мозг направлен в сторону математики, а не литературы. Точнее творить могу я только в этой отрасли, в литературе у меня с креативом проблемы. Вы б лучше не отговаривали меня, а занялись проектом вместе со мной. Есть идея описать в движке всю функциональность тадса и дальше заняться совершенствованием ,правда сам я этого точно не сделаю.
Неактивен
Gremour написал:
HeRmit,
Зачем тебе тогда движок? На C++ пишут программисты, большинство из которых не писатели.
Про функциональность я уже говорил. Меньше удобства -- меньша шансов игре дожить до появления на свет. TADS существенно удобнее для написания IF.
Движок мне нужен чтобы утешить свое самолюбие и еще раз убедиться какой я крутой чел))), можт иф напишу потом, если получиццо. Это просто ради интереса. Я вот уже почти дописал шаблонные классы динамического массива. А почему вы все против этого? Какая вам разница что я делаю и что я пишу? Напишу так напишу - не напишу так не напишу. Вам то что от этого?
Отредактировано HeRmiT (04.06.2007 19:24)
Неактивен
Gray_Flannel_Armor написал:
Хотел ответить сюда, но потом подумал и решил, что лучше поместить часть ответа в другую тему: https://forum.ifiction.ru/viewtopic.php?pid=8251#p8251
Новая платформа - это позитив. Как минимум автор получит бесценный опыт, но на самом деле он получит гораздо больше, хотя сам об этом не подозревает. Жалеть "его время" не стоит
Полностью тебя поддерживаю. Даже если ничего не получиццо из этого, автор в первую очередь получит довольно хороший опыт и практику.
Неактивен
Unreal написал:
Gray_Flannel_Armor написал:
Новая платформа - это позитив. Как минимум автор получит бесценный опыт, но на самом деле он получит гораздо больше, хотя сам об этом не подозревает. Жалеть "его время" не стоит
_Я_ желею не его время, а себя т.к. не получу ИЛ игры, а получу еще одну недоделанную (и возможно вечно недоделанную) платформу.
Платформ у нас хватает, не хватает игр! Без игр не будет существенного расширения аудитории, а значит не будет очень большого сообщества, а значит сотни людей не будут восхищаться тем, что я "Зарегистрирован: 2002-09-13". :-)
Ты не прав. Чтобы люди начали играть в иф нужна реклама. А с рекламой шутеров и т.п. игр типа ХЛ2, ДУМ3 и СТАЛКЕР вам все равно нее сравниться. Выгодно рекламировать то что уже играют все и то что рекламируют все, а начать рекламировать игры в которых надо что-то вводить с клавы и читать..........
Неактивен
Unreal написал:
HeRmiT написал:
Ты не прав. Чтобы люди начали играть в иф нужна реклама. А с рекламой шутеров и т.п. игр типа ХЛ2, ДУМ3 и СТАЛКЕР вам все равно нее сравниться. Выгодно рекламировать то что уже играют все и то что рекламируют все, а начать рекламировать игры в которых надо что-то вводить с клавы и читать..........
Не вижу связи. Ты предлагаешь рекламировать (недоделанные) платформы? :-)
Я разве такое говорил? Я говорю что иф у нас не станет известной просто так. Она станет известной только в узком круге людей, которые какраз ищут, а таких мало по сравнению с обществом людей которые играют в вышеперечисленные мной игры.
Неактивен