Forums Logo

Здравствуйте Гость ( Вход | Регистрация )

Reply to this topicStart new topicStart Poll

Каскадный · [ Стандартный ] · Линейный

> cave quest, спид-проект за 8 дней. релиз

ripatti
post Вторник, 24 августа 2010, 19:11
Отправлено #1


Новичок
*

Группа: Пользователи
Сообщений: 20
Регистрация: 16 нояб. 2009
Из: Уфа
Пользователь №: 34 479





Привет всем))

Чуть больше недели назад стукнуло мне в голову скачать какой нить компилятор с либами под ндс, дабы что нить под эту самую ндс написать. После каноничного хелло ворлд решил написать простенький текстовый квест за пару дней. Пару дней в итоге растянулись раза в 4, а квест получился далеко не простенькимsmile.gif

Результат моих трудов выкладываю здесь.

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

Загрузить файл сюда у меня прав что-то мало, поэтому вот ссылка:
http://rapidshare.com/files/414873564/cave_quest.rar

UPD
Скриншоты:
Присоединённое изображение
Присоединённое изображение
Присоединённое изображение
Присоединённое изображение

UPD
Исходники:
Присоединённый файл  cave_quest_src.rar ( 30.72кб ) Кол-во скачиваний: 82


Сообщение отредактировал ripatti - Вторник, 24 августа 2010, 23:53
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Cluster
post Вторник, 24 августа 2010, 19:14
Отправлено #2


Флудер
*******

Группа: Пользователи
Сообщений: 6 574
Регистрация: 01 мая. 2005
Из: Электросталь
Пользователь №: 12 933





Ура, ещё один русский разработчик smile.gif
Чуть попозже обязательно посмотрю. А ты писал без использования PAlib?


--------------------
3DS: 4382-2018-2181
Nintendo Switch: SW-6807-3955-8188
Мой канал YouTube
Мой Twitter
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ripatti
post Вторник, 24 августа 2010, 19:16
Отправлено #3


Новичок
*

Группа: Пользователи
Сообщений: 20
Регистрация: 16 нояб. 2009
Из: Уфа
Пользователь №: 34 479





писал на C++, юзал devkitPro и libnds
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
GDomain
post Вторник, 24 августа 2010, 20:54
Отправлено #4


Фанат
***

Группа: Пользователи
Сообщений: 119
Регистрация: 09 июля 2008
Пользователь №: 27 393





Скинь шоты) интересно посмотреть)
та и неначем)


--------------------
user posted image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ripatti
post Вторник, 24 августа 2010, 21:37
Отправлено #5


Новичок
*

Группа: Пользователи
Сообщений: 20
Регистрация: 16 нояб. 2009
Из: Уфа
Пользователь №: 34 479





добавил шоты
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
p0nt
post Вторник, 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...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
todeskampf
post Вторник, 24 августа 2010, 22:10
Отправлено #7


НЕ МАRЧb ПР0X0DN
******

Группа: Пользователи
Сообщений: 1 656
Регистрация: 06 дек. 2008
Из: Киевский гарнизон
Пользователь №: 29 309





мдэ, онглийский просто шикарен.

Опустив весь остальной надмозг, я бы написал Items in your possession sleepy.gif
Ведь стоило над этим в первую очередь работать, кроме текста то не видно ничего.

Сообщение отредактировал todeskampf - Вторник, 24 августа 2010, 22:11


--------------------
They say you never hear the one that hits you.

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ripatti
post Вторник, 24 августа 2010, 23:26
Отправлено #8


Новичок
*

Группа: Пользователи
Сообщений: 20
Регистрация: 16 нояб. 2009
Из: Уфа
Пользователь №: 34 479





Я в первую очередь работал над игровой механикой.

Английский моя беда=_= Он мне еще со школы вообще никак не дается, хотя техническую литературу вроде без проблем читаю и понимаю.

Вот такие вот дела. Если вдруг кому будет интересно - можете переписать текст. Правда, это несколько осложняется тем, что текст врезан в код:D. И текста там не мало... если рассматривать только код - больше 100 Кб получается.

В любом случае развивать дальше то, что есть, я не буду.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
andronidze
post Вторник, 24 августа 2010, 23:37
Отправлено #9


В белых штанах
******

Группа: Пользователи
Сообщений: 1 507
Регистрация: 21 дек. 2007
Из: Москва
Пользователь №: 24 884





Тогда исходники давай smile.gif


--------------------
user posted image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ripatti
post Вторник, 24 августа 2010, 23:54
Отправлено #10


Новичок
*

Группа: Пользователи
Сообщений: 20
Регистрация: 16 нояб. 2009
Из: Уфа
Пользователь №: 34 479





Добавил исходники.

Мне не жалко :D
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Chintoi
post Четверг, 26 августа 2010, 02:20
Отправлено #11


