Результаты поиска
| |
Archido | Дата: Вторник, 21 Августа 2012, 23:59 | Сообщение # 501 | Тема: вопросы по разным алгоритмам |
Сэнсэй
Сейчас нет на сайте
| ad141 Это называется линейной интерполяцией, повернется не "с определенной скоростью" как хотел ТС, а плавно да. Но эффект весьма забавный
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Вторник, 21 Августа 2012, 23:57 | Сообщение # 502 | Тема: Поясните, пожалуйста! |
Сэнсэй
Сейчас нет на сайте
| Quote (niko42) Дык вот не пойму, где эти команды взять=) Сгенерировать . Вам их перехватить что ли нужно у чужого приложения? Или нет(или у вас свое)? Не пойму. Для чего вам нужны эти "команды"? Что вы будете с ними делать?
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Среда, 22 Августа 2012, 00:00 |
|
| |
Archido | Дата: Вторник, 21 Августа 2012, 20:48 | Сообщение # 503 | Тема: Поясните, пожалуйста! |
Сэнсэй
Сейчас нет на сайте
| Во, терь другое дело .
Собсна, в чем проблема поделиться данной "геодатой" с клиентами? Иначе не понятно как это вообще будет работать. Обычно, вся логика вынесена на сервер, чтобы никто не читерил у себя на клиенте. Клиент только рисует картинку и отправляет команды серверу, что хочет делать его перс. Сервер, в свою очередь, рассылает всем клиентам позиции других игроков (которые находятся в пределах видимости, например) и свою собственную позицию тоже. Так вот, пока своя позиция до нас приедет - пройдет уже прилично времени и реакция на действия на нашем клиенте будет весьма замедлена. Чтобы избежать этого - используют предсказание действия игрока у себя на клиенте, основываясь на аналогичных данных (та же "геодата") и аналогичной логике, которые использует сервер (т.е. движение персов, коллизии, 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. Жду, когда будем рисовать первый текстурированный квадрат
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Понедельник, 20 Августа 2012, 13:25 |
|
| |
Archido | Дата: Воскресенье, 19 Августа 2012, 20:09 | Сообщение # 507 | Тема: Какой язык начать учить? |
Сэнсэй
Сейчас нет на сайте
| Quote (Mak) токо не хочу учить С и С++. Не навижу его и по отзывам в инете скажу что он тупой
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) а как тогда на фалко игру отправлять, они разве такие игры принимают? По-моему у них собственный инсталлятор, а ему глубоко фиолетового сколько там у игры файлов , т.к. в итоге один исполняемый(или установочный) файл как раз и получится. Но лучше у них в теме спросить.
Quote (vknw123) Вообще то интересно ,Такая графика имеет право на существование? Право то может и имеет , но неплохо бы, конечно, все таки уровень графики подтянуть. Скажем, первое, что бросилось в глаза - это отсутствие групп сглаживания у моделей. Ну и текстуры хоть какие-то все же нужны. Вообще, много над чем можно поработать
Quote (vknw123) Но всё равно решил игру доделать Успехов в разработке
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Суббота, 18 Августа 2012, 21:29 |
|
| |
Archido | Дата: Суббота, 18 Августа 2012, 21:07 | Сообщение # 519 | Тема: Вопрос к программистам. |
Сэнсэй
Сейчас нет на сайте
| vknw123 А вообще для чего возникла необходимость избавиться от лишних файлов? По-моему в таскании нескольких длл'ок с собой - нет ничего страшного
Теоретически, BGE является open source проектом и его можно пересобрать руками. Но для того, чтобы избавиться от всех зависимостей - нужно отыскать все варианты этих DLL в виде статических библиотек, которые cлинкуются вместе с ехе файлом. После этого пересобрать блендер - и будет то, что нужно. НО. Не факт, что вообще существуют ВСЕ статические аналоги этих DLL, а в каком-то случае это может приводить к нарушениям лицензии свободного ПО (GPL, например). Т.е. сделать это вроде бы и можно, но это весьма и весьма не тривиально. Есть ли особый практический смысл в этом?
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Суббота, 18 Августа 2012, 20:53 | Сообщение # 520 | Тема: Клиент-серверная связь. Сокеты. Помогите пожалуйста |
Сэнсэй
Сейчас нет на сайте
| Да, копипаст - это сила!
P.S. Неплохо бы еще книжки по программированию листать, ибо в любой мало-мальски приличной книжке рассказывается об обработке исключений, например. Ну и не только о них, ессно.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
|