Воскресенье, 11 Апреля 2021, 23:08

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Записи участника » Fire_Phoenix [12]
Результаты поиска
Fire_PhoenixДата: Понедельник, 05 Апреля 2021, 12:41 | Сообщение # 1 | Тема: Ищу движок под MUD на php
был не раз
Сейчас нет на сайте
Цитата
Осталось реализовать регистрацию и переходы по локациям :D ну и заложить фундамент в базе на то, что на локациях могут быть и мобы, и предметы типа выбросить/поднять и соответственно другой игрок позже с этой локации может поднять выброшенный вами предмет. Неоторые локации могут к примеру телепортировать игрока куда либо за определнную плату, или сделать на локации дверь, а ключ положить в квестовую ветку.


Я думаю, с этим тоже не будет проблем :) Это в реализации просто запросы: клиент отправил, сервер проверил, и дал ответ...

Цитата
Через пару дней начинается большой курс по Laravel.


Было бы очень хорошо, если бы Вам дали вначале полностью освоиться в PHP, а потом предлагали изучение Framework-ов, ведь у самого языка большой потенциал, и написать на чистом PHP тоже можно много чего... Да и код получается Ваш, в котором спустя даже несколько лет Вы сможете быстро разобраться, и использовать как основу для других проектов...

Цитата
Как то так, со дня на день начну реализацию, как только продумаю как передвигаться по миру =)


Удачи :) Если будут вопросы, всегда рад помочь...

Добавлено (05 Апреля 2021, 20:13)
---------------------------------------------
Скажите, а как у Вас дела с графикой? Игра, как я понимаю, все же подразумевает ее наличие. Сами будете рисовать?




Сообщение отредактировал Fire_Phoenix - Понедельник, 05 Апреля 2021, 20:13
Fire_PhoenixДата: Понедельник, 05 Апреля 2021, 06:23 | Сообщение # 2 | Тема: Ищу движок под MUD на php
был не раз
Сейчас нет на сайте
JanCarlo, можно узнать, почему не хотите использовать (стандартные) 8 направлений: N, NE, E, SE, S, SW, W, NW?

Я не эксперт в MUD картах, но такое вроде допускается:


Цитата
И представил хранение карты в виде такого массива

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

Цитата
Но потом представил, а что если у нас карта где будет 10к локаций, это при каждом переходе каждого игрок на соседнюю локацию - будет подгружаться этот массив на 10к строк и циклом искать тот ID локации на котором стоит игрок, что бы прочесть в какие стороны он может двигаться и куда эти стороны его приведут - (на какую именно соседнюю локацию переместиться игрок) то это будет дикая нагрузка на сервер скорее всего, скажем 100 игроков одновременно передвигаются и каждый раз целую базу такую считывать...


Это очень интересный подход: с одной стороны просчитывать нагрузку на сервер заранее конечно не плохо, но с другой стороны, Вы сразу планируете сделать 10 к локаций? :D

Обычно, заранее сложно просчитать все нюансы, и возможно, что придется в дальнейшем что-то менять. Рассчитать все сразу с нуля может только тот, кто с такой задачей уже сталкивался :)

Цитата
Разумеется надо что бы после регистрации персонажа по дефолту ставило на какую либо локацию, а после выхода из игры его локация сохранялась и при новом входе персонаж оставался на последнем месте.


Не переживайте, при вдумчивой разработке, все эти вопросы быстро решаются :)

Про установку игрока в нужную клетку и сохранение его позиции после выхода можно не волноваться, а что касается:

Цитата
При этом важно, что бы была исключена возможность отправить поддельный post запрос с отправкой левой локации что бы исключить возможность телепорта игрока в любое место.


Все просто :)
Ваш клиентский интерфейс (впрочем, как и ответы сервера) должен предусматривать передачу только допустимых команд. Например, зачем нужна команда телепорта? Правильно, не за чем... Клиент не имеет права давать такие команды, все что он может, это попросить у сервера возможность, перейти на нужную клетку, а тут уже сервер откроет файл (или БД), проверит, доступна ли эта клетка ему, и если да, даст добро на переход. Применяйте алгоритм: все, что не разрешено - запрещено, и никаких проблем не будет...

Так что, сложностей в реализации практически нет. И да, если Вам кто-то будет писать, мол PHP плохо, возьми Python, или еще что-то, не слушайте, PHP достаточно гибок для новичка. А то я знаю случаи, когда человеку предлагали разные языки программирования, мотивируя разными преимуществами, в итоге, человек потерял интерес к проекту, так как не смог определиться, на каком ЯП писать в итоге лучше... Выбрали PHP - пишите на нем. Будет что-то не получаться, спросите :)

Цитата
Видел отдельный видос такого конструктора


Я пока читал Ваше сообщение, написал небольшой конструктор карт, вот фрагмент карты из него:


Если немного доработать, то можно тоже снимать видео :)




Сообщение отредактировал Fire_Phoenix - Понедельник, 05 Апреля 2021, 06:26
Fire_PhoenixДата: Вторник, 30 Марта 2021, 11:17 | Сообщение # 3 | Тема: Переменная в которой объекты
был не раз
Сейчас нет на сайте
gameshulker, в ЛС написал...

Fire_PhoenixДата: Вторник, 23 Марта 2021, 23:59 | Сообщение # 4 | Тема: Курсор на спрайте
был не раз
Сейчас нет на сайте
gameshulker,
Цитата
я несколько дней был в тупике.

Это достойно уважения! Не важно, какой сложности будет вопрос, главное не сдаваться, и все получится...

Желаю Вам творческих успехов в разработке :)


Fire_PhoenixДата: Вторник, 23 Марта 2021, 05:46 | Сообщение # 5 | Тема: Курсор на спрайте
был не раз
Сейчас нет на сайте
gameshulker, если я правильно понял, то можно попробовать так:

Объявите глобальную переменную drawList:
Код
globalvar drawList;


А затем создайте массив с нужным количеством элементов. Я взял сто, надеюсь хватит :)
Код
drawList = array_create(100, 0);


Далее, объявляем пользовательские функции:

Для проверки, находится ли курсор над отрисованным спрайтом:
Код
#define cursor_in_sprite(sprite)
result = false;

if ("drawn" == array_get(drawList, sprite)[0])
if ((mouse_x >= array_get(drawList, sprite)[1])  &&
    (mouse_y >= array_get(drawList, sprite)[2])  &&
    (mouse_x <= array_get(drawList, sprite)[3])  &&
    (mouse_y <= array_get(drawList, sprite)[4])) {
result = true;
}

return result;


И для отрисовки спрайта с добавлением его в drawList.
Код
#define my_draw_sprite(sprite, subimg, x, y, xscale, yscale, rot, colour, alpha)
array_set(drawList, sprite, ["drawn", x, y, x + sprite_get_width(sprite) * xscale, y + sprite_get_height(sprite) * yscale]);
return draw_sprite_ext(sprite, subimg, x, y, xscale, yscale, rot, colour, alpha);


Соответственно, в Вашем коде draw_sprite_ext заменить на my_draw_sprite.

Ну а проверить можно так:
Код
if cursor_in_sprite(CrGoldIgnot)
draw_text(72, 72, "No, your cursor scares me!");


Важно понимать, что:
Код
drawList = array_create(100, 0);

нужно добавить в функцию отрисовки (draw), чтобы сбросить drawList.

Так же, сейчас функция my_draw_sprite не будет правильно работать, если аргумент для вращения не равен 0, то есть, если спрайт переворачивается этой функцией. Но это можно добавить при желании...




Сообщение отредактировал Fire_Phoenix - Вторник, 23 Марта 2021, 05:53
Fire_PhoenixДата: Воскресенье, 14 Марта 2021, 17:50 | Сообщение # 6 | Тема: Зависает игра во время работы цикла
был не раз
Сейчас нет на сайте
Quad69,
Цитата Quad69 ()
stepRandom = 0; //ВОТ ЭТОТ ЦИКЛ
while (stepRandom<rround and alarm[0] != room_speed*5){
alarm[0]= room_speed*5;
}


