Плохо! Плохо!:  0
Показано с 1 по 8 из 8

Тема: Можно ли сделать игру на двух игроков? (hotseat)

  1. #1
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    129
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию Можно ли сделать игру на двух игроков? (hotseat)

    Изучение мейкера идет отлично. Благодаря обитателям форума я научился многим вещам. Спасибо. ^^
    Например, больше не проблема, - настройка управления как с клавиатуры, так с геймпада.
    Возможность настраивать любое управление было для меня приоритетом, я долго искал ответ и в итоге
    нашел.

    Теперь захотелось попробовать кое-что интересное, - реализовать возможность управления двумя игроками на
    одном экране. Это у меня удачно получилось, но проблема вот в чем:
    - Второй игрок является событием и не может взаимодействовать с объектами так же, как и первый игрок.
    - Камера двигается только за первым игроком.

    Уверен, первую проблему как-то можно решить. А вот с камерой не знаю, тут даже не ясно что в итоге нужно получить.
    Наверное что-то такое, что не давало бы второму игроку выйти за пределы камеры?
    (Это перестает быть проблемой, если карты в игре ограничиваются размером экрана)

    Наибольшая беда в том, что второй игрок не может взаимодействовать с другими объектами при нажатии кнопки,
    так как сам является объектом. В то же время, первый игрок, естественно может.
    Это может быть не проблемой, если механика игры подразумевает то, что большинство проблем будет решать первый игрок,
    однако, хотелось бы поставить двух игроков в равные условия.
    Чтобы и второй игрок мог разговаривать с npc и находить предметы. (Благо, отдельный инвентарь я научился делать благодаря плагину)

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

  2. #2
    Маститый Аватар для Yuryol
    Информация о пользователе
    Регистрация
    06.03.2014
    Адрес
    Красноярск
    Сообщений
    1,261
    Записей в дневнике
    33
    Репутация: 55 Добавить или отнять репутацию

    По умолчанию

    На светлой есть моя демка "для живых", там есть подобие двух игроков. Взаимодействие тупо через координаты. Это было давно,сейчас же я написал плагин для этого, но пока в черновом варианте,когда доделаю хз,времени нет

    Про камеру - вроде у гальва есть плагин на переключение камеры к определённому событию. Можно использовать его.

  3. #3
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    129
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Yuryol Посмотреть сообщение
    На светлой есть моя демка "для живых", там есть подобие двух игроков. Взаимодействие тупо через координаты.
    Да, играл в нее. Поэтому и уверен в том, что как-то можно сделать взаимодействие второго игрока с событиями. Увы, так и не понял, как это в вашей игре реализовано.

  4. #4
    Пользователь Аватар для Mur
    Информация о пользователе
    Регистрация
    01.11.2015
    Адрес
    Giran Town
    Сообщений
    78
    Записей в дневнике
    10
    Репутация: 9 Добавить или отнять репутацию

    По умолчанию

    Нууу,… например такое :3



    Темка на светлой.

  5. #5
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    129
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Mur Посмотреть сообщение
    Нууу,… например такое :3
    Нет, это точно не то. Нужно чтобы два игрока на одном экране, и чтобы второй игрок как событие, не мог выйти за камеру первого игрока. Или чтобы камера двигалась за двумя игроками. Мне нужно чтобы два игрока находились на одном экране, а не на раздельном.
    Но тут проблема камеры второстепенная, в первую очередь мне нужно узнать, как сделать так чтобы два игрока были в равных условиях и могли одинаково взаимодействовать с объектами на карте.

  6. #6
    Маститый Аватар для Yuryol
    Информация о пользователе
    Регистрация
    06.03.2014
    Адрес
    Красноярск
    Сообщений
    1,261
    Записей в дневнике
    33
    Репутация: 55 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Axel_Key Посмотреть сообщение
    Нет, это точно не то. Нужно чтобы два игрока на одном экране, и чтобы второй игрок как событие, не мог выйти за камеру первого игрока. Или чтобы камера двигалась за двумя игроками. Мне нужно чтобы два игрока находились на одном экране, а не на раздельном.
    Но тут проблема камеры второстепенная, в первую очередь мне нужно узнать, как сделать так чтобы два игрока были в равных условиях и могли одинаково взаимодействовать с объектами на карте.
    Вот нашел на компе тот плагин, он еще недоделанный, непротестенный, некрасивый, даже описания нет. Может кто-нибудь позже допишет или я сам допишу, а пока чисто можешь попробовать и внести предложения/пожелания

    Установка:
    - называем файл "Yuryol_Two_Player.js"
    - указываем в настройках ИД события, которое становится вторым игроком (в демке события с ИД равный "1")
    - указываем кнопку, которое будем аналогично "энтеру" для второго игрока (в демке кнопка 'f')

    Возможности:
    - события с приоритетом "под персонажем" и триггером "кнопка действия" можно запустить нажав "f", если второй игрок стоит на них.
    - события с приоритетом "на одном уровне" и триггером "кнопка действия" можно запустить нажав "f", если второй игрок стоит рядом с ними и повернут в одну сторону.
    - в демке есть передвижение второго события с помощью кнопок WASD. Сделано чисто для теста, подробности ниже

    Недостатки:
    - пока нет действия с триггером "от касания" или "столкновения с героем"
    - не тестил почти

    Следующие строчки в плагине в демке сделаны чисто для теста, их лучше удалить. Вставил для передвижения второго персонажа с помощью WASD для наглядности теста.
    Код:
    if (Input.isTriggered('s')) {
    		 $gameMap.event(idTwoPlayer).moveStraight(2);;
    	 }
    	if (Input.isTriggered('a')) {
    		 $gameMap.event(idTwoPlayer).moveStraight(4);;
    	 }
    	if (Input.isTriggered('d')) {
    		 $gameMap.event(idTwoPlayer).moveStraight(6);;
    	 }
    	if (Input.isTriggered('w')) {
    		 $gameMap.event(idTwoPlayer).moveStraight(8);;
    	 }
    Спойлер сам плагин:

    Код:
    //=============================================================================
    // Yuryol_Two_Player.js
    //=============================================================================
    /*:
    
     * @plugindesc Прыжок героя/события на карте
     * @author Yuryol
      
     
     * @param input
     * @desc Кнопка прыжка героя
     * @default f
     
     * @param idTwoPlayer
     * @desc Кнопка прыжка героя
     * @default 1
     
     @help
     *   Yuryol_Two_Player (Прыжок героя/события на карте)
     * ----------------------------------------------------------------------------
     * Плагин позволяет совершать прыжки по карте как героем, так и событием, 
     
     * ----------------------------------------------------------------------------
     * Спасибо ДК и Айрину
     * ----------------------------------------------------------------------------
     * 
      
    */
    (function() {
    var parameters = PluginManager.parameters('Yuryol_Two_Player');
    var input = parameters['input'];
    var idTwoPlayer = parameters['idTwoPlayer'];
    
    var Yuryol_Two_Player = Scene_Map.prototype.update;
    Scene_Map.prototype.update = function() {
    	Yuryol_Two_Player.call(this);
      this.Yuryol_Two_Player_input();
    };
    
    Scene_Map.prototype.Yuryol_Two_Player_input = function() {
    	
    	if (Input.isTriggered(input)) {
    		 $gameMap.triggerEnter();
    	 }
    	
    };
    	
    	
    Game_Map.prototype.triggerEnter = function() {
      var x = $gameMap.event(idTwoPlayer).x;
    	var y = $gameMap.event(idTwoPlayer).y;
      var eventTwoPlayer = this.event(idTwoPlayer);	
    	
    	this.startEvent(x,y,0);
    		
    	if(this.startEvent(x,y)!=true) {
    		switch(eventTwoPlayer.direction()) { 
    			case 2:
    				this.startEvent(x,y+1,1);
    				break;
    			case 4:
    				this.startEvent(x-1,y,1);
    				break;
    			case 6:
    				this.startEvent(x+1,y,1);
    				break;
    			case 8:
    				this.startEvent(x,y-1,1);
    				break;
    		}
    	}
    }
    
    Game_Map.prototype.startEvent = function(x, y, priorityType) {
    	var eventsXY = $gameMap.eventsXy(x, y);
    	var eventsID = [];
    	for (var j = 0; j < eventsXY.length; j++) {		
    		eventsID = eventsXY[j]._eventId;
    		if (eventsID != idTwoPlayer && this.event(eventsID)!=undefined) {
    			if (this.event(eventsID)._priorityType==priorityType) {
    				if (this.event(eventsID)._trigger==0){
    					this.event(eventsID)._starting = true;
    					return true;
    				}
    			}
    		} 
    	}
    }
         
    Input.keyMapper = {
    	8: 'backspace',	// backspace
    	9: 'tab',		// tab
    	13: 'ok',		// enter
    	16: 'shift',	// shift
    	17: 'control',	// control
    	18: 'alt',  	// alt
    	19: 'pause',	// pause
    	20: 'capslock',	// capslock
    	27: 'escape',   // escape
    	32: 'space',	// space
    	33: 'pageup',   // pageup
    	34: 'pagedown', // pagedown
    	35: 'end',		// end
    	36: 'home',		// home
    	37: 'left',       // left arrow
    	38: 'up',       // up arrow
    	39: 'right',    // right arrow
    	40: 'down',     // down arrow
    	44: 'printscreen',	// printscreen
    	45: 'insert',   // insert
    	46: 'delete',	// delete
    	48: '0',		// 0
    	49: '1',		// 1
    	50: '2',		// 2
    	51: '3',		// 3
    	52: '4',		// 4
    	53: '5',		// 5
    	54: '6',		// 6
    	55: '7',		// 7
    	56: '8',		// 8
    	57: '9',		// 9
    	65: 'a',		// A ф
    	66: 'b',		// B и
    	67: 'c',		// C с
    	68: 'd',		// D в
    	69: 'e',		// E у
    	70: 'f',		// F а
    	71: 'g',		// G п
    	72: 'h',		// H р
    	73: 'i',		// I ш
    	74: 'j',		// J о
    	75: 'k',		// K л
    	76: 'l',		// L д
    	77: 'm',		// M ь
    	78: 'n',		// N т
    	79: 'o',		// O щ
    	80: 'p',		// P з
    	81: 'q',		// Q й
    	82: 'r',		// R к
    	83: 's',		// S ы
    	84: 't',		// T е
    	85: 'u',		// U г
    	86: 'v',		// V м
    	87: 'w',		// W ц
    	88: 'x',		// X ч
    	89: 'y',		// Y н
    	90: 'z',		// Z я
    	96: 'escape',   // numpad 0
    	97: 'numpad1',	// numpad 1
    	98: 'down',     // numpad 2
    	99: 'numpad3',	// numpad 3
    	100: 'left',    // numpad 4
    	101: 'numpad5',	// numpad 5
    	102: 'right',   // numpad 6
    	103: 'numpad7',	// numpad 7
    	104: 'up',      // numpad 8
    	105: 'numpad9', // numpad 9
    	106: '*',		// *
    	107: '+',		// +
    	109: '-',		// -
    	110: '.',		// .
    	111: '/',		// /
    	112: 'f1',		// F1
    	113: 'f2',		// F2
    	114: 'f3',		// F3
    	115: 'f4',		// F4
    	116: 'f5',		// F5
    	117: 'f6',		// F6
    	118: 'f7',		// F7
    	119: 'f8',		// F8
    	120: 'debug',   // F9
    	121: 'f10',		// F10
    	122: 'f11',		// F11
    	123: 'f12',		// F12
    	144: 'numlock',	// numlock
    	145: 'scrolllock',	// scrolllock
    	186: ';',		// :;ж
    	187: '=',		// +=
    	188: '<',		// <,Б
    	189: '-',		// -_
    	190: '>',		// >.Ю
    	191: '?',		// /?,/.
    	192: '`',		// ~`ё
    	219: '[',		// {[х
    	220: '|',		// |
    	221: ']',		// }]ъ
    	222: '"'		// "'э
        
    };
    
    })()


    Демка
    https://yadi.sk/d/0MPWD8Cz3SQZB6

  7. #7
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    129
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию

    Спасибо. Я вижу, там уже есть keymapper.. Твой плагин не будет конфликтовать с Full imput DK plugin?
    Просто очень похожий маппер управления есть в их плагине.

  8. #8
    Маститый Аватар для Yuryol
    Информация о пользователе
    Регистрация
    06.03.2014
    Адрес
    Красноярск
    Сообщений
    1,261
    Записей в дневнике
    33
    Репутация: 55 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Axel_Key Посмотреть сообщение
    Спасибо. Я вижу, там уже есть keymapper.. Твой плагин не будет конфликтовать с Full imput DK plugin?
    Просто очень похожий маппер управления есть в их плагине.
    Хз, если будет то удали кеймапер у меня и поставь вместо 'd' клавишу как она названа в кеймапере дк. Сейчас на работе,точно не могу сказать

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •