Я сделал это пару лет назад. Отладчик сценариев был написан на C# и запущен на ПК; сценарий был написан на C++ и работал во всем, что мы поддерживали в то время - ПК, PS3, Xbox360, Wii, DS, PSP и PS2.
Что бы вы ни выбрали, я бы рекомендовал вставить какой-то слой, чтобы отладчик и среда выполнения были изолированы от базового протокола. Храните вызовы API там, где вы можете следить за ними! Это // оставляет ваши параметры открытыми, и (если сделано правильно) упрощает код с обоих концов. Какая-то система на основе пакетов с пакетами 1K или менее сопоставима с любой ценой. (Передача> 1K может выполняться на более высоком уровне, используя только открытый API.)
Если вы только предназначаетесь для ПК, я рекомендую TCP/IP. Он прозрачен в сети, все знакомы с его IP-адресами и портами, нет сложнее использовать API-интерфейс, чем именованные каналы.
Для следующего титула gen, если вы хотите добиться хорошего баланса между совместимостью между платформами и простотой кодирования, TCP/IP по-прежнему подходит. Работает на ПК, Xbox360 и PS3.
(Что касается именованных каналов, диспетчер целей SN предоставит вам именованную поддержку труб для PS3 и PS2, как я помню, и он идет через порт dev LAN, а не через порт LAN игры, но Xbox360 не поддерживает его в все, поэтому, возможно, стоит его поддержать - и это ваш единственный вариант в PSP, если я правильно помню! - но это не универсальная панацея.
Лично я остановился после реализации поддержки TCP/IP, и я «Я очень рад, что я это сделал!» В сводке Wii и DS оба ужасны, но по-разному, и в отличие от всего остального. PSP поддерживает только именованные каналы по какой-то неизвестной причине. PS3 и PS2 поддерживают TCP/IP, но только через порт LAN-сети. (Порт LAN-сети работает по-разному. Не используйте его. Попросите вашего продюсера подключить больше сетевых кабелей и сохранить свой санитарий y.) Xbox360 поддерживает TCP/IP, но только если вы используете библиотеки отладки и только через IP-адрес игры. (Отладочный IP работает по-разному. Не используйте его.)
Короче говоря, что бы вы ни делали, вам понадобится этот изолирующий слой.
Именованные трубы работают в XP, а в .NET 2 (через PInvoke) - поэтому они всегда являются хорошим вариантом. –
И, черт, на Unix тоже, так как никто не поднимает это. –
Не можете ли вы сделать этот шаг дальше и в реализации C# реализовать это с помощью WCF с использованием именованных каналов? – Jaxidian