В таком случае, получается так:
Пусть условие цикла (stepRandom<rround and alarm[0] != room_speed*5) равно true, тогда запускается таймер alarm0, далее цикл останавливается, и через room_speed*5 происходит срабатывание alarm0, и все? Значит, таймер не будет запущен rround раз, а как я понял код Skyapa, ему вроде нужен такой алгоритм.

Можно ведь просто запустить таймер в startGame(), а в самом таймере его перезапускать, нужное количество раз, добавив alarm[0] = room_speed * 5;

Тогда получаем такой код:
Код
  [StartButton-Left Down]
  function activation() {
   if (rrandom == 1) {
    LeftTop.image_blend = c_blue;
    alarm[1] = room_speed * 3;
    audio_play_sound(_1, 1, false);
   }

   if (rrandom == 2) {
    RightTop.image_blend = c_fuchsia;
    alarm[2] = room_speed * 3;
    audio_play_sound(_2, 1, false);
   }

   if (rrandom == 3) {
    LeftDown.image_blend = c_yellow;
    alarm[3] = room_speed * 3;
    audio_play_sound(_3, 1, false);
   }

   if (rrandom == 4) {
    RightDown.image_blend = c_lime;
    alarm[4] = room_speed * 3;
    audio_play_sound(_4, 1, false);
   }
  }

  function randomInteger() {
   rrandom=irandom_range(1, 4);

   array_push(computerArray, rrandom);
   activation();
  }

  function startGame() {
   rrandom = 0;
   rround = 4;
   stepRandom = 0;
   computerArray = [];
   playerArray = [];
   isAlarm = false;

   LeftTop.image_blend = c_navy;
   RightTop.image_blend = c_purple;
   LeftDown.image_blend = c_olive;
   RightDown.image_blend = c_green;

   alarm[0] = room_speed * 5;
  }

  startGame();

  //////////////////////////////////

  [alarm0]
   stepRandom++;
   randomInteger();
   if (stepRandom < rround) {
    alarm[0] = room_speed * 5;
   }


?




Сообщение отредактировал Fire_Phoenix - Понедельник, 15 Марта 2021, 06:06
Fire_PhoenixДата: Вторник, 09 Марта 2021, 06:32 | Сообщение # 7 | Тема: Opengl, glutGetModifiers не срабатывает на сочетания клавиш
был не раз
Сейчас нет на сайте
cann, в ЛС ответил...

Fire_PhoenixДата: Воскресенье, 07 Марта 2021, 06:23 | Сообщение # 8 | Тема: Opengl, glutGetModifiers не срабатывает на сочетания клавиш
был не раз
Сейчас нет на сайте
cann, а Вы поставьте breakpoint, и посмотрите, придет ли у Вас с одновременным нажатием Ctrl + Alt + d вообще клавиша в обработчик :)

Воспользуйтесь кодом из Вашего первого сообщения, там есть:
Код
procedure key(key: Byte; x,y: Integer); cdecl;
var
   mode: Integer;
begin
     WriteLn('Key = ', key);


Следовательно, если при нажатии Ctrl + Alt + d WriteLn ничего не печатает в консоль, то функция проверки бесполезна...

Sanchez06, там должно быть именно OR, так как мы складываем биты ;)

НО комбинация Ctrl + Alt туда просто не приходит. Почему? Нужно искать в документации... Вот Shift + Alt + клавиша и Ctrl + Shift + клавиша работают.


Fire_PhoenixДата: Пятница, 05 Марта 2021, 23:48 | Сообщение # 9 | Тема: Opengl, glutGetModifiers не срабатывает на сочетания клавиш
был не раз
Сейчас нет на сайте
Sanchez06, текст нужно приводить полностью ;)
Цитата Sanchez06 ()

Код

    int mod = glutGetModifiers();
    if (mod == (GLUT_ACTIVE_CTRL|GLUT_ACTIVE_ALT)) {
      cout << "CTRL+Alt+D press" << endl;
    }



С таким фрагментом кода, будет больше путаницы :D

cann, я Вам в ЛС написал.

Разобрались?