Маньяк
****

Группа: Пользователи
Сообщений: 366
Регистрация: 28 мая. 2007
Пользователь №: 22 437





QUOTE (ripatti @ Среда, 25 августа 2010, 00:26)
Вот такие вот дела. Если вдруг кому будет интересно - можете переписать текст. Правда, это несколько осложняется тем, что текст врезан в кодlol.gif. И текста там не мало... если рассматривать только код - больше 100 Кб получается.

0_0
100 000
сто тысяч символов.
и ни одного правильного предложения.
не стоило ли как-то более полезно потратить усилия?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ripatti
post Четверг, 26 августа 2010, 03:21
Отправлено #12


Новичок
*

Группа: Пользователи
Сообщений: 20
Регистрация: 16 нояб. 2009
Из: Уфа
Пользователь №: 34 479





Что, совсем ни одного?Т_Т

Вообще говоря там куча кода, генерирующего скрипты(иначе бы пришлось ручками писать раз в 20 больше lol.gif) + рукописные условия и действия скриптов. Так что, собственно, английского текста получится килобайт 20-30, не больше. Наверно.

Насчет более полезно потратить - это мое дело как мне тратить мое времяsmile.gif

Я сейчас ковыряю местные графические возможности. Если не заброшу дело, будет еще что нибудь, где в английской грамматике ошибиться невозможно, ибо текст будет сведен к минимуму lol.gif

UPD
Ну чо? lol.gif Кто скачал? Кто прошел?
Или мой английский настолько пугающ, что никто не решился?

Исходники, как я погляжу, скачало 3 человека. К скачавшим: что вы с ними делаете, если не секрет?

А то мне (как бы) интересноsmile.gif

Сообщение отредактировал ripatti - Четверг, 26 августа 2010, 08:06
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Chintoi
post Пятница, 27 августа 2010, 00:32
Отправлено #13


Маньяк
****

Группа: Пользователи
Сообщений: 366
Регистрация: 28 мая. 2007
Пользователь №: 22 437





QUOTE
Вообще говоря там куча кода, генерирующего скрипты(иначе бы пришлось ручками писать раз в 20 больше lol.gif)

Хоть я никогда не писал квесты, но разве есть область, где метапрограммирование эффективнее ооп?
QUOTE
Насчет более полезно потратить - это мое дело как мне тратить мое времяsmile.gif

Это не претензия, просто удивился.
QUOTE
Исходники, как я погляжу, скачало 3 человека.

Все три - Cluster с разных компов.
QUOTE
К скачавшим: что вы с ними делаете

Cluster проверяет способен ли кто-нибудь писать более быдланский код, чем он сам.

Upd Я скачал, включил и умер от попытки понюхать носок. Реалистично. Выключил.

Сообщение отредактировал Chintoi - Пятница, 27 августа 2010, 00:50
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ripatti
post Пятница, 27 августа 2010, 02:05
Отправлено #14


Новичок
*

Группа: Пользователи
Сообщений: 20
Регистрация: 16 нояб. 2009
Из: Уфа
Пользователь №: 34 479





> Хоть я никогда не писал квесты, но разве есть область, где метапрограммирование эффективнее ооп?

ООП - это квестовый движок. Который работает с множеством объектов, которые включают в себя скрипты. Ибо, извините, я не буду для каждого игрового условия создавать кучу объектов - мне проще просто написать парсер грамматики и вставить это все в объект.

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

Ну вот например. В квесте есть одна комбинаторная головоломка (она баян, на самом деле lol.gif), которая включает в себя 1024 состояния, в каждом из которых нужно считать сумму. Однако квестовый движок не работает с числами (ибо 99% головоломок это не нужно и я не пихал числа в движок). Поэтому мне пришлось генерить все 1024 состояния. Это, конечно, издевательство над движком, но раз это сделать возможно, почему бы и нет smile.gif Но вот ручками все прописывать - лучше увольте.

Одно из подземелий генерится по карте. Ибо ошибиться в 30 комнатах кто с кем соединяется - раз плюнуть. И потом тестить все ето... Щщаз smile.gif Ну даже если я не ошибусь - что делать если я захочу позже немного поменять лабиринт? Править эту кучу однообразного кода?

Кроме того, там есть еще одна такая фича как рандом. Например, в данном квесте некоторые головоломки и лабиринты генерятся случайным образом. Ну, думаю, тут все ясно smile.gif

UPD
P.S. кто нить подскажет как нормально делать цитаты в фаст репли?

Сообщение отредактировал ripatti - Пятница, 27 августа 2010, 02:06
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
boulgin
post Пятница, 27 августа 2010, 03:14
Отправлено #15


Безумец
*****

Группа: Пользователи
Сообщений: 922
Регистрация: 01 июля 2009
Пользователь №: 32 648





