Вопросы от Bercut (8) - Проблема - решение. GML и прочее. - Разработка игр на Game Maker (Simple Mode) - Форум Game Maker. Разработка игр.
Здравствуй Гость | Перейти на сайт

Главная | Форум | Регистрация | Войти
gmaker.net ;) [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 8 из 11«1267891011»
Форум Game Maker. Разработка игр. » Разработка игр на Game Maker (Simple Mode) » Проблема - решение. GML и прочее. » Вопросы от Bercut (все адекватно...)
Вопросы от Bercut
Bercut Дата: Понедельник, 22.02.2010, 00:14 | Сообщение # 141
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
А куда пропала статья DreamRunner'a про сетки?

столько обыскал, не нашёл...



Fast, like fire!

Сообщение отредактировал Bercut - Понедельник, 22.02.2010, 00:14
 
DreamRunner Дата: Понедельник, 22.02.2010, 17:22 | Сообщение # 142
Админ
Группа: Админы
Сообщений: 1382
Статус: Offline
 
Bercut Дата: Понедельник, 01.03.2010, 21:51 | Сообщение # 143
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
Quote (DreamRunner)
http://forum.gmaker.su/forum/15-322-1 это?

Нет, не она, затерялась видать. =-(

Добавлено (01.03.2010, 20:28)
---------------------------------------------
Как сделать двумерный массив (например сетку), огромным размером и чтобы память сильно не хапала,
например 5000 на 5000(или ещё больше)?
Длл написать на асме? =-)
Создаю такую сетку на гамаке, хапает оперативки львиную долю, а мне там только хратить буленовский тип (0,1).
И есть ли альтернатива draw_getpixel(х, у); ?

Добавлено (01.03.2010, 21:51)
---------------------------------------------
Короче идея такая, у меня есть чёрно-белая картинка (да, всего два цвета), размер большой(разрешение), весит немного, максимум 20 кб, так вот, надо представить её в виде двухмерного массива, где белый цвет- нули, а чёрный- единицы.



Fast, like fire!

Сообщение отредактировал Bercut - Понедельник, 01.03.2010, 21:28
 
Ang3L Дата: Понедельник, 01.03.2010, 23:17 | Сообщение # 144
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
Bercut, и в чём проблема? biggrin

Загружаешь картинку и циклом

Code
draw_getpixel(x,y) Returns the color of the pixel corresponding to position (x,y) in the room. This is not very fast, so use with care.

или
Code
surface_getpixel(id,x,y) Returns the color of the pixel corresponding to position (x,y) in the surface. This is not very fast, so use with care.

если пиксель == c_black, то 0, а если == c_white, то 1.

Либо делаешь свой загрузчик картинки и запихиваешь сразу в массив, обходя *_getpixel. Хотя я не думаю что будет намного быстрее.



Blogpost
 
SRes Дата: Понедельник, 01.03.2010, 23:24 | Сообщение # 145
Каждый 5й пост мой
Группа: Страж
Сообщений: 2512
Статус: Offline
Quote
Хотя я не думаю что будет намного быстрее.

Капитан Очевидность хочет подчеркнуть, что хоть ГМ и тормознутый, но читать файл явно быстрее, чем юзать getpixel.
А если использовать для этих целей 39dll... PROFIT !


Velociped Inc.
 
Ang3L Дата: Понедельник, 01.03.2010, 23:28 | Сообщение # 146
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
Quote (SRes)
но читать файл явно быстрее, чем юзать getpixel.

Хотя должно быть медленнее, потому как доступ к винчестеру медленнее чем к оперативной/видео памяти... Не проверял, не знаю.

Quote (SRes)
А если использовать для этих целей 39dll... PROFIT !

А что там есть интересного?


Blogpost
 
SRes Дата: Понедельник, 01.03.2010, 23:29 | Сообщение # 147
Каждый 5й пост мой
Группа: Страж
Сообщений: 2512
Статус: Offline
Quote
Хотя должно быть медленнее, потому как доступ к винчестеру медленнее чем к оперативной/видео памяти... Не проверял, не знаю.

Хм, ты прав, но было-бы интереснее увидеть реальные цифры.
Quote
А что там есть интересного?

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


Velociped Inc.
 
Bercut Дата: Понедельник, 01.03.2010, 23:34 | Сообщение # 148
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
Создание массива (сетки) из картинки я ждал 3 минуты. =-(

Quote
Либо делаешь свой загрузчик картинки и запихиваешь сразу в массив

На чём, хотя ладно, погуглю, как там можно на си напримере сделать.

Quote
А если использовать для этих целей 39dll... PROFIT !

Там есть интересные функции?


Fast, like fire!

Сообщение отредактировал Bercut - Понедельник, 01.03.2010, 23:37
 
SRes Дата: Понедельник, 01.03.2010, 23:35 | Сообщение # 149
Каждый 5й пост мой
Группа: Страж
Сообщений: 2512
Статус: Offline
Научитесь уже правильно цитировать (без указания источника, если лень, как мне wink ).
Quote
Там есть интересные функции?

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


Velociped Inc.
 
Ang3L Дата: Понедельник, 01.03.2010, 23:37 | Сообщение # 150
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
Quote (SRes)
Хм, ты прав, но было-бы интереснее увидеть реальные цифры.

Точно. Bercut, тебе ответственное задание! Узнать какой из вариантов быстрее и нам выложить результаты. Заодно и задачу свою решишь... happy

Quote (SRes)
39длл умеет работать с файлами

Да? Интересненько, интересненько...

Quote (SRes)
(можно даже указывать размер сколько байт считывать, не то что в стандартных недофункциях)

Нет типов - нет таких функций.


Blogpost
 
Bercut Дата: Понедельник, 01.03.2010, 23:37 | Сообщение # 151
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
А есть муналы, муналы?


Fast, like fire!
 
Ang3L Дата: Понедельник, 01.03.2010, 23:39 | Сообщение # 152
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
Bercut, а почему из картинки?


Blogpost
 
SRes Дата: Понедельник, 01.03.2010, 23:41 | Сообщение # 153
Каждый 5й пост мой
Группа: Страж
Сообщений: 2512
Статус: Offline
Bercut, Есть википедия, википедия.


Velociped Inc.
 
Bercut Дата: Вторник, 02.03.2010, 00:06 | Сообщение # 154
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
Quote (Ang3L)
Bercut, а почему из картинки?

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

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

То есть как и обычно, мы разбиваем карту на клетки, например 32 на 32, в определённых клетках есть тайлы, которые имею 2-4 координаты для столкновений, то есть получается некая прямая по х и у, для которой по всяким расстояниям находят координату игрока на поверхности, я такое видел у Дрима, но у него частный случай: для уклона и для спуска, там он заранее знает как должен зависить игрек от икс.
Чтобы было немного понятнее, вот:

Придётся делать инструмент, которым можно будет такой контур рисовать.
Добавлено (02.03.2010, 00:05)
---------------------------------------------
Quote (SRes)
Bercut, Есть википедия, википедия.

Так точно, командир!
Благодарю!

Добавлено (02.03.2010, 00:06)
---------------------------------------------

Quote (SRes)
Научитесь уже правильно цитировать (без указания источника, если лень, как мне ).

Я почему так ненормально? redface
Прикрепления: 7610340.png(5Kb) · 7888703.png(14Kb) · 1874425.png(4Kb)


Fast, like fire!

Сообщение отредактировал Bercut - Вторник, 02.03.2010, 00:17
 
Ang3L Дата: Вторник, 02.03.2010, 02:33 | Сообщение # 155
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
Игры имеют 2 независимы части: внутреннюю и внешнюю. Именно об этом я долго и нудно писал здесь. И всё безуспешно. Я даже не знаю с какой стороны взяться за эту тему чтобы было понятно. Потому как это очень важная тема.

Ты пытался совместить внешнюю и внутреннюю, а точнее перекинуть внешнее на внутреннее (что делают 99.99% новичков, включая и меня). И потерпел поражение, т.к. программа была не эффективной, хотя и привлекательной. Затем ты перешёл на другую схему, сделал их независимыми. Как в принципе делают люди уже лет 30.

Т.е. передвижения обрабатывать по другой схеме, упрощённой, а на это накладывать изображение. Коллизия происходит более быстро, но картина зрелищности не теряет, т.к. пользователь не видит внутренние механизмы. Так делают все. Обработка столкновений происходит простыми фигурами (линиями, многоугольниками и т.д.). Да, определять придётся и изображение (грубо говоря, тайлы), и коллизию вручную. Но зато это будет быстро в процессе выполнения. Хочешь автоматически? Нужно будет подождать n минут. Не хочешь ждать? Не надо никаких инструментов, сделай заготовки. Не нравится блоки с уклоном в 45*? Сделай 30, 15. Можешь сделать круглые, полукруглые. Да, с блоками произвольного типа будут проблемы, но вот вопрос: а нужны ли они? Зачем тебе блоки с уклоном 1* или там 30.25? Слишком квадратично, не гладкая поверхность, не изящно? Так нарисуй сверху красивых, полупрозрачных тайлов (травки там, ещё чего), так чтобы не было заметно этого кубизма (или прямологизма? happy ). Я уверен если ты нарисуешь поверх красивую, изогнутую травку, 99% и не заметят что персонаж идёт не по гладкой поверхности с учётом каждого пикселя, а по прямому уклону в 15*.

Обмани зрение, будь фокусником в мире игр!

P.S.: Заметь, ты когда поверхность порезал на квадраты сразу выявились кандидаты на тайлы. Многие повторяются. А твои там +/- пару пикселей никто не заметит, игроки не будут мерить их линейками.
P.P.S.: Попробуй поиграй в другие платформеры и приглядись как там это происходит (завуалирование прямоугольных блоков).



Blogpost
 
Bercut Дата: Вторник, 02.03.2010, 03:18 | Сообщение # 156
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
Спасибо, что меня понял.
Обязательно почитаю твою статью, я раньше читал, но был глупым. =-)
Каприз немой, так что постараюсь наших дизов переубедить.
На счёт обмана зрения, так и хочу сделать.
Извини, что такой неразвёрнутый ответ, но главное ты меня понял.
Вот то, что сегодня задумал, но оказывается я ясно выражался, но всё же:
Link 30kb


Fast, like fire!

Сообщение отредактировал Bercut - Вторник, 02.03.2010, 03:22
 
DreamRunner Дата: Вторник, 02.03.2010, 08:30 | Сообщение # 157
Админ
Группа: Админы
Сообщений: 1382
Статус: Offline
И подумайте заодно как такую неровную землю заполнять тайлами. Шлёпать под разным углом короткие поверхности - не красиво. Так что лучше через тайлы. А в тайлах можно сделать несколько кривых и из них составлять уровень. Будет гораздо лучше.
 
Ang3L Дата: Вторник, 02.03.2010, 12:51 | Сообщение # 158
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
Quote (Bercut)
Каприз немой, так что постараюсь наших дизов переубедить.

Поэтому, либо они должны разбираться в среде разработки (т.е. GM), либо слушать тебя что делать можно, а что нет.

Quote (Bercut)
Вот то, что сегодня задумал

Ну вот. А поверх наворачиваешь красивые тайлы и будет вам счастье и профит! biggrin

P.S.: Для реализаций изначальной версий можешь использовать кривые Безье. Рисуется рисунок, на него вручную накладываются сшитые кривые, а затем находится координата Y персонажа от его X по кривой. В этом случае, действительно получится сделать так как ты хочешь.



Blogpost
 
Bercut Дата: Вторник, 02.03.2010, 22:52 | Сообщение # 159
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
Quote (DreamRunner)
И подумайте заодно как такую неровную землю заполнять тайлами.

Это уже придумал, каждый тип кривой имеет свой id и собственно спрайт.
Quote (DreamRunner)
Шлёпать под разным углом короткие поверхности - не красиво.

Да, это увы так...
Quote (DreamRunner)
Так что лучше через тайлы. А в тайлах можно сделать несколько кривых и из них составлять уровень. Будет гораздо лучше.

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

Quote (Ang3L)
Поэтому, либо они должны разбираться в среде разработки (т.е. GM), либо слушать тебя что делать можно, а что нет.

Переубедю, обязательно, то есть по части разработки. =-)

Quote (Ang3L)
Ну вот. А поверх наворачиваешь красивые тайлы и будет вам счастье и профит!

Вчера сразу после того как выклал, попробывал, но получилось коряво, потому что спрайты из разных мест резал =-)
Quote (Ang3L)
Для реализаций изначальной версий можешь использовать кривые Безье. Рисуется рисунок, на него вручную накладываются сшитые кривые, а затем находится координата Y персонажа от его X по кривой. В этом случае, действительно получится сделать так как ты хочешь.

Я поняв, поняв happy
Значит надо почитать это, чтобы составлять уравнения для таких кривых, но сколько будет возможных вариаций, ай...


Fast, like fire!

Сообщение отредактировал Bercut - Вторник, 02.03.2010, 22:53
 
Ang3L Дата: Вторник, 02.03.2010, 23:40 | Сообщение # 160
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
Quote (Bercut)
но сколько будет возможных вариаций, ай...

Ты хотел технологию - получай! cool Тебе же нужны были вариации? Там всего 2 уравнения, для кривой 3 и 4 порядка, остальные можно "сшить" из этих 2. Да даже с кривой 3 порядка можно сделать любую кривую. Это как с треугольником в 3д, можно сделать любую поверхность.

Quote (Bercut)
Значит надо почитать это

Желательно, но не обязательно. Тут уже были кривые Безье и даж не раз. Если не найдёшь, я выложу (если я найду... happy ).


Blogpost
 
Форум Game Maker. Разработка игр. » Разработка игр на Game Maker (Simple Mode) » Проблема - решение. GML и прочее. » Вопросы от Bercut (все адекватно...)
Страница 8 из 11«1267891011»
Поиск:



Сообщество Gmaker.SU 2005-2012
Используются технологии uCoz
Простой вход