Gemini is an online game service created specifically for use with UDK. It was born out of frustration with Steamworks, lack of documentation, and a primitive existing TCP-Link system. Gemini streamlines the development process by allowing you to set up an online base in minutes. No more messing with complicated SQL and domains!

NOTICE: Gemini is now Sagittarius!

IMPORTANTNew Pricing Plan for Commercial Developers.
Read this blog post for the story behind why this was necessary.

(7-23-2013): Some pretty awesome Gemini tutorials, courtesy of Rama (evernewjoy).
(1-29-2013): Gemini source code now on GitHub. Here’s the relevant blog post.
(10-24-2012): Updated the UDK Starter Kit. Read an overview of new features.
(1-16-2012): Multiplayer problems solved! See how it’s done.
(10-20-2011): Now with Server Browser functionality!

Visit Gemini: Gemini Main Page
Download the documentation: Gemini Documentation
View the Gemini Terms of Service: Gemini Terms of Service
Download the UDK Starter Kit: UDK Starter Kit
Download the Java Gemini Tester (from DropBox, JAR executable): Java Gemini Tester

Alexander Fisher (Article “Tcplink: Talking to an Online Database”)

Gemini is a mostly free service. Help to keep it that way by donating! Just click on the button above; any contribution is welcomed (powered by PayPal).

34 thoughts on “Gemini

  1. Pingback: Achievements System – Part 1 | WillyG Productions

  2. Pingback: UDK Multiplayer Now Possible! | WillyG Productions

  3. Hey,
    I wanted to build in a code so the Enter Button in the Server Browser is working.

    function Pick_Enter()

    But, what do I have to enter at the XXX ?


  4. Pingback: A Grim Morning | WillyG Productions

  5. Pingback: Sagittarius by Willyg302 Now Available | Unreal X-Editor

  6. I can only any signs of gemini when I play in editor, anything else and nothing shows up in editor

    [0035.97] ScriptLog: [GeminiOnlineService] Posting Data: password=xxxx&code=44c700c&pass=delete
    [0035.97] ScriptLog: [GeminiLinkClient] Resolving:

    [0036.01] ScriptLog: [GeminiLinkClient] resolved to
    [0036.01] ScriptLog: [GeminiLinkClient] Bound to port: 58778
    [0036.09] ScriptLog: [GeminiLinkClient] TCP connection opened
    [0036.09] ScriptLog: [GeminiLinkClient] End TCP connection

    • I tried using a different client to connect using open IP and got this in my log
      [0037.36] NetComeGo: Close TcpNetDriver_0 TcpipConnection_0 04/25/14 15:02:33
      [0037.36] Exit: TcpNetDriver_0 shut down

  7. I am really struggling to implement this, i cant see it in server listing on the website
    No servers found. Number of servers: 0

    It seems to open and resolves the IP and bound to port

    opens TCP connection, ends TCP connection at the same time and then TCP connect is closed.

    [1594.86] ScriptLog: [GeminiLinkClient] resolved to
    [1594.86] ScriptLog: [GeminiLinkClient] Bound to port: 52201

    [1594.88] ScriptLog: [GeminiLinkClient] TCP connection opened
    [1594.88] ScriptLog: [GeminiLinkClient] End TCP connection

    [1595.07] ScriptLog: [GeminiLinkClient] TCP connection closed

    sorry to spam..

    • Are you calling the function hostGeminiGame(); at any point from the UDK instance you want to be the server? From your logs, it looks like only RemoveServer(); is being called, which gets done at the start of the match using Rama’s code.

      As for the open IP errors, I’m not sure what’s going on there. But as you can see from the code, the functions joinGame(); and joinLANGame(); also call open IP. Maybe if you have your clients call these functions it will work better.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s