48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
import asyncio
|
|
import os
|
|
|
|
from server.server import GameServer
|
|
from server.config import ServerConfig
|
|
|
|
|
|
async def run_in_memory():
|
|
from server.transport import InMemoryTransport
|
|
cfg = ServerConfig()
|
|
server = GameServer(transport=InMemoryTransport(lambda d, p: server.on_datagram(d, p)), config=cfg)
|
|
await asyncio.gather(server.transport.run(), server.tick_loop())
|
|
|
|
|
|
async def run_quic():
|
|
from server.quic_transport import QuicWebTransportServer
|
|
cfg = ServerConfig()
|
|
host = os.environ.get("QUIC_HOST", "0.0.0.0")
|
|
port = int(os.environ.get("QUIC_PORT", "4433"))
|
|
cert = os.environ["QUIC_CERT"]
|
|
key = os.environ["QUIC_KEY"]
|
|
server = GameServer(transport=QuicWebTransportServer(host, port, cert, key, lambda d, p: server.on_datagram(d, p)), config=cfg)
|
|
await asyncio.gather(server.transport.run(), server.tick_loop())
|
|
|
|
|
|
async def run_webtransport():
|
|
from server.webtransport_server import WebTransportServer
|
|
cfg = ServerConfig()
|
|
host = os.environ.get("WT_HOST", os.environ.get("QUIC_HOST", "0.0.0.0"))
|
|
port = int(os.environ.get("WT_PORT", os.environ.get("QUIC_PORT", "4433")))
|
|
cert = os.environ.get("WT_CERT") or os.environ["QUIC_CERT"]
|
|
key = os.environ.get("WT_KEY") or os.environ["QUIC_KEY"]
|
|
server = GameServer(transport=WebTransportServer(host, port, cert, key, lambda d, p: server.on_datagram(d, p)), config=cfg)
|
|
await asyncio.gather(server.transport.run(), server.tick_loop())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
mode = os.environ.get("MODE", "mem").lower()
|
|
if mode == "wt":
|
|
asyncio.run(run_webtransport())
|
|
elif mode == "quic":
|
|
asyncio.run(run_quic())
|
|
else:
|
|
asyncio.run(run_in_memory())
|
|
except KeyboardInterrupt:
|
|
pass
|