1
$\begingroup$

From what I remember John Cormack developed a networked Quake level editor one could use to edit a level cooperatively over a network. The modern Cube game supposedly offers similar functionality. Many people have gotten tcp servers working in Blender. Exporting to sockets , rather than files, seems cleaner to me and more fun. Are there any accounts online or in the literature on the use of the network for exporting Blender assets? Here's a small server, that works in Blender, so you can see it's possible:

import asyncio

from threading import Thread

class Server:
    def __init__(self):
        self.enable(True)

    def __del__(self):
        self.enable(False)

    @property
    def enabled(self):
        return hasattr(self, "server") and self.server.is_serving()

    @enabled.setter
    def enabled(self, e):
        self.enable(e)

    #
    def enable(self, e):
        if (self.enabled != e):
            if (e):
                self.loop = asyncio.new_event_loop()

                def start_loop():
                    asyncio.set_event_loop(self.loop)

                    self.loop.run_forever()
                    self.loop.close()

                self.thread = Thread(target=start_loop, daemon=True)
                self.thread.start()

                async def start_server():
                    async def handle_request(reader, writer):
                        writer.write("test".encode())
                        await writer.drain()

                        writer.close()
                        await writer.wait_closed()

                    self.server = await asyncio.start_server(
                        handle_request,
                        '127.0.0.1',
                        7777
                    )

                    async with self.server:
                        await self.server.serve_forever()

                asyncio.run_coroutine_threadsafe(start_server(), self.loop)
            else:
                self.server.close()
                self.loop.stop()
$\endgroup$

0

You must log in to answer this question.

Browse other questions tagged .