Коммуникация процесса Интера C# <-> C++ для игрового механизма отладки

Я работаю над проектом отладчика для механизма выполнения сценариев игры. Я надеюсь записать GUI отладчика в C#. Фактический механизм отладки, однако, встраивается в саму игру и записан в смеси C, C++ и патчей блока.

Что лучший способ состоит в том, чтобы обработать коммуникацию между отладчиком GUI и механизмом отладки? Эти два будут работать в отдельных процессах.

Спасибо!

Andy

5
задан AstroCB 31 August 2014 в 01:38
поделиться

2 ответа

Если вам может потребоваться Windows Vista или новее, и .Net 3.5 или новее, Named Pipes обеспечат простой и высокопроизводительный IPC. Прочтите эту статью .

4
ответ дан 14 December 2019 в 13:31
поделиться

Я сделал это пару лет назад. Отладчик скриптов был написан на C # и запускался на ПК; среда выполнения сценария была написана на C ++ и работала на всем, что мы поддерживали в то время - ПК, PS3, Xbox360, Wii, DS, PSP и PS2.

Что бы вы ни выбрали, я бы рекомендовал добавить какой-то слой, чтобы отладчик и среда выполнения были изолированы от базового протокола. Держите вызовы API там, где вы можете следить за ними! Это // оставляет ваши варианты открытыми и (если все сделано правильно) упрощает код с обеих сторон. Какая-то система на основе пакетов с пакетами размером 1 КБ или меньше сносно соответствует практически чему угодно. (Передача> 1 КБ может быть выполнена на более высоком уровне, используя только общедоступный API.)

Если вы ориентируетесь только на ПК, я рекомендую TCP / IP. Он прозрачен для сети, все знакомы с его IP-адресами и портами, использовать API не сложнее, чем именованные каналы.

Для игры следующего поколения, если вы хотите найти хороший баланс между кроссплатформенной совместимостью и простотой кодирования, TCP / IP - это лучший вариант. Работает на ПК, Xbox360 и PS3.

(Что касается именованных каналов, Target Manager SN предоставит вам поддержку именованных каналов для PS3 и PS2, насколько я помню, и он проходит через порт LAN разработчика, а не порт LAN игры, но Xbox360 не поддерживает его вообще . Так что, возможно, стоит поддержать его - и это ваш единственный вариант в PSP, если я правильно помню! - но это не универсальная панацея.

Лично я прекратил после внедрения поддержки TCP / IP, и я очень рад, что я сделал! Подводя итог, Wii и DS ужасны, но по-разному и непохожи на все остальное. PSP по неизвестной причине поддерживает только именованные каналы. PS3 и PS2 поддерживают TCP / IP, но только через порт LAN игры. (Порт LAN разработчика работает по-другому. Не используйте его. Попросите у производителя больше сетевых кабелей и сохраните рассудок.) Xbox360 поддерживает TCP / IP, но только если вы используете библиотеки отладки. , и только через IP-адрес игры. (IP-адрес отладки работает иначе. Не используйте его.)

Короче говоря, что бы вы ни делали, вам понадобится этот изолирующий слой.

{{1} }
2
ответ дан 14 December 2019 в 13:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: