Forums Logo

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

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

> 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
 
Reply to this topicStart new topicStart Poll
Ответов
ripatti
post Пятница, 27 августа 2010, 02:05
Отправлено #2


Новичок
*

Группа: Пользователи
Сообщений: 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
Chintoi
post Пятница, 27 августа 2010, 03:24
Отправлено #3


Маньяк
****

Группа: Пользователи
Сообщений: 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

Posts in this topic
ripatti   cave quest   Вторник, 24 августа 2010, 19:11
Cluster   Ура, ещё один русский разработчик :) Чуть попозже ...   Вторник, 24 августа 2010, 19:14
ripatti   писал на C++, юзал devkitPro и libnds   Вторник, 24 августа 2010, 19:16
GDomain   Скинь шоты) интересно посмотреть) та и неначем)   Вторник, 24 августа 2010, 20:54
ripatti   добавил шоты   Вторник, 24 августа 2010, 21:37
p0nt   Английский действительно ни о чем. А так я бы поиг...   Вторник, 24 августа 2010, 22:05
todeskampf   мдэ, онглийский просто шикарен. Опустив весь оста...   Вторник, 24 августа 2010, 22:10
ripatti   Я в первую очередь работал над игровой механикой. ...   Вторник, 24 августа 2010, 23:26
Chintoi   0_0 100 000 сто тысяч символов. и ни одного прави...   Четверг, 26 августа 2010, 02:20
andronidze   Тогда исходники давай :)   Вторник, 24 августа 2010, 23:37
ripatti   Добавил исходники. Мне не жалко :D   Вторник, 24 августа 2010, 23:54
ripatti   Что, совсем ни одного?Т_Т Вообще говоря там куча ...   Четверг, 26 августа 2010, 03:21
Chintoi   Хоть я никогда не писал квесты, но разве есть обл...   Пятница, 27 августа 2010, 00:32
boulgin   пользуйтесь пунктом ''reply прямо под со...   Пятница, 27 августа 2010, 03:14
ripatti   Собственно для этого я парсеры и засунул туда. ...   Пятница, 27 августа 2010, 04:29
Chintoi   открываю код... facepalm-facepalm-faceplam-facepla...   Пятница, 27 августа 2010, 06:31
ripatti   Да, про автоперенос строки я действительно ступил ...   Пятница, 27 августа 2010, 07:05
Chintoi   Ты уверен что язык, которому не первый десяток ле...   Пятница, 27 августа 2010, 09:22
andronidze   Пацаны, я вам травмы нанесу - чо на человека набро...   Пятница, 27 августа 2010, 09:30
Chintoi   Предложи что-нибудь лучшее   Пятница, 27 августа 2010, 09:33
ripatti   Охохох... Там не один лабиринт и генерятся они по-...   Пятница, 27 августа 2010, 10:10
ripatti   Хех)) Мне интересно - кто нить правит текст? Ну, я...   Воскресенье, 19 сентября 2010, 07:21


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

Упрощённая версия Сейчас: Пт., 27 июня 2025, 10:46
Skin Designed (c) by Rooq.net, All Rights Reserved.