Вопросы новичка

Страница 6 из 8 Предыдущий  1, 2, 3, 4, 5, 6, 7, 8  Следующий

Перейти вниз

Re: Вопросы новичка

Сообщение автор Pyro338 в Сб Янв 06, 2018 10:09 pm

прости нас холопов! не усмотрели.

на самом деле я очень редко им пользуюсь. мне проще где нужно console.log вывести
avatar
Pyro338
Админ

Сообщения : 584
Дата регистрации : 2017-12-25
Возраст : 32
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор raingo в Сб Янв 06, 2018 10:15 pm

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

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

Поэтому когда чего-то не знаешь, не должно быть зазорно спросить. Даже гуру кодинга задают вопросы. Ну и типа требовать от кого-то, чтобы он знал все на свете - это наивность чтоле.

Ну а если узнал что-то классное, то круто поделиться этим с товарищими.

P.S. Ладно, я понимаю, почему ты удивляешься. Кодинг клевая штука, если быть открытым, то удивляться всегда будет чему.

raingo
Отдел прокрастинации

Сообщения : 727
Дата регистрации : 2017-12-25

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Dessan в Сб Янв 06, 2018 10:17 pm

Pyro338 пишет:прости нас холопов! не усмотрели.


Ат юморист)

Я просто удивляюсь как вам не лень было объяснять это все когда есть такой тул. Спасибо Cool

Dessan
Юный падаван

Сообщения : 399
Дата регистрации : 2017-12-25

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Dessan в Сб Янв 06, 2018 11:28 pm

Pyro338 пишет:
потом в функции update игрока

Код:
if(this.keyboarder.isDown(this.keyboarder.KEYS.LEFT)){
      if(this.position.x > 0){
        this.position.x -= 2;
      }
    }
    if(this.keyboarder.isDown(this.keyboarder.KEYS.RIGHT)){
      if(this.position.x < this.gameSize.x-this.size.width){
        this.position.x += 2;
      }
    }

Посмотри мой код с отрисовкой 1 квадрата и движением вправо:
Код:
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');

var dx ;
var dy ;

var drawRect = function  (x,y){
context.fillStyle = 'black'; //цвет для рисования
context.clearRect(0,0,800,450);//очистка экрана
context.fillRect(x,y,30,30); // рисование квадрата
    
        dx = x;
 dy = y;

}

document.onkeydown = function (event) {
       if (event.key == 'ArrowRight'){
     var x = dx;
             var y = dy;
             gameLoopRight(x,y);
 dx++;
 
 }
 }


function drawGrid(){
  for (var i = 0; i < 1; i++) {
     var x = Math.floor((Math.random() * ((canvas.width-50) - 0 + 1)) + 0);
     var y = Math.floor((Math.random() * ((canvas.height-50) - 0 + 1)) + 0);
 
  drawRect(x,y);
  
  }
}

var gameLoopRight = function(x,y){
 drawRect(x,y);

 if (x>=700){
 // условие
 }
};
drawGrid();

в HTML только
Код:
 <canvas id="canvas" width="800" height="450"  style="border: 1px solid red;"></canvas>

Dessan
Юный падаван

Сообщения : 399
Дата регистрации : 2017-12-25

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор raingo в Сб Янв 06, 2018 11:59 pm

Чет у меня настроение странное. Меланхолия типа. Хз.

Все мы сдохнем.

raingo
Отдел прокрастинации

Сообщения : 727
Дата регистрации : 2017-12-25

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Dessan в Вс Янв 07, 2018 1:03 am

конечно все мы сдохнем, поэтому не теряй время, садись и работай над своими проектами уже сейчас

Dessan
Юный падаван

Сообщения : 399
Дата регистрации : 2017-12-25

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Dessan в Вс Янв 07, 2018 3:39 am

raingo пишет:

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

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

Dessan
Юный падаван

Сообщения : 399
Дата регистрации : 2017-12-25

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор raingo в Вс Янв 07, 2018 10:03 am

да харош мне разводить писанину. делом пора заняться. Все проекты простаивают

raingo
Отдел прокрастинации

Сообщения : 727
Дата регистрации : 2017-12-25

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Pyro338 в Вс Янв 07, 2018 10:10 am

Посмотри мой код с отрисовкой 1 квадрата и движением вправо:

посмотрел.

Код:
game.js:2 Uncaught TypeError: Cannot read property 'getContext' of null
    at game.js:2
(anonymous) @ game.js:2
avatar
Pyro338
Админ

Сообщения : 584
Дата регистрации : 2017-12-25
Возраст : 32
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Pyro338 в Вс Янв 07, 2018 10:20 am

во первых надо обернуть твой скрипт в document ready, потому что ДОМ не успевает прогрузиться и из за этого переменная canvas получается null

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

