Воскресенье, 24 Ноября 2024, 07:24

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
ArchidoДата: Вторник, 21 Августа 2012, 23:59 | Сообщение # 501 | Тема: вопросы по разным алгоритмам
Сэнсэй
Сейчас нет на сайте
ad141
Это называется линейной интерполяцией, повернется не "с определенной скоростью" как хотел ТС, а плавно да. Но эффект весьма забавный smile


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Вторник, 21 Августа 2012, 23:57 | Сообщение # 502 | Тема: Поясните, пожалуйста!
Сэнсэй
Сейчас нет на сайте
Quote (niko42)
Дык вот не пойму, где эти команды взять=)

Сгенерировать biggrin . Вам их перехватить что ли нужно у чужого приложения? Или нет(или у вас свое)? Не пойму. Для чего вам нужны эти "команды"? Что вы будете с ними делать?


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Среда, 22 Августа 2012, 00:00
ArchidoДата: Вторник, 21 Августа 2012, 20:48 | Сообщение # 503 | Тема: Поясните, пожалуйста!
Сэнсэй
Сейчас нет на сайте
Во, терь другое дело smile .

Собсна, в чем проблема поделиться данной "геодатой" с клиентами? Иначе не понятно как это вообще будет работать.
Обычно, вся логика вынесена на сервер, чтобы никто не читерил у себя на клиенте. Клиент только рисует картинку и отправляет команды серверу, что хочет делать его перс. Сервер, в свою очередь, рассылает всем клиентам позиции других игроков (которые находятся в пределах видимости, например) и свою собственную позицию тоже. Так вот, пока своя позиция до нас приедет - пройдет уже прилично времени и реакция на действия на нашем клиенте будет весьма замедлена.
Чтобы избежать этого - используют предсказание действия игрока у себя на клиенте, основываясь на аналогичных данных (та же "геодата") и аналогичной логике, которые использует сервер (т.е. движение персов, коллизии, etc). Если предсказание неточно, то позиция игрока "плавно" перетекает в ту, что вернул сервер. Таким образом, последний всегда прав.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Вторник, 21 Августа 2012, 20:48
ArchidoДата: Вторник, 21 Августа 2012, 17:44 | Сообщение # 504 | Тема: Поясните, пожалуйста!
Сэнсэй
Сейчас нет на сайте
Quote (niko42)
Спасибо! Геодата - распологается на сервере, а не в клиенте и отвечает за-то, что бы объект не мог бить сквозь стены.

Вопрос в том, что вообще такое "Геодата"? Что вы под этим подразумеваете?

Quote (niko42)
А вот не понятно, как создать клиентские пакеты.

Что такое по-вашему "клиентские пакеты"?

Quote (niko42)
Инной способ сборки объектов нарисованных в 3Dmax не принебригая движек.

Мощно. Несколько раз пытался сие осмыслить, но последнее словосочетание просто рушит мой мозг.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Понедельник, 20 Августа 2012, 15:05 | Сообщение # 505 | Тема: Клиент-серверная связь. Сокеты. Помогите пожалуйста
Сэнсэй
Сейчас нет на сайте
Quote (karuy)
*ржет* Я отправил файл. Но не переменную! XD

Можно просто вот так тупо отправить байты переменной:
Code

int Value = 56789;

byte[] SendData = BitConverter.GetBytes(Value);
server.Send(SendData);

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


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Понедельник, 20 Августа 2012, 15:08
ArchidoДата: Понедельник, 20 Августа 2012, 13:25 | Сообщение # 506 | Тема: Вики по DirectX 11
Сэнсэй
Сейчас нет на сайте
Quote (warzes)
если честно, я сам не до конца понял подробности о deffered context