QUOTE (ripatti @ Пятница, 27 августа 2010, 03:05)

UPD
P.S. кто нить подскажет как нормально делать цитаты в фаст репли?
*


пользуйтесь пунктом ''reply прямо под сообщением того, кого вы хотите цитировать


--------------------
user posted image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Chintoi
post Пятница, 27 августа 2010, 03:24
Отправлено #16


Маньяк
****

Группа: Пользователи
Сообщений: 366
Регистрация: 28 мая. 2007
Пользователь №: 22 437





QUOTE
Ибо, извините, я не буду для каждого игрового условия создавать кучу объектов - мне проще просто написать парсер грамматики и вставить это все в объект.

Смысл ооп не в том, чтобы плодить объекты, а в том, чтобы сокращать количество кода и увеличивать структурированность и переносить логику в компайл-тайм. 20 КБ на контент и 80 КБ на логику в юзер оутпут приложении это глаза на лоб как нерационально.
QUOTE
Далее, квестовый движок можно представить себе как виртуальную машину, в которую загружается весь игровой мир. В скриптах, конечно. А вот для создания скриптов почему бы и метапрограммированием не попользоваться? smile.gif

Твоя машина - проц. приставки, который недалеко ушел от машины тьюринга, и задача инженера - наиболее рационально её использовать. Добавлять дополнительные прослойки логики почти всегда нерационально. Рационально разделять логику на составные части, тогда выявляется целая куча кода, без которой просто дышать легче.
QUOTE
Ну вот например. В квесте есть одна комбинаторная головоломка (она баян, на самом деле lol.gif), которая включает в себя 1024 состояния, в каждом из которых нужно считать сумму. Однако квестовый движок не работает с числами (ибо 99% головоломок это не нужно и я не пихал числа в движок). Поэтому мне пришлось генерить все 1024 состояния. Это, конечно, издевательство над движком, но раз это сделать возможно, почему бы и нет smile.gif Но вот ручками все прописывать - лучше увольте.

Если ты не пишешь числа непосредственно, это не значит что их нет. Вот готовое обобщенное решение задачи.
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 комнатах кто с кем соединяется - раз плюнуть. И потом тестить все ето... Щщаз smile.gif Ну даже если я не ошибусь - что делать если я захочу позже немного поменять лабиринт? Править эту кучу однообразного кода?

Слышал про бинарные деревья?
http://en.wikipedia.org/wiki/Maze_generation_algorithm
И еще STL контейнер map.
QUOTE
Кроме того, там есть еще одна такая фича как рандом. Например, в данном квесте некоторые головоломки и лабиринты генерятся случайным образом. Ну, думаю, тут все ясно smile.gif

В конструкторе глобального объекта и сгенерировать все. Даже с полным рандомом в компайл тайме большая часть будет готова.
QUOTE
P.S. кто нить подскажет как нормально делать цитаты в фаст репли?

[QUОTE]...[/QUОTE]

Сообщение отредактировал Chintoi - Пятница, 27 августа 2010, 03:40
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ripatti
post Пятница, 27 августа 2010, 04:29
Отправлено #17


Новичок
*

Группа: Пользователи
Сообщений: 20
Регистрация: 16 нояб. 2009
Из: Уфа
Пользователь №: 34 479





QUOTE
Смысл ооп не в том, чтобы плодить объекты, а в том, чтобы сокращать количество кода и увеличивать структурированность и переносить логику в компайл-тайм. 20 КБ на контент и 80 КБ на логику в юзер оутпут приложении это глаза на лоб как нерационально.



Собственно для этого я парсеры и засунул туда. Насчет соотношения 20/80 - это только игровой текст (ага, именно тот, который у меня грамматически полностью неверен) добавьте сюда 10 скриптовых условий и 10 для действий, завернем все это в связывающий их код - еще 10. Т.е. на движок и генераторы - 50. Нормально, имхо.

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


Угу... может мне еще текстовый квест на ассемблере написать чтобы переходы выполнялись не за 15мс, а за 1?=_= Оно рисует дольше чем работает моя виртуальная машина. В любой программе пишется наиболее приемлемый код по соотношению "скорость/время написания". В моем случае такой подход полностью оправдан.

QUOTE
Если ты не пишешь числа непосредственно, это не значит что их нет. Вот готовое обобщенное решение задачи.


Я сделал абсолютно то же самое, что вы мне сейчас написали (если что - вы написали генератор состояний). То есть представил числа в понятиях квестового движка. Там прикол просто в том, что если бы он знал что такое число - состояние бы потребовалось одно lol.gif

QUOTE
Слышал про бинарные деревья?
http://en.wikipedia.org/wiki/Maze_generation_algorithm


Ну вот в квесте у меня реализовал рандомный Крускал. Правда, там бинарные деревья как то не нужны...

QUOTE
И еще STL контейнер map.