Код:
$( document ).ready(function(){
  var canvas = document.getElementById('canvas');
  var context = canvas.getContext('2d');

  var dx ;
  var dy ;

  var drawRect = function  (x,y){
    context.fillStyle = 'black'; //цвет для рисования
    context.clearRect(0,0,800,450);//очистка экрана
    context.fillRect(x,y,30,30); // рисование квадрата

    dx = x;
    dy = y;

  }

  document.onkeydown = function (event) {
    console.log(event.key);
    if (event.key == 'ArrowRight'){
      var x = dx+1;//вот на эту строчку внимание обрати
      var y = dy;
      gameLoopRight(x,y);
      dx++;

    }
  }


  function drawGrid(){
    for (var i = 0; i < 1; i++) {
      var x = Math.floor((Math.random() * ((canvas.width-50) - 0 + 1)) + 0);
      var y = Math.floor((Math.random() * ((canvas.height-50) - 0 + 1)) + 0);

      drawRect(x,y);

    }
  }

  var gameLoopRight = function(x,y){
    drawRect(x,y);

    if (x>=700){
      // условие
    }
  };
  drawGrid();
});
avatar
Pyro338
Админ

Сообщения : 584
Дата регистрации : 2017-12-25
Возраст : 32
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Pyro338 в Вс Янв 07, 2018 10:35 am

avatar
Pyro338
Админ

Сообщения : 584
Дата регистрации : 2017-12-25
Возраст : 32
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор raingo в Вс Янв 07, 2018 11:03 am

у успеха оригинальной игры были другие причины. Отсутствие конкуренции, лидерство на рынке (клоны почти всегда проигрывают), новизна, распространенность. Она была почти в каждом игровом центре на больших таких игровых автоматах.

Считай что марио. В которую сейчас играют только из за ностальгии.

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

В идеале, да, в 2018 году мы привыкли к более радикальным изменеиям. Но от однообразия не сложно избавиться

raingo
Отдел прокрастинации

Сообщения : 727
Дата регистрации : 2017-12-25

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор raingo в Вс Янв 07, 2018 11:04 am

еп твою мать, не туда написал, с телефона пишу..

raingo
Отдел прокрастинации

Сообщения : 727
Дата регистрации : 2017-12-25

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Dessan в Вс Янв 07, 2018 2:38 pm

Pyro338 пишет:во первых надо обернуть твой скрипт в document ready, потому что ДОМ не успевает прогрузиться и из за этого переменная canvas получается null
Код:
$( document ).ready(function(){
  
});

Странно, ни в одном видео я этого не видел,включая видео сканера. К тому же jquery совмещать с javascript?Я читал, что такое никто не делает. Используется либо javascript либо jquery.

Pyro338 пишет:во вторых ты хочешь подвинуть свой квадрат, но не даешь ему никакого прирощения координаты, а просто присваиваешь то же значение x, которое у него и было
да, получаю координату при создании объекта, сохраняю, присваиваю и увеличиваю уже присвоенное. Я ничего умнее не придумал просто. А как нужно?Вообще как мне создать множество объектов и всех их двигать в какую-то сторону с одинаковой скоростью? И как мне задать каждому объекту свою скорость?Вот такой вот "снегопад" квадратов как мне сделать?

Dessan
Юный падаван

Сообщения : 399
Дата регистрации : 2017-12-25

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Pyro338 в Вс Янв 07, 2018 2:58 pm

ни в одном видео я этого не видел,включая видео сканера

я полагаю, что в PointJS это встроено. а например в примере инвейдеров на чистом JS, там, если ты посмотришь код, икровой цикл вызывается

Код:
window.onload = function(){
  new Game('screen');
}

что в принципе тоже самое, что я тебе написал

К тому же jquery совмещать с javascript?Я читал, что такое никто не делает

я делаю. ну если не нравится - замени $( document ).ready(function() на window.onload = function() и будет тебе счастье.

и увеличиваю уже присвоенное
так ты там ничего не увеличивал. у тебя было

Код:
document.onkeydown = function (event) {
    console.log(event.key);
    if (event.key == 'ArrowRight'){
      var x = dx;

а +1 - это уже я дописал

Код:
document.onkeydown = function (event) {
    console.log(event.key);
    if (event.key == 'ArrowRight'){
      var x = dx+1;

А как нужно?Вообще как мне создать множество объектов и всех их двигать в какую-то сторону с одинаковой скоростью? И как мне задать каждому объекту свою скорость?Вот такой вот "снегопад" квадратов как мне сделать?

нужно создать массив объектов и потом не каждый раз пересоздавать его, как ты делаешь сейчас, а в функции update менять координату уже созданных объкутов. опять же смотри код инвейдеров - там все это есть
avatar
Pyro338
Админ

Сообщения : 584
Дата регистрации : 2017-12-25
Возраст : 32
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор SeeDBe в Вс Янв 07, 2018 3:51 pm

Кто-нибудь может сказать, нормально ли синхронизировать каждое движение игроков с БД, будет ли такой способ нагружать сервер? Или лучше синхронизировать данные с БД только при выходе игрока из игры?
Код:

   socket.on('move', function (msg) {

      for (let a=0; a < users.length; a++){
         if (users[a].id == ID){
            users[a].x = msg.x;
            users[a].y = msg.y;
            pool.getConnection(function(err, connection){ 
            connection.query('UPDATE test SET  x = ' + msg.x + ', y = ' + msg.y + '  WHERE username = "' + users[a].username + '"',
               function(error, result, fields){connection.release();})});   

            break;   
         }
      }


       socket.broadcast.emit('userMove', {id: ID , 'x' : msg.x, 'y' : msg.y, p: msg.p  });

   });

SeeDBe

Сообщения : 9
Дата регистрации : 2017-12-27

Посмотреть профиль http://w-akk.esy.es

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор raingo в Вс Янв 07, 2018 4:45 pm

Не нормально. А еще sql подобные бд по-моему не лучшее решение для игр.

Вообще, сколько не пытался найти хотя бы приблизительную статистику по нагрузке на vps в зависимости от кол-ва игрока, активностей и т.д. - никто ничего не знает. Если попадется подобная инфа, буду счастлив выслушать.

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

А еще можно так оптимизировать. Собирать все входящие сигналы воедино, но не сразу оповещать об них. А ждать какое-то кол-во микросекунд, пока не соберется много, и бродкастить скопом все.

raingo
Отдел прокрастинации

Сообщения : 727
Дата регистрации : 2017-12-25

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Dessan в Вс Янв 07, 2018 4:48 pm

pyro, спасибо, что указал на недочёт, я ночью упустил этот момент.

Только тогда уже надо вот так вообще:
Код:
document.onkeydown = function (event) {
        console.log (event);
       if (event.key == 'ArrowRight'){
              var x = dx+5;
                        var y = dy;
            gameLoopRight(x,y);
   
    }
 }

Dessan
Юный падаван

Сообщения : 399
Дата регистрации : 2017-12-25

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Dessan в Вс Янв 07, 2018 4:58 pm

SeeDBe пишет:Кто-нибудь может сказать, нормально ли синхронизировать каждое движение игроков с БД, будет ли такой способ нагружать сервер? Или лучше синхронизировать данные с БД только при выходе игрока из игры?

Я не знаю как синхронизировать, но если не синхронизировать сразу, то твою игру взломают даже с wpe pro например

Dessan
Юный падаван

Сообщения : 399
Дата регистрации : 2017-12-25

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Pyro338 в Вс Янв 07, 2018 7:21 pm

Только тогда уже надо вот так вообще:

+1 или +5 - это уж как душе угодно

Кто-нибудь может сказать, нормально ли синхронизировать каждое движение игроков с БД

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

целесообразно делать т. н. "слепок мира" и писать его в БД одним запросом. ито не каждый тик, а через какой-то промежуток времени. даже если всё ляжет к псам - потерять изменения за последнюю минуту - это не так уж и криминально.

каждый раз следует писать такие варианты как например изменения статов, покупки и так далее. и то нужно смотреть в каждом случае отдельно
avatar
Pyro338
Админ

Сообщения : 584
Дата регистрации : 2017-12-25
Возраст : 32
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Dessan в Вс Янв 07, 2018 7:26 pm

Pyro338 пишет:
+1 или +5 - это уж как душе угодно
Да, не в +5 или +1 дело, а в том что я dx++; строку удалил вообще)

Dessan
Юный падаван

Сообщения : 399
Дата регистрации : 2017-12-25

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Pyro338 в Вс Янв 07, 2018 7:28 pm

а в том что я dx++; строку удалил вообще)

ну и правильно сделал
avatar
Pyro338
Админ

Сообщения : 584
Дата регистрации : 2017-12-25
Возраст : 32
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Dessan в Вс Янв 07, 2018 7:30 pm

Pyro338 пишет:
целесообразно делать т. н. "слепок мира" и писать его в БД одним запросом. ито не каждый тик, а через какой-то промежуток времени. даже если всё ляжет к псам - потерять изменения за последнюю минуту - это не так уж и криминально.

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

Если локацию, статы, инвентарь сохранять каждую секунду, то что же останется не сохранять тогда?))

Dessan
Юный падаван

Сообщения : 399
Дата регистрации : 2017-12-25

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор SeeDBe в Вс Янв 07, 2018 7:36 pm

Спасибо большое за ответы!

SeeDBe

Сообщения : 9
Дата регистрации : 2017-12-27

Посмотреть профиль http://w-akk.esy.es

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Pyro338 в Вс Янв 07, 2018 7:44 pm

Дессан. невнимательно читаешь.
avatar
Pyro338
Админ

Сообщения : 584
Дата регистрации : 2017-12-25
Возраст : 32
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: Вопросы новичка

Сообщение автор Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Страница 6 из 8 Предыдущий  1, 2, 3, 4, 5, 6, 7, 8  Следующий

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения