|
Здравствуйте Гость ( Вход | Регистрация ) Доступ из РоссииДля сохранения достпа из России к сайту и форуму GBX
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() ![]() ![]() |
cave quest, спид-проект за 8 дней. релиз
| ripatti |
Вторник, 24 августа 2010, 19:11
Отправлено
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Регистрация: 16 нояб. 2009 Из: Уфа Пользователь №: 34 479 ![]() ![]() |
Привет всем))
Чуть больше недели назад стукнуло мне в голову скачать какой нить компилятор с либами под ндс, дабы что нить под эту самую ндс написать. После каноничного хелло ворлд решил написать простенький текстовый квест за пару дней. Пару дней в итоге растянулись раза в 4, а квест получился далеко не простеньким Результат моих трудов выкладываю здесь. Квест на английском. Сразу скажу что мой английский ужасен, как минимум в плане грамматики (а уж о литературности и речи не идет). Просто был больший человеческий влом рисовать и вставлять русский шрифт. Но, надеюсь, по контексту будет понятно о чем речь...)) Загрузить файл сюда у меня прав что-то мало, поэтому вот ссылка: http://rapidshare.com/files/414873564/cave_quest.rar UPD Скриншоты: UPD Исходники:
cave_quest_src.rar ( 30.72кб )
Кол-во скачиваний: 82Сообщение отредактировал ripatti - Вторник, 24 августа 2010, 23:53 |
| Cluster |
Вторник, 24 августа 2010, 19:14
Отправлено
#2
|
![]() Флудер ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 658 Регистрация: 01 мая. 2005 Из: Электросталь Пользователь №: 12 933 ![]() ![]() |
Ура, ещё один русский разработчик
Чуть попозже обязательно посмотрю. А ты писал без использования PAlib? -------------------- |
| ripatti |
Вторник, 24 августа 2010, 19:16
Отправлено
#3
|
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Регистрация: 16 нояб. 2009 Из: Уфа Пользователь №: 34 479 ![]() ![]() |
писал на C++, юзал devkitPro и libnds
|
| GDomain |
Вторник, 24 августа 2010, 20:54
Отправлено
#4
|
|
Фанат ![]() ![]() ![]() Группа: Пользователи Сообщений: 119 Регистрация: 09 июля 2008 Пользователь №: 27 393 ![]() ![]() |
Скинь шоты) интересно посмотреть)
та и неначем) -------------------- ![]() |
| ripatti |
Вторник, 24 августа 2010, 21:37
Отправлено
#5
|
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Регистрация: 16 нояб. 2009 Из: Уфа Пользователь №: 34 479 ![]() ![]() |
добавил шоты
|
| p0nt |
Вторник, 24 августа 2010, 22:05
Отправлено
#6
|
|
Like drinking poison, Like eating glass ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 3 287 Регистрация: 01 авг. 2004 Из: Питер Пользователь №: 9 570 ![]() ![]() |
Английский действительно ни о чем. А так я бы поиграл 8)
-------------------- A Shadow is a suppressed power, and when controlled by one's ego, it becomes a Persona...
|
| todeskampf |
Вторник, 24 августа 2010, 22:10
Отправлено
#7
|
![]() НЕ МАRЧb ПР0X0DN ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 656 Регистрация: 06 дек. 2008 Из: Киевский гарнизон Пользователь №: 29 309 ![]() ![]() |
мдэ, онглийский просто шикарен.
Опустив весь остальной надмозг, я бы написал Items in your possession Ведь стоило над этим в первую очередь работать, кроме текста то не видно ничего. Сообщение отредактировал todeskampf - Вторник, 24 августа 2010, 22:11 -------------------- They say you never hear the one that hits you.
|
| ripatti |
Вторник, 24 августа 2010, 23:26
Отправлено
#8
|
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Регистрация: 16 нояб. 2009 Из: Уфа Пользователь №: 34 479 ![]() ![]() |
Я в первую очередь работал над игровой механикой.
Английский моя беда=_= Он мне еще со школы вообще никак не дается, хотя техническую литературу вроде без проблем читаю и понимаю. Вот такие вот дела. Если вдруг кому будет интересно - можете переписать текст. Правда, это несколько осложняется тем, что текст врезан в код:D. И текста там не мало... если рассматривать только код - больше 100 Кб получается. В любом случае развивать дальше то, что есть, я не буду. |
| andronidze |
Вторник, 24 августа 2010, 23:37
Отправлено
#9
|
![]() В белых штанах ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 507 Регистрация: 21 дек. 2007 Из: Москва Пользователь №: 24 884 ![]() ![]() |
Тогда исходники давай
-------------------- ![]() |
| ripatti |
Вторник, 24 августа 2010, 23:54
Отправлено
#10
|
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Регистрация: 16 нояб. 2009 Из: Уфа Пользователь №: 34 479 ![]() ![]() |
Добавил исходники.
Мне не жалко :D |
| Chintoi |
Четверг, 26 августа 2010, 02:20
Отправлено
#11
|
|
Маньяк ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 366 Регистрация: 28 мая. 2007 Пользователь №: 22 437 ![]() ![]() |
QUOTE (ripatti @ Среда, 25 августа 2010, 00:26) Вот такие вот дела. Если вдруг кому будет интересно - можете переписать текст. Правда, это несколько осложняется тем, что текст врезан в код 0_0 100 000 сто тысяч символов. и ни одного правильного предложения. не стоило ли как-то более полезно потратить усилия? |
| ripatti |
Четверг, 26 августа 2010, 03:21
Отправлено
#12
|
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Регистрация: 16 нояб. 2009 Из: Уфа Пользователь №: 34 479 ![]() ![]() |
Что, совсем ни одного?Т_Т
Вообще говоря там куча кода, генерирующего скрипты(иначе бы пришлось ручками писать раз в 20 больше Насчет более полезно потратить - это мое дело как мне тратить мое время Я сейчас ковыряю местные графические возможности. Если не заброшу дело, будет еще что нибудь, где в английской грамматике ошибиться невозможно, ибо текст будет сведен к минимуму UPD Ну чо? Или мой английский настолько пугающ, что никто не решился? Исходники, как я погляжу, скачало 3 человека. К скачавшим: что вы с ними делаете, если не секрет? А то мне (как бы) интересно Сообщение отредактировал ripatti - Четверг, 26 августа 2010, 08:06 |
| Chintoi |
Пятница, 27 августа 2010, 00:32
Отправлено
#13
|
|
Маньяк ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 366 Регистрация: 28 мая. 2007 Пользователь №: 22 437 ![]() ![]() |
QUOTE Вообще говоря там куча кода, генерирующего скрипты(иначе бы пришлось ручками писать раз в 20 больше Хоть я никогда не писал квесты, но разве есть область, где метапрограммирование эффективнее ооп? QUOTE Насчет более полезно потратить - это мое дело как мне тратить мое время Это не претензия, просто удивился. QUOTE Исходники, как я погляжу, скачало 3 человека. Все три - Cluster с разных компов. QUOTE К скачавшим: что вы с ними делаете Cluster проверяет способен ли кто-нибудь писать более быдланский код, чем он сам. Upd Я скачал, включил и умер от попытки понюхать носок. Реалистично. Выключил. Сообщение отредактировал Chintoi - Пятница, 27 августа 2010, 00:50 |
| ripatti |
Пятница, 27 августа 2010, 02:05
Отправлено
#14
|
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Регистрация: 16 нояб. 2009 Из: Уфа Пользователь №: 34 479 ![]() ![]() |
> Хоть я никогда не писал квесты, но разве есть область, где метапрограммирование эффективнее ооп?
ООП - это квестовый движок. Который работает с множеством объектов, которые включают в себя скрипты. Ибо, извините, я не буду для каждого игрового условия создавать кучу объектов - мне проще просто написать парсер грамматики и вставить это все в объект. Далее, квестовый движок можно представить себе как виртуальную машину, в которую загружается весь игровой мир. В скриптах, конечно. А вот для создания скриптов почему бы и метапрограммированием не попользоваться? Ну вот например. В квесте есть одна комбинаторная головоломка (она баян, на самом деле Одно из подземелий генерится по карте. Ибо ошибиться в 30 комнатах кто с кем соединяется - раз плюнуть. И потом тестить все ето... Щщаз Кроме того, там есть еще одна такая фича как рандом. Например, в данном квесте некоторые головоломки и лабиринты генерятся случайным образом. Ну, думаю, тут все ясно UPD P.S. кто нить подскажет как нормально делать цитаты в фаст репли? Сообщение отредактировал ripatti - Пятница, 27 августа 2010, 02:06 |
| boulgin |
Пятница, 27 августа 2010, 03:14
Отправлено
#15
|
|
Безумец ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 922 Регистрация: 01 июля 2009 Пользователь №: 32 648 ![]() ![]() |
QUOTE (ripatti @ Пятница, 27 августа 2010, 03:05) пользуйтесь пунктом ''reply прямо под сообщением того, кого вы хотите цитировать -------------------- ![]() |
| Chintoi |
Пятница, 27 августа 2010, 03:24
Отправлено
#16
|
|
Маньяк ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 366 Регистрация: 28 мая. 2007 Пользователь №: 22 437 ![]() ![]() |
QUOTE Ибо, извините, я не буду для каждого игрового условия создавать кучу объектов - мне проще просто написать парсер грамматики и вставить это все в объект. Смысл ооп не в том, чтобы плодить объекты, а в том, чтобы сокращать количество кода и увеличивать структурированность и переносить логику в компайл-тайм. 20 КБ на контент и 80 КБ на логику в юзер оутпут приложении это глаза на лоб как нерационально. QUOTE Далее, квестовый движок можно представить себе как виртуальную машину, в которую загружается весь игровой мир. В скриптах, конечно. А вот для создания скриптов почему бы и метапрограммированием не попользоваться? Твоя машина - проц. приставки, который недалеко ушел от машины тьюринга, и задача инженера - наиболее рационально её использовать. Добавлять дополнительные прослойки логики почти всегда нерационально. Рационально разделять логику на составные части, тогда выявляется целая куча кода, без которой просто дышать легче. QUOTE Ну вот например. В квесте есть одна комбинаторная головоломка (она баян, на самом деле Если ты не пишешь числа непосредственно, это не значит что их нет. Вот готовое обобщенное решение задачи. class state{ quest_type1 property1; quest_type2 property2; ... quest_typen propertym; integral_type summ_method(){...} } container<state> all_states; for(int i = 0; i < 1024; i++){ state st = {p1(i), p2(i),..., pn(i)}; all_states.push(st); } Никаких движков, минимум оверхеда в байтах и рантайме, и, главное, в программерском коде. QUOTE Одно из подземелий генерится по карте. Ибо ошибиться в 30 комнатах кто с кем соединяется - раз плюнуть. И потом тестить все ето... Щщаз Слышал про бинарные деревья? http://en.wikipedia.org/wiki/Maze_generation_algorithm И еще STL контейнер map. QUOTE Кроме того, там есть еще одна такая фича как рандом. Например, в данном квесте некоторые головоломки и лабиринты генерятся случайным образом. Ну, думаю, тут все ясно В конструкторе глобального объекта и сгенерировать все. Даже с полным рандомом в компайл тайме большая часть будет готова. QUOTE P.S. кто нить подскажет как нормально делать цитаты в фаст репли? [QUОTE]...[/QUОTE] Сообщение отредактировал Chintoi - Пятница, 27 августа 2010, 03:40 |
| ripatti |
Пятница, 27 августа 2010, 04:29
Отправлено
#17
|
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Регистрация: 16 нояб. 2009 Из: Уфа Пользователь №: 34 479 ![]() ![]() |
QUOTE Смысл ооп не в том, чтобы плодить объекты, а в том, чтобы сокращать количество кода и увеличивать структурированность и переносить логику в компайл-тайм. 20 КБ на контент и 80 КБ на логику в юзер оутпут приложении это глаза на лоб как нерационально. Собственно для этого я парсеры и засунул туда. Насчет соотношения 20/80 - это только игровой текст (ага, именно тот, который у меня грамматически полностью неверен) добавьте сюда 10 скриптовых условий и 10 для действий, завернем все это в связывающий их код - еще 10. Т.е. на движок и генераторы - 50. Нормально, имхо. QUOTE Твоя машина - проц. приставки, который недалеко ушел от машины тьюринга, и задача инженера - наиболее рационально её использовать. Добавлять дополнительные прослойки логики почти всегда нерационально. Рационально разделять логику на составные части, тогда выявляется целая куча кода, без которой просто дышать легче. Угу... может мне еще текстовый квест на ассемблере написать чтобы переходы выполнялись не за 15мс, а за 1?=_= Оно рисует дольше чем работает моя виртуальная машина. В любой программе пишется наиболее приемлемый код по соотношению "скорость/время написания". В моем случае такой подход полностью оправдан. QUOTE Если ты не пишешь числа непосредственно, это не значит что их нет. Вот готовое обобщенное решение задачи. Я сделал абсолютно то же самое, что вы мне сейчас написали (если что - вы написали генератор состояний). То есть представил числа в понятиях квестового движка. Там прикол просто в том, что если бы он знал что такое число - состояние бы потребовалось одно QUOTE Слышал про бинарные деревья? http://en.wikipedia.org/wiki/Maze_generation_algorithm Ну вот в квесте у меня реализовал рандомный Крускал. Правда, там бинарные деревья как то не нужны... QUOTE И еще STL контейнер map. Вы меня утомляете=_= Хватит меня троллить QUOTE В конструкторе глобального объекта и сгенерировать все. Даже с полным рандомом в компайл тайме большая часть будет готова. Генерация всего мира происходит в течение тех 3-4 секунд, пока висит сообщение "Loading...". Это вполне приемлемо по производительности. Если бы оно генерилось хотя бы дольше 10 секунд, то, конечно же, пришлось бы отделять рандомные объекты и все остальные и потом перегенерировать только рандомные. Или даже еще круче извращаться. Но у нас 3-4 секунды. Так что зачем создавать себе геморрой? UPD Ухаха, крутые цитатки Сообщение отредактировал Kir - Пятница, 27 августа 2010, 10:17 |
| Chintoi |
Пятница, 27 августа 2010, 06:31
Отправлено
#18
|
|
Маньяк ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 366 Регистрация: 28 мая. 2007 Пользователь №: 22 437 ![]() ![]() |
открываю код...
facepalm-facepalm-faceplam-faceplam-raaaage QUOTE Нормально, имхо. Нет. Абсолютно. QUOTE Собственно для этого я парсеры и засунул туда. Насчет соотношения 20/80 - это только игровой текст (ага, именно тот, который у меня грамматически полностью неверен) добавьте сюда 10 скриптовых условий и 10 для действий, завернем все это в связывающий их код - еще 10. Т.е. на движок и генераторы - 50. У тебя уходит целая куча сил на оформление твоего образа мыслей. Того, чего пользователь никогда, никогда, никогда не увидит. Я прошелся по твоему сорсу, стерев все переводы строк, табы и пробелы. Количество кода сократилось на... 16.4%. Это 18 000 бесполезных нажатий на клавиатуру. Стоило один раз написать принт с автоматическим переносом строк (4 строчки), и можно было бы набирать текст просто как текст - без переплетения с синтаксисом яп и логикой - без ручного перевода строк, отступов, кавычек. QUOTE Угу... может мне еще текстовый квест на ассемблере написать чтобы переходы выполнялись не за 15мс, а за 1?=_= Я не советую стирать ВСЕ уровни логики, я советую выбросить ненужные. И я не процессор жалею, а то, как такая дикая способность набирать текст как у тебя тратится вникуда. QUOTE Оно рисует дольше чем работает моя виртуальная машина. В любой программе пишется наиболее приемлемый код по соотношению "скорость/время написания". В моем случае такой подход полностью оправдан. Любая машина делает одно и то же, если результат один. Вопрос в том как она это делает. Можно посчитать 2x2 за одну инструкцию, а можно четыре дня писать для этого исходник с тысячей строк. Виртуальная машина - это как играть в футбол на льду, чесать ухо через голову и ездить на внедорожнике по гоночному треку одновременно. Это оправдано только тогда, когда по-другому никак. Например, когда нужно запускать один код под разными операционками. QUOTE Ну вот в квесте у меня реализовал рандомный Крускал. Правда, там бинарные деревья как то не нужны... Они там есть, ты просто их так закопал, что не знаешь где они. Любой плоский лабиринт наиболее коротко представляется бинарным деревом. См. изоморфизм. QUOTE Генерация всего мира происходит в течение тех 3-4 секунд, пока висит сообщение "Loading...". Это вполне приемлемо по производительности. Тогда зайди в ранний тред про игры на псп и посмотри на количество нытья по поводу того, что на дс вообще нет надписи Loading. QUOTE Если бы оно генерилось хотя бы дольше 10 секунд, то, конечно же, пришлось бы отделять рандомные объекты и все остальные и потом перегенерировать только рандомные. Если писАть правильно, то все что возможно, автоматически захардкодится. QUOTE Или даже еще круче извращаться. Но у нас 3-4 секунды. Так что зачем создавать себе геморрой? Куда уж круче извращаться? QUOTE UPD Ухаха, крутые цитатки Наверное не нужно было копипастить как обычно, а набрать одно слово самому. С английским у тебя отлично. Знаешь все необходимые конструкции, словарный запас хороший, но нет представления об английских частях речи, предлогах и по мелочи. |
| ripatti |
Пятница, 27 августа 2010, 07:05
Отправлено
#19
|
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Регистрация: 16 нояб. 2009 Из: Уфа Пользователь №: 34 479 ![]() ![]() |
Да, про автоперенос строки я действительно ступил и догадался далеко не сразу)) А именно когда порядка половины уже было написано. Поэтому забил :D Так что тут соглашусь :)
В плане виртуальной машины - ну, мне так удобнее :) Она автоматически предоставляет интерфейс с пользователем и сама выполняет необходимые мне действия. Как можно видеть в первом посте, я под дс прогаю дней 10, не больше. Возможно, позже сооружу более подходящую под дс архитектуру. По поводу бинарных деревьев - пожалуйста, не надо=_= Я года 3 занимаюсь спортивным программированием и не по наслышке знаю что это такое, как оно работает и как это использовать. А в Крускале бинарных деревьев нет. Изоморфизм - это вообще другая степь, к структурам данных не относящаяся. Да и вообще, пожалуйста, не надо про производительность:) Я знаю как делать быстро и знаю когда это имеет место. Насчет английского - неожиданно оО |
| Chintoi |
Пятница, 27 августа 2010, 09:22
Отправлено
#20
|
|
Маньяк ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 366 Регистрация: 28 мая. 2007 Пользователь №: 22 437 ![]() ![]() |
QUOTE Она автоматически предоставляет интерфейс с пользователем и сама выполняет необходимые мне действия. Ты уверен что язык, которому не первый десяток лет и одной из целей создания которого было дать инструмент построения интерфейсов уже не предоставляет всех возможностей движка, на создание которого ушло пару часов? QUOTE Как можно видеть в первом посте, я под дс прогаю дней 10, не больше. Возможно, позже сооружу более подходящую под дс архитектуру. Да причем тут архитектура, ты же делал что-то куда более конкретное. QUOTE По поводу бинарных деревьев - пожалуйста, не надо=_= Я года 3 занимаюсь спортивным программированием и не по наслышке знаю что это такое, как оно работает и как это использовать. Чем дальше в лес... хотя при чем это тут. QUOTE А в Крускале бинарных деревьев нет. Я сразу не вник как он связан с лабиринтом, но в твоем коде я видел карты из псевдографики, и обход псевдографики. Что мешает нарисовать карту человеческим методом - на бумаге, и записать в виде графа в строчку. Какая разница если результат один? А что если придется добавить третье измерение? Крускал уже бессилен, поскольку является формализованной записью _частного_ случая создания дерева, да еще какая-то псевдографика своих проблем добавляет. QUOTE Изоморфизм - это вообще другая степь, к структурам данных не относящаяся. Я более образно. В плане отображения задумки сцены из игры в её реализацию. Ведь если хотел, чтобы у дракона было именно 3 головы, на чем бы не писал дракона и как длинно, в результате у него все равно должно получиться именно 3 головы. QUOTE Да и вообще, пожалуйста, не надо про производительность Это очень неплохо, вот только если так продолжать, результатом ковыряний с графикой ДСки будет какая-нибудь банальность, которая уже тыщу раз сделана: типа двигающийся спрайт(может даже не один!(найденный в гугле или нарисованный в пейнте)), битмап на экранчике, скроллящийся бэкграунд, самодельная пикающая музычка в ущербном формате, причем файл музычки сгенерирован скриптом на самодельном скрипте, на самодельном движке, написанном на смеси макросов и шаблонной библиотеки. Никто, кроме тебя, не оценит. |
![]() ![]() |
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
| Упрощённая версия | Сейчас: Вт., 27 окт. 2026, 00:14 |




Вторник, 24 августа 2010, 19:11



















