Блог пользователя creator

Чат. Часть 2

А все так красиво начиналась :)
Сделав маленький пример и получив с него данные
loadVariablesNum("http://192.168.0.200/var", 0, "GET");
обрадовался и стал копать в эту сторону, но! получаю дофига мусора, а именно флэш шлет все переменные, стал копать на XML протокол, но код

on (press) {
trace('here');
var str = 'nick='+_root.nick+'&'+'msg='+_root.message;
str="http://localhost:8080/chat"+str;
var my_xmls:XML = new XML(""+_root.nick+""+_root.message+"");
var myout_xml:XML = new XML();

Чат

Думаю в любой онлайн игре необходимо понимание что играешь с живыми людьми,
а не ботами, лучше всего для этой цели подходит чат.

В качестве отдельного куска проекта, я решил реализовать его, для хранения на сервере
воспользуемся, следующей структурой.


typedef struct
{
int id;
char type;
int user_id;
int timestamp;
string message;
} TChatMessage;

Дальше есть варианты, использовать для хранения vector или очередь - queue.
В самом процессе хранить все сообщения наверное очень жестоко, а для удаления очередь предпочтительней.

Легенда о фрукте

С давних времен в темных городах (вот так мы сразу окрестили все города лабиринта) - вымерла практически вся растительность
но лихие инженеры в своих темных лабораториях, варили и проектировали свои зелья.
Как-то ранним утром, пожилой (лет 40) ученый добился фотосинтеза от пучков неяркого света от излучения минерала рапаппила
(ого-ого я помню все что забредил), и на лавке пророс элементарный папоротник. В дальнейшем как выяненно очень вкусный и
и питательный продукт (как руккола в Москве) - и все население стало его жрать(потреблять) +2 к уровню здоровья -1 к ловкости

Сервер и вопросы

Вчера вечерком (вернее сказать ближе к середине ночи), решил покодить - а то мозг заплывет
жиром или наоборот раззжижиться от пива нафик.

Решено было ударить по серверной части, т.к. в клиентской в принципе меньше работы.
Пишем именно ту часть которая генерит мир 7 лабиринтов.
Предполагается (по геймплею) что игрок заходит в какой-то лабиринт по его ид, т.е.
для первоначального запуска нужно сгенерить 4 лабиринта во всех частях света от славного города Датора.

Игровая валюта

Конечно тривиально и очень банально - сделать золото или золотые, но мы пойдем другим путем.

Среди нескольких вариантов (включая бредовые), выбрано следующее

Рисуем по маленьку

Сегодня мало того что понедельник да еще и погода - хмуро, холодно - прям как летом.

Кодить пока не тянет - решил порисовать, вот так будет примерно выглядить gameplay

лабиринт - примерный вид

Во вложении исходный Flash

Прием данных

Сегодня попробуем получить данные с сервера и построить по ним карту в Flash.
В нашу предыдущую заготовку по рисованию карты внесем изменения.
в initScene() добавим создания еще одного массива для кэширования карты
oldmap = new Array(mapwidth*mapheight), а также весь массив основной карты заполним значением -1, это будет означать что
карта "скрыта". Ну для графического оформления сделаем еще один клип star который будем выводить при закрытой карте.

Передача данных

Как было выясненно из моего поста Flash может обрабатывать только данные ввиде переменных, теперь
нам нужно передать наш лабиринт с сервера на клиентскую часть. Для этого нужно лабиринт закодировать и передавать его по частям,
почему по частям а не целиком? Чтоб игрок который сидит не смог сразу выяснить где он находиться и куда ему сразу идти.

Примерный протокол передачи данных от клиента к серверу.
1. запрос общей информации по ID лабиринта - с сервера получаем координаты игрока, размеры карты и ее тип

Составляем лабиринты

Вообще конечно задача составить лабиринт очень проста с использованием random(), но если нужно сделать так чтобы из лабиринта был выход она уже усложняется, тем более (желательно) чтобы выход был не на соседней локации.

Для составления лабиринта нужно решить задачу по нахождению выхода из него, задача тоже довольно тривиальная (простая) и есть куча примеров решения, самый простой и примитивный это тупой рекурсией с проверкой на идиотские действия (т.е.

всего по чуть-чуть

Сегодня был тяжелый день, как минимум для меня.
RSS-материал