Вы меня утомляете=_= Хватит меня троллить lol.gif Скачайте исходники и посмотрите что я там использую.

QUOTE
В конструкторе глобального объекта и сгенерировать все. Даже с полным рандомом в компайл тайме большая часть будет готова.


Генерация всего мира происходит в течение тех 3-4 секунд, пока висит сообщение "Loading...". Это вполне приемлемо по производительности. Если бы оно генерилось хотя бы дольше 10 секунд, то, конечно же, пришлось бы отделять рандомные объекты и все остальные и потом перегенерировать только рандомные. Или даже еще круче извращаться. Но у нас 3-4 секунды. Так что зачем создавать себе геморрой? smile.gif

UPD
Ухаха, крутые цитатки lol.gif

Сообщение отредактировал Kir - Пятница, 27 августа 2010, 10:17
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Chintoi
post Пятница, 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 секунды. Так что зачем создавать себе геморрой? smile.gif

Куда уж круче извращаться?
QUOTE
UPD
Ухаха, крутые цитатки lol.gif

Наверное не нужно было копипастить как обычно, а набрать одно слово самому.

С английским у тебя отлично. Знаешь все необходимые конструкции, словарный запас хороший, но нет представления об английских частях речи, предлогах и по мелочи.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ripatti
post Пятница, 27 августа 2010, 07:05
Отправлено #19


Новичок
*

Группа: Пользователи
Сообщений: 20
Регистрация: 16 нояб. 2009
Из: Уфа
Пользователь №: 34 479





Да, про автоперенос строки я действительно ступил и догадался далеко не сразу)) А именно когда порядка половины уже было написано. Поэтому забил :D Так что тут соглашусь :)

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

По поводу бинарных деревьев - пожалуйста, не надо=_= Я года 3 занимаюсь спортивным программированием и не по наслышке знаю что это такое, как оно работает и как это использовать. А в Крускале бинарных деревьев нет. Изоморфизм - это вообще другая степь, к структурам данных не относящаяся. Да и вообще, пожалуйста, не надо про производительность:) Я знаю как делать быстро и знаю когда это имеет место.

Насчет английского - неожиданно оО
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Chintoi
post Пятница, 27 августа 2010, 09:22
Отправлено #20


Маньяк
****

Группа: Пользователи
Сообщений: 366
Регистрация: 28 мая. 2007
Пользователь №: 22 437





QUOTE
Она автоматически предоставляет интерфейс с пользователем и сама выполняет необходимые мне действия.

Ты уверен что язык, которому не первый десяток лет и одной из целей создания которого было дать инструмент построения интерфейсов уже не предоставляет всех возможностей движка, на создание которого ушло пару часов?
QUOTE
Как можно видеть в первом посте, я под дс прогаю дней 10, не больше. Возможно, позже сооружу более подходящую под дс архитектуру.

Да причем тут архитектура, ты же делал что-то куда более конкретное.
QUOTE
По поводу бинарных деревьев - пожалуйста, не надо=_= Я года 3 занимаюсь спортивным программированием и не по наслышке знаю что это такое, как оно работает и как это использовать.

Чем дальше в лес... хотя при чем это тут.
QUOTE
А в Крускале бинарных деревьев нет.

Я сразу не вник как он связан с лабиринтом, но в твоем коде я видел карты из псевдографики, и обход псевдографики. Что мешает нарисовать карту человеческим методом - на бумаге, и записать в виде графа в строчку. Какая разница если результат один? А что если придется добавить третье измерение? Крускал уже бессилен, поскольку является формализованной записью _частного_ случая создания дерева, да еще какая-то псевдографика своих проблем добавляет.
QUOTE
Изоморфизм - это вообще другая степь, к структурам данных не относящаяся.

Я более образно. В плане отображения задумки сцены из игры в её реализацию. Ведь если хотел, чтобы у дракона было именно 3 головы, на чем бы не писал дракона и как длинно, в результате у него все равно должно получиться именно 3 головы.
QUOTE
Да и вообще, пожалуйста, не надо про производительностьsmile.gif Я знаю как делать быстро и знаю когда это имеет место.

Это очень неплохо, вот только если так продолжать, результатом ковыряний с графикой ДСки будет какая-нибудь банальность, которая уже тыщу раз сделана: типа двигающийся спрайт(может даже не один!(найденный в гугле или нарисованный в пейнте)), битмап на экранчике, скроллящийся бэкграунд, самодельная пикающая музычка в ущербном формате, причем файл музычки сгенерирован скриптом на самодельном скрипте, на самодельном движке, написанном на смеси макросов и шаблонной библиотеки. Никто, кроме тебя, не оценит.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
 

Упрощённая версия Сейчас: Пн., 29 апр. 2024, 09:03
Skin Designed (c) by Rooq.net, All Rights Reserved.