Jeśli twój projekt jest na etapie planowania, zaleca się zaprojektowanie projektu do pracy w sieci od samego początku. Włączenie kodu sieciowego w późnym stanie projektu najprawdopodobniej doprowadzi do masowego refaktoryzacji lub dużej ilości włamań, czego skutkiem będzie trudny do utrzymania i błędny kod.
Najczystszym sposobem jest zaimplementowanie całej gry tak, jakby była czystą grą sieciową. Oznacza to, że zaimplementuj kod dla dedykowanego serwera i zaimplementuj ten kod tylko jako kod serwera. Zaimplementuj kod klienta gry w podobny sposób. Serwer i klient mogą działać w tym samym procesie i nawet nie muszą używać prawdziwego gniazda sieciowego, ale powinny być osobnymi jednostkami, a cały kod powinien być zaprojektowany w taki sposób. Kiedy gracz skacze, nie zmieniaj bezpośrednio wektora skoku gracza, ale wyślij pakiet „wciśnięty klawiszem” na serwer i pozwól temu serwerowi to obsłużyć.
Oznacza to, że nawet w grze jednoosobowej w tle działa niewidoczny serwer. Wersja tej samej gry dla wielu graczy musi tylko połączyć się ze zdalnym serwerem zamiast z lokalną, et etila, multiplayer zrobiony. Zaletami tego są:
brak oddzielnego kodu dla pojedynczego i dla wielu graczy, kod sieci jest testowany i rozwijany podczas całego czystego kodu projektu
Projekty wykorzystujące ten schemat to prawie wszystkie gry wykorzystujące dowolny z silników Quake, Civilization 4, Neverwinter Nights i wiele innych.
Do połączenia klienta i serwera w tym samym procesie z zerowym opóźnieniem można użyć gniazd lokalnych. Są one dostarczane przez Zoidcom i przekazują pakiety bezpośrednio z jednego ZCom_Control do drugiego, bez przechodzenia przez gniazdo na poziomie systemu operacyjnego.