В случае Immediate Сontext вызовы API собираются в специальный командный буфер и по мере его заполнения (или в случае принудительной синхронизации), он сразу же отправляется на исполнение GPU. Собсна, формирование этого буфера лежит полностью на плечах CPU (это делает DX'вый Runtime) и на это тратится какое-то время, ессно. Заниматься такими делами может только один поток, иначе бы постоянная синхронизация между вызовами API убила бы всю производительность.

Deffered Context же, специально придумали, чтобы собирать такие буферы в нескольких потоках. Т.е. полноценный рендеринг (не отрисовка квадрата, а отрисовка мешей, теней, кучи эффектов, etc) всегда можно разделить на независимые подзадачи (те же тени можно "рисовать" отдельно, например) и каждую отдельную задачу размазать на несколько потоков.
Суть DC в том, что буфер, который собирается в процессе вызовов - не отправляется на исполнение GPU, а ждет когда мы его сами туда отправим. Таким образом эти буферы собираются параллельно на нескольких потоках и когда все готово, то эти буферы "воспроизводятся" в главном потоке (с помощью Immediate Сontext) последовательно (CPU тут уже почти ничего не делает, все отправляется на исполнение GPU).

Как-то так, вообщем. В SDK, кстати, об этом есть инфа.

P.S. Жду, когда будем рисовать первый текстурированный квадрат smile


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Понедельник, 20 Августа 2012, 13:25
ArchidoДата: Воскресенье, 19 Августа 2012, 20:09 | Сообщение # 507 | Тема: Какой язык начать учить?
Сэнсэй
Сейчас нет на сайте
Quote (Mak)
токо не хочу учить С и С++. Не навижу его и по отзывам в инете скажу что он тупой

biggrin

Pascal / Delphi, VBasic, etc


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Воскресенье, 19 Августа 2012, 19:03 | Сообщение # 508 | Тема: Клиент-серверная связь. Сокеты. Помогите пожалуйста
Сэнсэй
Сейчас нет на сайте
Quote (Saitei)
Я всё это дело связал (Listen\Agree), но теперь нужно окончательно понять как переменные передавать

Ну, а чего там понимать? Самый простой, в данном случае (на базе вышеописанного кода), способ - передавать все через строки.
У тебя есть некоторая переменная, ты делаешь MyVar.ToString() - получаешь ее в виде строки, ну и формируешь для отправки общую строку типа: "MyVar:" + MyVar.ToString() + '#'. Тут "MyVar:" - идентификатор, он нужен для того, чтобы определить к какой переменной относится этот мини "пакет", '#' - символ разделитель, с помощью него можно отличить один "пакет" от другого. Передавать можно сколько угодно переменных.
При приеме получаешь пачку этих строк, разбираешь их, основываясь на '#", и каждый получившийся "пакет" парсишь, узнаешь идентификатор и данные -> заносишь в переменную.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Воскресенье, 19 Августа 2012, 19:03
ArchidoДата: Воскресенье, 19 Августа 2012, 16:21 | Сообщение # 509 | Тема: Клиент-серверная связь. Сокеты. Помогите пожалуйста
Сэнсэй
Сейчас нет на сайте
Quote (Saitei)
что она делает конкретно в этом коде?

Создается объект класса StringBuilder? А потом созданный объект sb юзается для приема данных, далее по коду. Сам StringBuilder - строковый Pool, в MSDN по сылке о нем более подробно говорится.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Воскресенье, 19 Августа 2012, 16:28
ArchidoДата: Воскресенье, 19 Августа 2012, 15:21 | Сообщение # 510 | Тема: Просьба оценить код
Сэнсэй
Сейчас нет на сайте
Quote (alex_proger)
Хмм почему это? Мне же надо ещё проверят и элемент с индексом key.

ibEvents events[5]; - массив принимает значениея от 0 до 4, т.е. 5. В цикле надо это учитывать, вот в этом участке:
Code
for (int i = 0; i <= key; i++){  
     if (events[i].eventType == type){  
      events[i].FunctionEvent();  
     }

Массив будет пройден от 0 до 5, т.е. 6 раз. И будет выход за границу массива.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Воскресенье, 19 Августа 2012, 13:41 | Сообщение # 511 | Тема: Создание движка
Сэнсэй
Сейчас нет на сайте
Quote (dima9595)
получается легче и лучше писать сразу на C++,а не на Lua!?

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


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Воскресенье, 19 Августа 2012, 13:42
ArchidoДата: Воскресенье, 19 Августа 2012, 13:21 | Сообщение # 512 | Тема: Создание движка
Сэнсэй
Сейчас нет на сайте
dima9595
Зависит от того, что используется в этом движке платформо-зависимое и как используется. Если у движка весьма грамотная архитектура, платформо-зависимый код вынесен отдельно и напрямую в остальных частях движка не вызывается (как и в коде игры), то его можно весьма успешно портировать на другие платформы. Ну и рендер должен быть OpenGL'ный, да.

Основной код движка должен быть написан на С++


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Воскресенье, 19 Августа 2012, 13:22
ArchidoДата: Воскресенье, 19 Августа 2012, 11:19 | Сообщение # 513 | Тема: Сокеты??
Сэнсэй
Сейчас нет на сайте
arthurfok
Для начинаний я бы таки взял TCP.
При тестах в локальной сети разницы между TCP и UDP на глаз не будет совсем. В случае с TCP не нужно как-то заботиться о потерянных пакетах (и обрабатывать это дело), не нужно думать о том, что делать если более новый пакет обогнал старый, и т.п. Т.к. все придет именно в той последовательности, в которой было отправлено.
Вообщем, с TCP работать проще. Поэтому я бы сделал рабочий вариант именно на нем (т.к. это проще, если опыта нет), а после при необходимости уже доводил бы до ума на UDP (необходимость - риалтайм игра по интернету, например).

Quote (arthurfok)
я пишу 2D стрелялку

Риалтайм значит. Тут еще надо понимать взаимодействие и архитектуру клиент-серверной модели (в таких играх, обычно всеми расчетами занимается сервер и раздает всем клиентам готовые координаты, а клиенты выступают лишь в роли "рендера" игрового мира).


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Воскресенье, 19 Августа 2012, 09:22 | Сообщение # 514 | Тема: С чего начать?
Сэнсэй
Сейчас нет на сайте
Quote (zodiak)
Ну и зачем новичков пугаете стереотипами. Если сами что-то не осилили, то это не значит что другие столь же "умные".

Умнег, если сразу не понятно, то в первую очередь большая часть всего сказанного тут относится именно к тем, кто создает такие темы. Или ты думаешь у них есть реальные шансы освоить С++ с нуля? Точно также не стоит всех равнять под себя.

Да и основная идея была в том, что сначала нужно учиться писать программы и изучать алгоритмы, язык вторичен. Мое имхо в том, что С++ несет в себе слишком много сложностей, которые излишни в начале обучения. Да и новичку не нужны все его возможности на начальном этапе, а в языках попроще отсутствует возможность лишний раз выстрелить себе в ногу. Все просто.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Воскресенье, 19 Августа 2012, 09:24
ArchidoДата: Воскресенье, 19 Августа 2012, 08:42 | Сообщение # 515 | Тема: Клиент-серверная связь. Сокеты. Помогите пожалуйста
Сэнсэй
Сейчас нет на сайте
Saitei
Т.к. это имеет отношение к теме синхронности и асинхронности сетевых приложений.
И наверное вчера ночью чутка не так понял вопрос - конкретно синхронный сервер выполняет обработку сетевых данных / запросов из вне - последовательно (очередь и один единственный поток), а асинхронный соответственно - параллельно (например, каждому клиенту - свой поток (thread)). Наверное речь об этом была.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Воскресенье, 19 Августа 2012, 00:31 | Сообщение # 516 | Тема: Клиент-серверная связь. Сокеты. Помогите пожалуйста
Сэнсэй
Сейчас нет на сайте
Quote (Saitei)
Как-то можно вывести на консоль от кого приходят пакеты?) ip-адрес?

Можно или звать для приема Socket.ReceiveFrom


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Воскресенье, 19 Августа 2012, 00:42
ArchidoДата: Воскресенье, 19 Августа 2012, 00:10 | Сообщение # 517 | Тема: Клиент-серверная связь. Сокеты. Помогите пожалуйста
Сэнсэй
Сейчас нет на сайте
Quote (Saitei)
Объясните пожалуйста разницу между синхронными и асинхронными серверами

Синхронный сервер приостанавливает свою "работу", пока идет обмен данными со своими клиентами. Асинхронный же умеет делать и то и другое одновременно (делать свою "работу" и обрабатывать / получать данные из сети). Думаю, стоит почитать на тему блокирующих и неблокирующих сокетов.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Суббота, 18 Августа 2012, 21:27 | Сообщение # 518 | Тема: Вопрос к программистам.
Сэнсэй
Сейчас нет на сайте
Quote (vknw123)
а как тогда на фалко игру отправлять, они разве такие игры принимают?

По-моему у них собственный инсталлятор, а ему глубоко фиолетового сколько там у игры файлов smile , т.к. в итоге один исполняемый(или установочный) файл как раз и получится. Но лучше у них в теме спросить.

Quote (vknw123)
Вообще то интересно ,Такая графика имеет право на существование?

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

Quote (vknw123)
Но всё равно решил игру доделать

Успехов в разработке wink


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Суббота, 18 Августа 2012, 21:29
ArchidoДата: Суббота, 18 Августа 2012, 21:07 | Сообщение # 519 | Тема: Вопрос к программистам.
Сэнсэй
Сейчас нет на сайте
vknw123
А вообще для чего возникла необходимость избавиться от лишних файлов? По-моему в таскании нескольких длл'ок с собой - нет ничего страшного smile

Теоретически, BGE является open source проектом и его можно пересобрать руками. Но для того, чтобы избавиться от всех зависимостей - нужно отыскать все варианты этих DLL в виде статических библиотек, которые cлинкуются вместе с ехе файлом. После этого пересобрать блендер - и будет то, что нужно. НО. Не факт, что вообще существуют ВСЕ статические аналоги этих DLL, а в каком-то случае это может приводить к нарушениям лицензии свободного ПО (GPL, например).
Т.е. сделать это вроде бы и можно, но это весьма и весьма не тривиально. Есть ли особый практический смысл в этом?


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Суббота, 18 Августа 2012, 20:53 | Сообщение # 520 | Тема: Клиент-серверная связь. Сокеты. Помогите пожалуйста
Сэнсэй
Сейчас нет на сайте
Да, копипаст - это сила! biggrin

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


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Поиск:

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