|
Результаты поиска
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 23:19 | Сообщение # 3701 | Тема: Мультиплеер 2 игрока, сервер и клиент... |
старожил
Сейчас нет на сайте
| InsDes, по сути она там не нужна. Просто она хранит 1, если подключился второй игрок. Но нигде больше не используется, так что она не нужна.
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 23:16 | Сообщение # 3702 | Тема: Вопрос - Ответ (Game Maker) |
старожил
Сейчас нет на сайте
| jManiar, ничего проблематичного. Один из вариантов: делаешь возможность расставлять предметы в комнате с помощью мышки (instance_create(mouse_x, mouse_y, object)). Далее пробегаешь циклом по всей комнате, записывая координаты объектов и их тип в файл.
Чтобы загрузить карту, пробегаешь циклом по файлу считывая координаты и тип объекта и в соответствии с этим расставляешь объекты в комнате.
Так же, как вариант, можешь посмотреть мой урок по созданию редактора карт. Ссылка на урок в подписи. там карта "рисуется" в текстовом документе. Разные символы отвечают за разные виды объектов. После чего происходит считывания всех символов из файла и в зависимости от символов, которые там написаны, расставляются объекты.
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 23:10 | Сообщение # 3703 | Тема: Мультиплеер 2 игрока, сервер и клиент... |
старожил
Сейчас нет на сайте
| Старайся по возможности единовременно передавать как можно меньше данных, чтобы работало быстрее и не было задержек и тормозов.
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 23:03 | Сообщение # 3704 | Тема: Мультиплеер 2 игрока, сервер и клиент... |
старожил
Сейчас нет на сайте
| Ну да, если тебе нужно передавать это значение, то нужно будет по две переменные создавать. Одна хранит жизни героя, другая хранит принятые жизни второго игрока.
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 22:57 | Сообщение # 3705 | Тема: Мультиплеер 2 игрока, сервер и клиент... |
старожил
Сейчас нет на сайте
| InsDes, точно так же, как и со всем остальным.
mplay_data_write(20,global.health)
health_lient=mplay_data_read(20)
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 22:48 | Сообщение # 3706 | Тема: Мультиплеер 2 игрока, сервер и клиент... |
старожил
Сейчас нет на сайте
| InsDes, смотря что за переменные. Можно так же их записывать и передавать, при необходимости.
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 22:45 | Сообщение # 3707 | Тема: Мультиплеер 2 игрока, сервер и клиент... |
старожил
Сейчас нет на сайте
| InsDes, проще записать угол, как и координаты: mplay_data_write(3,image_angle) И считывать его.
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 22:39 | Сообщение # 3708 | Тема: Мультиплеер 2 игрока, сервер и клиент... |
старожил
Сейчас нет на сайте
| InsDes, да, всё правильно
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 22:29 | Сообщение # 3709 | Тема: Мультиплеер 2 игрока, сервер и клиент... |
старожил
Сейчас нет на сайте
| AGENTX001, очень полезная информация, спасибо. Если уж решил написать что то, то укажи хоть в чем принципиальная разница в освоении, в чем простота?!
InsDes, нет. Write записывает информацию в общий массив. А read считывает информацию из общего массива. Разбери пример, перечитай ещё раз что я написал и поэкспериментируй.
От клиента записал данные, на сервере считал. На сервере записал данные, на клиенте считал.
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 22:18 | Сообщение # 3710 | Тема: Мультиплеер 2 игрока, сервер и клиент... |
старожил
Сейчас нет на сайте
| можно каждый шаг передавать координаты объект от сервера клиенту и наоборот.
Например, у тебя на клиенте есть obj_hero. На сервере есть obj_hero_clirent
Объекту obj_hero задаешь управление и в step пишешь: mplay_data_write(x,0) mplay_data_write(y,1)
А объекту obj_hero_clirent на сервере в step пишешь: x=mplay_data_read(0) y=mplay_data_read(1)
Таким образом при движении объекта obj_hero на стороне клиента, объект obj_hero_clirent будет двигаться точно так же на стороне сервера.
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 22:11 | Сообщение # 3711 | Тема: Мультиплеер 2 игрока, сервер и клиент... |
старожил
Сейчас нет на сайте
| mplay_data - это общий массив, в котором хранятся передаваемые параметры.
mplay_data_write(par,n) - записывает параметр в ячейку n mplay_data_read(n) - считывает параметр из ячейки n
Например у клиента записывается X координата объекта: mplay_data_write(x,0) А на сервере она считывается и присваивается объекту x=mplay_data_read(0)
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 22:01 | Сообщение # 3712 | Тема: Мультиплеер 2 игрока, сервер и клиент... |
старожил
Сейчас нет на сайте
| InsDes, смотря для каких тебе целей, если просто с другом поиграть во что то простенькое, то можно и на стандартных. Если что то серьезное делаешь, то лучше 39dll. Эмулятор должен стоять у обоих. Он создаст между вами псевдо локальную сеть и выдаст IP по которым и надо будет подключаться. Не работать в Интернете может из за разных причин, но связаны они с провайдером. ) Как правило, если провайдер один и тот же, то можно подключиться. Иначе не получается. Во всяком случае у меня было так.
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 21:50 | Сообщение # 3713 | Тема: Мультиплеер 2 игрока, сервер и клиент... |
старожил
Сейчас нет на сайте
| InsDes, ?! Quote (InsDes) у себя на компьютере с двумя открытыми *.exe и с другом...
У себя на компе, при двух открытых exe, не надо вводить IP, или же указывать локальный. Через интернет с другом может не работать на стандартных функциях, потому нужен эмулятор локальной сети.
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 21:37 | Сообщение # 3714 | Тема: Мультиплеер 2 игрока, сервер и клиент... |
старожил
Сейчас нет на сайте
| InsDes, проверил, всё работает. При подключении на одном компе не надо вводить IP. При подключении через Интернет возможны проблемы со стандартными функциями, нужно в таком случае использовать Хамачи - эмулятор локальной сети.
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 21:23 | Сообщение # 3715 | Тема: Пауза |
старожил
Сейчас нет на сайте
| InsDes, от куда ты знаешь?! Например это РПГ, пауза нужна при входе в инвентарь/характеристики героя/на карту мира/в настройки и т.д. везде можно менять параметры. Один только инвентарь может быть 10х10, это уже 100 параметров хранить надо будет. Да и даже если параметров меньше, это не исключает всего остального, о чем я написал. Зачем это нужно, если есть как минимум 2 способа, которые намного проще?!
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 21:13 | Сообщение # 3716 | Тема: Мультиплеер 2 игрока, сервер и клиент... |
старожил
Сейчас нет на сайте
| Вот, посмотри: http://zalil.ru/31787504 Откопал у себя на компе свой примерчик маленький.
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 21:03 | Сообщение # 3717 | Тема: Пауза |
старожил
Сейчас нет на сайте
| InsDes, зачем создавать целых два доп. файла?! к тому же добавлять лишние строки работы с ini, загружать считыванием/записью. Может там под сотню параметров меняется, все записывать в файлик будешь?!
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 17:52 | Сообщение # 3718 | Тема: Пауза |
старожил
Сейчас нет на сайте
| vasyan555, если брать в пример тот же инвентарь, то после того, как ты в инвентаре все манипуляции провел и закрыл его, то игра ЗАГРУЖАЕТСЯ, а вместе с ней и прежнее состояние инвентаря.
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 17:32 | Сообщение # 3719 | Тема: Пауза |
старожил
Сейчас нет на сайте
| instance_deactivate_all(notme)Деактивирует все образцы объекта в комнате. Если notme - истина, то вызываемый образец объекта не деактивируется (обычно это то, что Вам нужно).
instance_deactivate_object(obj) Деактивирует все образцы объекта в комнате заданного объекта obj. Вы можете также использовать все, чтобы указать, что все образцы объекта должны быть деактивированы; или идентификатор образца объекта, чтобы деактивировать индивидуальный образец объекта.
instance_deactivate_region(left,top,width,height,inside,notme) Деактивирует все образцы объекта в указанную область (то есть, если окошки bounding box пролегают частично в области). Если установлена ложь, то образцы объекта находящиеся за пределами области деактивируются. Если notme - истина, то вызываемый образец объекта не деактивируется (обычно это то, что Вам нужно).
instance_activate_all() Активирует все образцы объекта в комнате.
instance_activate_object(obj) Активирует все образцы объекта в комнате заданного объекта obj. Вы можете также использовать все, чтобы указать, что все образцы объекта должны быть активированы; или идентификатор образца объекта, чтобы активировать индивидуальный образец объекта.
instance_activate_region(left,top,width,height,inside) Активирует все образцы объекта в указанной области. Если установлена ложь, то образцы объекта находящиеся за пределами области будут активированы.Добавлено (30.09.2011, 17:32) --------------------------------------------- Например: При нажатии на кнопку: instance_deactivate_all(true) //деактивируем все объекты, кроме текущего instance_create(x,y,obj_inventar) //создаем окно инвентаря
при закрытии инвентаря: with obj_inventar instance_destroy() //удаляем окно инвентаря instance_activate_all() //активируем все объекты
|
|
|
| |
| LunarPixel | Дата: Пятница, 30 Сентября 2011, 17:27 | Сообщение # 3720 | Тема: Пауза |
старожил
Сейчас нет на сайте
| MyACT, хм... насколько я знаю, скорость комнаты нельзя установить в 0. Как ты, интересно, это проверял!?
|
|
|
| |
|