Сообщение отредактировал Fire_Phoenix - Пятница, 05 Марта 2021, 23:48
Fire_PhoenixДата: Пятница, 26 Февраля 2021, 19:31 | Сообщение # 10 | Тема: Sprites
был не раз
Сейчас нет на сайте
MagicHero, спасибо за разъяснения, про это я не знал:
Цитата
В GMS2 можно использовать = вместо == при компелировании GMS поймет что от него хотят


о как, "=" и в условии, и в присваивании использовать можно? До чего техника дошла... :)

Тогда давайте разбираться...

Как я понял, image_index это не целочисленная переменная, то в условиях, равенство ("==") лучше не использовать (исходя из логики сравнения вещественных чисел).

Предлагаю такой код:
Код
globalvar epsilon, frames, frame_step;

epsilon = math_get_epsilon();

var frames_count = 12;
frames = sprite_add(<fname>, frames_count, 0, 0, 0, 0);
sprite_index = frames;

frame_step = 1 / 30;
image_speed = frame_step;

#define step
if ((image_index > image_number - frame_step - epsilon) && (image_speed == frame_step)) {
image_speed = -frame_step;
} else if ((image_index < frame_step - epsilon) && (image_speed == -frame_step)) {
image_speed = frame_step;
}

#define draw
draw_sprite(frames, image_index, 8, 8);


Этот код проверен, и работает.

Для проверки я использовал эту картинку:



Нужно ее указать как fname в sprite_add.

И да, неплохо бы сделать отладку с меньшим FPS, чтобы проверить правильность условий.

Вторую часть условия:
Цитата
(image_speed == ±frame_step)


можно опустить, но тогда, по идее первый и последний кадр анимации будут показываться на frame_step меньше по времени.


Fire_PhoenixДата: Четверг, 25 Февраля 2021, 21:55 | Сообщение # 11 | Тема: Sprites
был не раз
Сейчас нет на сайте
JesusOnExtasy88, я конечно не эксперт в GML, но разве нет ошибки в условии Вашего кода:

Цитата
if(image_index=image_number-1 && image_speed = 1){
image_speed = -1;
}else if(image_index=0 && image_speed = -1){
image_speed = 1;
}

?

В ЯП обычно операторы присваивания и сравнения не могут быть идентичны - это вызывает путаницу, так например, если:
Цитата
image_speed = 1;


означает присваивание image_speed единицы, то в условии сравнения:
Цитата
if (image_speed == 1)

означает, если image_speed равно единице, то ...

P. S. Хотя, скорее всего, Вы про разницу "=" и "==" знаете, и это просто опечатка...

P. P. S. В условии "=" использовать конечно можно, при условии (тавтология, извините :) ), что Вам нужно присвоить значение, а не сравнить, тоже касается "++" и "--" в условиях (хотя такое уже встречается чаще, и может быть полезно)...


Fire_PhoenixДата: Среда, 09 Декабря 2020, 01:48 | Сообщение # 12 | Тема: как создать многоуровневый опрос
был не раз
Сейчас нет на сайте
Цитата fess1997 ()
Здесь же можно создать опрос только с одним вопросом.


Да, но можно поступить иначе: найти онлайн-сервис, типа Google Формы, или схожий, создать опрос там, далее, создать тему на форуме и дать ссылку на тест.

Опять же, есть некоторые НО:

  • Сервис не должен требовать регистрацию при прохождении теста - иначе будет мало желающих его пройти ;)
  • Сайт должен быть проверенным...


Я, к сожалению, не могу сказать, какой сервис Вам лучше выбрать. Через поиск нашел ещё:
survio[точка]com
simpoll[точка]ru
onlinetestpad[точка]com/ru

Прямые ссылки не даю, так как думаю, что Вы сами сможете понять, как их восстановить :)

И да, была ещё идея про Тесты

Да только, как я понимаю, создавать их может только Администрация, и я не знаю, сохраняется ли информация, о результатах пользователя (скорее всего нет), доступная для просмотра создателю.


Форум игроделов » Записи участника » Fire_Phoenix [12]
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2021 Рейтинг