Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2008, 15:13   #21
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию Представление и хранение данных

Тема "представления данных" довольно универсальна в своем использовании. Применить хранение данных строго по определению "один байт - один объект в клетке" - может быть ошибочным, или не дальновидным. Можно применить кодирование двух объектов в один байт, переведя в число, и математическим образом вычислять один и второй объект. Например, у вас 0 - 9 видов почвы, и 1 - 9 типов объектов, в числе от 10 до 99 можно закодировать все комбинации, и затем перевести в символ ASCI. Остается еще резерв кода символа до 100 и после, это переключатель на типы, такие как "зима" и "лето", или для объектов по усмотрению.
Размещать в файле данные через пробел я бы вообще не стал - это не рационально, наглядность вам ни к чему, если есть редактор, который использует файлы, тем более переносить по строчкам. Вместо пробелов может быть еще один байт данных, например, еще одного двойного слоя, или расширения типов объектов и поверхностей до 256 вариантов для каждого соответственно.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 22.10.2008, 15:23   #22
BangBangFM
Заблокирован
 
Регистрация: 12.08.2008
Сообщений: 166
По умолчанию

Если объектов на уровне дофига и не все статичны, иподвергаются определенным законам, к примеру физики, то думаю не помешал бы какой нибудь скрипт типа луа.
BangBangFM вне форума Ответить с цитированием
Старый 22.10.2008, 16:02   #23
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Цитата:
скрипт типа луа.
А вот с этого места можно поподробней, пожалуйста?
Кстати! Кто-то может объяснить - что такое "репутация" под аватарой, кто присваивает ей значение и, самое интересное, как говорят у нас в Одессе -"Шо я с энтого буду иметь ?".
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось DeKot; 22.10.2008 в 16:07.
DeKot вне форума Ответить с цитированием
Старый 22.10.2008, 16:14   #24
BangBangFM
Заблокирован
 
Регистрация: 12.08.2008
Сообщений: 166
По умолчанию

DeKot
Цитата:
что такое "репутация" под аватарой
Скрипт. Больше сказать нечего.
Вот я тебе поднял репу +1 (на весы нажал)
Цитата:
кто присваивает ей значение
Все кроме тебя самого.
Цитата:
Шо я с энтого буду иметь ?
Никогда и ничего.
BangBangFM вне форума Ответить с цитированием
Старый 22.10.2008, 16:20   #25
BangBangFM
Заблокирован
 
Регистрация: 12.08.2008
Сообщений: 166
По умолчанию

На счет луа читай тут, с этого поста.
http://forum.mirgames.ru/index.php?s...ndpost&p=87220

Сам с ним не работал, но принцип жизнедеятельности знаю.
BangBangFM вне форума Ответить с цитированием
Старый 22.10.2008, 16:30   #26
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

OFF: Обсуждать репутацию тут не принято, ...если уважают форумчане, то соответственно и ...

Цитата:
Сообщение от BangBangFM
Если объектов на уровне дофига и не все статичны, и подвергаются определенным законам, к примеру физики...
Это называется делением на слои по типу. Например я применяю многослойность, и на каждом слое можно поставить в клетку дин из 16777216-и видов объекта, включая и статичные и анимированные, ...физическое перемещение в своем слое абсолютно свободное, и не связано с данными карты. Разумеется, паковщик данных должен быть использован - это своего рода интерпритатор, простой пример которого я описал выше.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 22.10.2008, 23:40   #27
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
Радость

Вот, недавно делал редактор, его фишка - стены, ставите просто стену, а они где надо слипаются.
Там 2 вида стен, кирпичные и бетонные.
Но можно подключать и свои структуры, прописав в файле more/more.ini еще 3 строчки:
[имя (что отображаетса)]
[относительная ссылка на мини-рисунок]
[относительная ссылка на рисунок, что будет рисоватся на карте]
Формат файла более чем стандартен:
[x ширина карты(учитывая 0)]
[y высота карты(учитывая 0)]
[сама карта]
в карте чтобы обозначить ячейку искользуется код x+32, то есть 0 это символ пробела, 1 это "!" и тд. Оч удобно т.к. под рукой минимум 128 текстур.
Чтобы узнать какому куску стены какой код - гляньте папку who_is_who(на мамом деле тем картинки от 1 до 33, но мы ведь знаеш что надо отнять 1).
Читаем, берем x:=ord(str)-32 и получаем код. Ну и те же картинки можно в имжлист вкинуть да отображать в игре)))
Все "свои" структуры начинаются с кода 33(+32), то есть с символа А.

ПыСы: Скажу сразу, за баги не отвечаю
Изображения
Тип файла: jpg New.jpg (40.5 Кб, 163 просмотров)
Вложения
Тип файла: rar maker.rar (271.3 Кб, 15 просмотров)
Тип файла: rar Пример карты.rar (614 байт, 14 просмотров)
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг

Последний раз редактировалось Dj_smart; 23.10.2008 в 00:14.
Dj_smart вне форума Ответить с цитированием
Старый 23.10.2008, 22:51   #28
Манжосов Денис :)
Участник клуба
 
Регистрация: 29.01.2008
Сообщений: 1,039
По умолчанию

To Dj_Smart. Неплохой редактор. Как-нибудь объясните мне почему у вас карта весит 500 байт, а моя 8 килобайт? (Предпологаю это метод, связанный с AsignFile и другими похожими). В общем у меня так сказать ступор наступил. Пока что я не хочу переделывать код программы (игры) и поэтому после того, как я уже сделаю игру, перепишу и "движок". Так что без обид. .
В чём заключается мой ступор. В общем не могу сделать проверку на то, что игрок падает, когда по ним нет земли. Пробовал проверять координаты земли и игрока, если земли нет, то падать, пока не зайдёт за черту. В принципе, вы скажите :"Легко!". НО. В своей игре, чтобы двигать игрока в разные стороны, я стираю ВСЁ, и заново по всем координатам всё рисую. И игрока в том числе. Но с падением не могу разобраться.
Кидаю исходник игры с тестовой картой. Помогите, пожалуйста.
P.S. Карта называется GameTest1.txt
Вложения
Тип файла: rar Game.rar (6.5 Кб, 14 просмотров)
Манжосов Денис :) вне форума Ответить с цитированием
Старый 23.10.2008, 23:21   #29
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Цитата:
Сообщение от Манжосов Денис :)
В общем не могу сделать проверку на то, что игрок падает, когда по ним нет земли.
Собсна проблема решается 2-мя путями:
1. Написанием собственного вдижка
например массив, в котором стены - mas
x,y координаты игрока
32 размер клетки
тогда проверяем
Код:
if mas[x div 32,y div 32]=0 then y:=y+1;
он будет падать пока не наткнётся на землю.
2. юзать уже написанные, например DelphiX (многие не согласятся, но это ИМХО хороший движок)
там место имейджев юзай спрайты и если нет столкновений(метод collisium), то опускать спрайт.
подробнее на www.delphiworld.narod.ru
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг

Последний раз редактировалось Beermonza; 24.10.2008 в 15:38.
Dj_smart вне форума Ответить с цитированием
Старый 24.10.2008, 07:03   #30
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от Манжосов Денис :)
Как-нибудь объясните мне почему у вас карта весит 500 байт, а моя 8 килобайт?
Уже говорили про пробелы, переносы строк и оптимальное представление информации.

Например карта 16х28 если использовать три байта на клетку (тип клетки, и координаты по ширине и высоте) займет 16х28х3=1344 байта.
Считывать так: читаем по три байта и помещаем код состояния клетки (первый байт) в соответствующие координаты (второй и третий) в матрице.

Если оптимизировать метод хранения, можно сделать так: один байт в начале - ширина карты, один - высота, и дальше подряд только байты с типом клетки. Считаем: 1 + 1 + (16*28) = 450 байт. При считывании нужно прочитать первые два байта с размерами и дальше последовательно считывая байты переходить каждые 28 байт (ширина) на следующий ряд матрицы.

У тебя же так:
Ground1 (7 байт слово + 2 байта перенос)
50 (2 байта цифры + 2 байта перенос)
25 (2 + 2)
Итого на одну клетку 9 + 4 + 4 = 17 байт, в зависимости от длины слова идентификатора и кол-ва цифр в координатах, плюс минус два байта, будем считать 15.
А если там еще и дерево, еще около 15 байт. Итого примерно 30 байт на клетку. При учете плотности зеленых насаждений 25%, размер такой карты будет (16*28)*0,25*30 + (16*28)*0,75*15 = 8400 байт.

P.S. Можно сохранять файлы как текстовые, только нужно привести байты к типу Char, или непосредственно кодами записывать #0, #1 ... #255. При этом никаких переносов и пробелов, выглядеть такой файл будет примерно так:
alfjkej1owjыд8цущо5аыоsljfeow5ijfls 2dkj... и так далее, но нужно избегать кодов 9,10,13,26 они управляющие.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось Beermonza; 24.10.2008 в 15:39.
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Показать в окне "Мой компьютер" Comer_Jus Общие вопросы Delphi 3 27.09.2008 03:28
Помогите с программой на С++ "текстовый редактор с поддержкой нескольких кодировок" alwa Помощь студентам 1 05.06.2008 19:48
Редактор для "Команч 4" Air Свободное общение 0 31.05.2008 13:54
Добавление компонентов в "мой компьютер" Oleg-vp Общие вопросы Delphi 1 20.11.2007 15:40