Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Rob Janes

Members
  • Posts

    1117
  • Joined

  • Last visited

    Never

Posts posted by Rob Janes

  1. It's not the engine Aeriex, I think you'll do great things with the engine itself.

    It's the community that has driven me away here, not your code or your plans for the engine, but the site leadership (excluding yourself and Agora)
  2. I'm out.

    This time when I disappear, at least I'll say Goodbye!

    Not a fan of where things are headed with the community, but I am a supporter of the VB6 Engine and Eclipse Worlds (Good Luck Helladen!)

    Stay safe everyone.

    Rob
  3. I posted a method to do this in Eclipse Origins 3.0 here

    It allows full screen gameplay with a sizable window, so as you size the window, it'll size your display accordingly!

    [http://www.eclipseorigins.com/community/index.php?/topic/135796-robs-feature-request-thread/?p=926234](http://www.eclipseorigins.com/community/index.php?/topic/135796-robs-feature-request-thread/?p=926234)
  4. Offering "Gold" or any sort of subscription or purchase is bad for Eclipse Worlds in my opinion.

    It has always been the best custom engine here, and limiting certain features and charging for it will take away from that, and result in becoming just another Eclipse Origins.
  5. As Budweiser said, you wouldn't need a business license most likely, but you will need to pay taxes on profits. It would be considered self-employment and you would need to file those taxes accordingly with the IRS, CRA or whomever regulates taxes in your country and state/province.

    I'm not sure about the Apple App-Store in the US but for any apps I've released they automatically charge the proper tax rate on any sales, and I receive payment through direct deposit as well as proper tax forms by snail mail.
  6. > He's referring to purchasing it from a different retailer. Such as Amazon:
    > [http://www.amazon.com/Microsoft-Visual-Studio-Professional-Edition/dp/B00002S7IA](http://www.amazon.com/Microsoft-Visual-Studio-Professional-Edition/dp/B00002S7IA)
    >
    >  
    >
    > VB6 isn't illegal, it's no longer supported.
    >
    > I mean, it should be illegal in my opinion, just for being that bad.

    There's nothing bad about VB6 at all. It's outdated and out-classed but it's not bad by any stretch of the imagination. It was a largely accepted IDE for close to a decade. Don't confuse bad with being old.
  7. Love the mount idea, but with the way movement is handled in Eclipse, it's going to look and perform poorly with a handful of people on mounts in the same area. It's just with the way Eclipse handles movement. The client tells the server it's moving, then the server tells everyone else the player has moved, for every single tile movement. When you increase the speed of a player, it is increasing the number of packets being sent from client to server and server to every other player, far more frequently. You'll notice significant "jumping" with multiple people on mounts around each other.

    It's really unavoidable unless you rewrite the movement processing. A significant task.

    If you're not aiming for a ton of people in a single area at once, you won't have much of a problem other than just the strain on network latency.
  8. Hey everyone!

    If anyone out there is an AppGameKit user, this is a core for a multiplayer Server setup that can be used. 

    This is build with AppGameKit Tier 1 IDE with a BASIC scripting language.

    I will post the client and the media assets a little later, but anyone out there is looking to create a Multiplayer Game for Windows, Mac, Linux, iOS, Android or Blackberry, here's a little code to get you started!

    ```
    //App Game Kit
    //Tier I
    //BASIC Server
    //Robert Janes
    //2014-2015
    //Packets from Server to Client!
    //1.1 - Connected
    //2.0 - Error Message
    //2.2 - Moving
    //2.3 - Stopping
    //2.4 - Update Who's Online
    //2.8 - Login Message
    //3.0 - Send Projectile
    //4.0 - Lobby Chat Message
    //5.0 - Back to Lobby
    //5.1 - Remove this player from the playing field
    //Packets from Client to Server!
    //1.0 - Login
    //1.1 - New Character
    //1.5 - Moving
    //1.6 - Stopping
    //1.7 - Global Message
    //3.0 - Fire Projectile
    //4.0 - Lobby Message

    //Projectile Data Type
    TYPE ProjectileRec
     ID as integer
     X as integer
     Y as integer
     Moving as Integer
     Angle as integer
     ClientID as integer
     Speed as integer
     Active as Integer
     StartTimer as float
     JoystickX as float
     JoystickY as float

    ENDTYPE
    //Player Data Type
    TYPE PlayerRec
        Name as String
        Password as String
        X as Integer
        Y as Integer
        Angle as Integer
        JoystickX as float
        JoystickY as float
        Active as Integer
        Disconnected as integer
     LastPacket as float
     InGame as integer
     Ready as Integer
    ENDTYPE

    //Player Array
    DIM Player[9999] as PlayerRec
    global dim Projectile[9999] as ProjectileRec
    global NumProjectiles as integer
    global FoundProjectile as integer
    global ProjectileID as integer
    global DataID as integer
    // Parsers
    global Parser as integer
    //Network Identifier
    global INetID as integer
    global SecondsRunning as integer
    //Misc Vars
    global ReceivedData as integer
    global LastLogin as string
    global strDebug as string
    global strDebug2 as string
    global tmpString as string
    //Used for Player File IO tmpName/tmpPassword received as packets, strName,strPassword read from file
    global FileName as string
    global PlayerFile as integer
    global tmpName as string
    global tmpPassword as string
    global strName as string
    global strPassword as string
    // Number of "Players" vs "Number of Current Connections"
    global NumPlayers as Integer
    global NumClients as integer
    // IDs of First, Last and Next Connections
    global StartID as Integer
    global EndID as Integer
    global NextID as integer
    global i as Integer

    // ============================================
    // INIT
    // ============================================
    //Setup the Server
    SetupServer()
    //Setup the Defaults
    SetDefaults()
    //Call the Main Loop
    MainLoop()

    //End the Application
    end

    // ============================================
    // Set Default Variables
    // ============================================
    function SetDefaults()

     //Number of Players (Default 1 for Server ClientID)
     NumPlayers = 1
     //Bytes Received
     ReceivedData = 0
    endfunction
    // ============================================
    // Setup Server
    // ============================================
    function SetupServer()
        INetID = HostNetwork("GameNetwork", "Server", 4100)
    endfunction
    // ============================================
    // Check for Disconnects
    // ============================================
    function CheckDisconnects()
     for i = 0 to NumPlayers
      //Only handle disconnects every 1 second(s)
      if timer() - Player[i].LastPacket > 1
       if GetNetworkClientDisconnected(iNetID,i) = 1
         if Player[i].Active > 0
          //Set their Active Flag to 0
          Player[i].Active = 0
          //If there is a match going!
          if GameRunning = 1
           //Was the player still alive?
           if Player[i].InGame = 1
            //Kill the Player!
            KillPlayer(i)
           endif        
          endif

          DeleteNetworkClient(INetID, i)
          SendDisconnectToAll(i)
         endif
        endif
             endif
     next i

     //3 minute idle timer
     for i = 0 to NumPlayers
      if timer() - Player[i].LastPacket > 180
       if Player[i].Active > 0
        Player[i].Active = 0
        //If there is a match going!
        if GameRunning = 1
         //Was the player still alive?
         if Player[i].InGame = 1
          //Kill the Player!
          KillPlayer(i)
         endif        
        endif
        DeleteNetworkClient(INetID,i)
        SendDisconnectToAll(i)
       endif
      endif
     next i

    endfunction
    // ============================================
    // Handle Network Data
    // ============================================
    function HandleData()
     //Start Handling Network Data
        msg = GetNetworkMessage(INetID)
        if msg <> 0
      //Get the Client that is Sending the Data
            ClientID = GetNetworkMessageFromClient(msg)
            //Flag to print that we've received data
            ReceivedData = 1
            DataID = ClientID

       //Valid Client
                if ClientID > 1
                    //#f is packet identifier
                    f# = GetNetworkMessageFloat(msg)
                    // ============================================
                    // 1.0 LOGIN
                    // ============================================
                    if f# = 1.0 // Handle Login!
                        tmpName = GetNetworkMessageString(msg)
                        tmpPassword = GetNetworkMessageString(msg)
                        strName = ""
                        strPassword = ""
                        FileName = tmpName + ".txt"
                        //Temporarily set this player's name
                        Player[ClientID].Name = tmpName
                        strDebug2 = "Handled Login Packet: " + tmpName + "/" + tmpPassword
                        //Account Doesn't Exist!
                        if GetFileExists(FileName) = 0
                        endif

                        if GetFileExists(FileName) = 1
          strDebug2 = "File Existed: " + FileName
                            LoadPlayer(ClientID)
                            //Upgrade the number of players
                            NumPlayers = ClientID
                            //Send the Info the User with Current Players!
                            newMsg = CreateNetworkMessage()
                            AddNetworkMessageFloat(newMsg, 1.1)
                            AddNetworkMessageInteger(newMsg, ClientID)
                            AddNetworkMessageInteger(newMsg, NumPlayers)
                            AddNetworkMessageInteger(newMsg, Player[ClientID].X)
                            AddNetworkMessageInteger(newMsg, Player[ClientID].Y)
                            SendNetworkMessage(INetID, ClientID, newMsg)
                            Player[ClientID].LastPacket = Timer()
                            //Send the Login to Everyone!
                            SendPlayerToAll(ClientID)
                            //Send all the Players to the client!
                            SendPlayersToClient(ClientID)
                            DeleteNetworkMessage(newMsg)
                            //Send Login Message to Everyone!
                            SendLoginMessageToAll(ClientID)
                            //Put them in the Lobby
                            Player[ClientID].InGame=0
                            Player[ClientID].Ready = 0
                        endif
                    endif

                    // ============================================
                    // 1.1 NEW CHARACTER
                    // ============================================
                    if f# = 1.1 // Handle New Character!
                        //Get the Variables sent from the Client
                        tmpName = GetNetworkMessageString(msg)
                        tmpPassword = GetNetworkMessageString(msg)
                        FileName = tmpName + ".txt"
                        //If the account aleady exists!
                        if GetFileExists(FileName) = 1
                            //Error out to the Client that the account exists
                            newMsg = CreateNetworkMessage()
                            AddNetworkMessageFloat(newMsg, 2.0)
                            AddNetworkMessageString(newMsg, "That account name is in use!")
                            SendNetworkMessage(INetID, ClientID, newMsg)
                            DeleteNetworkMessage(newMsg)
          Player[ClientID].LastPacket = Timer()
                        endif
                        //If we have no password and no name in the player file, it's a free account we can use!
                        if GetFileExists(FileName) = 0
          strDebug2 = "No file found for " + tmpName + ".txt"
                            //Set the Player Data!
                            Player[ClientID].Name = tmpName
                            Player[ClientID].Password = tmpPassword
                            Player[ClientID].X = 500
                            Player[ClientID].Y = 500
                            Player[ClientID].Angle = 0
                            Player[ClientID].JoystickX = 0
                            Player[ClientID].JoystickY = 0
                            Player[ClientID].Active = 1
                            Player[ClientID].InGame=0
                            Player[ClientID].Ready = 0
                            Player[ClientID].LastPacket = Timer()
                            //Save the Player File
                            SavePlayer(ClientID)
                            //Upgrade the number of players
                            NumPlayers = ClientID
                            //Send the Info the User with Current Players!
                            newMsg = CreateNetworkMessage()
                            AddNetworkMessageFloat(newMsg, 1.1)
                            AddNetworkMessageInteger(newMsg, ClientID)
                            AddNetworkMessageInteger(newMsg, NumPlayers)
                            AddNetworkMessageInteger(newMsg, Player[ClientID].X)
                            AddNetworkMessageInteger(newMsg, Player[ClientID].Y)
                            SendNetworkMessage(INetID, ClientID, newMsg)
                            //Send the Login to Everyone!
                            SendPlayerToAll(ClientID)
                            //Send all the Players to the client!
                            SendPlayersToClient(ClientID)
                            DeleteNetworkMessage(newMsg)
                        endif
                        strDebug = tmpName + " has been created using Client ID " + str(ClientID)
                    endif
                    // ============================================
                    // 1.2 LOGGING OUT
                    // ============================================
                    if f# = 1.2 // Handle Stopping!
                        strDebug = "Handled Log Out Packet at " + str(Timer())
                        SendPlayerLoggingOut(ClientID)
                        DeleteNetworkMessage(newMsg)
                    endif

                    // ============================================
                    // 1.5 MOVING
                    // ============================================
                    if f# = 1.5 // Handle Moving!
                        Player[ClientID].X = GetNetworkMessageInteger(msg)
                        Player[ClientID].Y = GetNetworkMessageInteger(msg)
                        Player[ClientID].Angle = GetNetworkMessageInteger(msg)
                        Player[ClientID].JoystickX = GetNetworkMessageFloat(msg)
                        Player[ClientID].JoystickY = GetNetworkMessageFloat(msg)
                        Player[ClientID].LastPacket = Timer()
                        strDebug = "Handled Moving Packet at " + str(Timer())
                        SendPlayerMoving(ClientID)
                        DeleteNetworkMessage(newMsg)
                    endif
                    // ============================================
                    // 1.6 STOPPING
                    // ============================================
                    if f# = 1.6 // Handle Stopping!
                        Player[ClientID].X = GetNetworkMessageInteger(msg)
                        Player[ClientID].Y = GetNetworkMessageInteger(msg)
                        Player[ClientID].Angle = GetNetworkMessageInteger(msg)
                        Player[ClientID].JoystickX = GetNetworkMessageFloat(msg)
                        Player[ClientID].JoystickY = GetNetworkMessageFloat(msg)
                        Player[ClientID].LastPacket = Timer()
                        strDebug = "Handled Stopping Packet at " + str(Timer())
                        SendPlayerStopping(ClientID)
                        DeleteNetworkMessage(newMsg)
                    endif

        // ============================================
                    // 1.7 Global Chat Message
                    // ============================================
                    if f# = 1.7 // Handle Chatting!
                        tmpString = GetNetworkMessageString(msg)
                        SendChatMessageToAll(ClientID,tmpString)
                        DeleteNetworkMessage(newMsg)
                        Player[ClientID].LastPacket = Timer()
                    endif

                endif

      //For now we are deleting the Network Message in Each Condition
            //DeleteNetworkMessage(msg)
        endif
    endfunction
    // ============================================
    // Main Loop
    // ============================================
    function MainLoop()
    do
        // How long has the server been running
        SecondsRunning = GetSeconds ( )
     ProcessProjectiles()

     //Call the CheckDisconnects Function
     CheckDisconnects()

     //Update Num Players if Needed!
     if GetNetworkNumClients(INetID) > NumPlayers
      NumPlayers = GetNetworkNumClients(INetID)
     endif

     //Handle Network Data
     HandleData()

     //What we are printing on screen
        print("Server Listening:")
        print("Online for: "+str(SecondsRunning)+" Seconds")
     //If we haven't received any data so far
        if ReceivedData = 0
        print("No Data Received")
        endif
     //We are Receiving Data - From what Client?
        if ReceivedData = 1
        print("Data Received from Client ID "+str(DataID))
        print(strDebug)
        endif

     //Display Number of Connections
     print(strDebug2)
     print("Num Players: " + str(NumPlayers))
     print("Num Connections: " + str(GetNetworkNumClients(iNetID)))
        Sync()
    loop

    endfunction

    // ============================================
    // Send All Players to One Client
    // ============================================
    function SendPlayersToClient(ClientID as integer)

     for i = 1 to NumPlayers
      if Player[i].Active = 1
       newMsg = CreateNetworkMessage()
       AddNetworkMessageFloat(newMsg, 2.4)
       AddNetworkMessageInteger(newMsg,NumPlayers)
       AddNetworkMessageInteger(newMsg,i)
       AddNetworkMessageString(newMsg,Player[i].Name)
       AddNetworkMessageInteger(newMsg, Player[i].X)
       AddNetworkMessageInteger(newMsg, Player[i].Y)
       SendNetworkMessage(INetID, ClientID, newMsg)
                DeleteNetworkMessage(newMsg)
      endif
     next i

    endfunction

    // ============================================
    // Send Player Has Logged In!
    // ============================================
    function SendPlayerToAll(ClientID as integer)
       NextID = GetNetworkFirstClient(INetID)

        Repeat
            //If we have a valid ID!
            if NextID <> 0
               //Send the Player to Everyone connected
                newMsg = CreateNetworkMessage()
                AddNetworkMessageFloat(newMsg, 2.4)
                AddNetworkMessageInteger(newMsg,NumPlayers)
                AddNetworkMessageInteger(newMsg, ClientID)
                AddNetworkMessageString(newMsg, Player[ClientID].Name)
                AddNetworkMessageInteger(newMsg, Player[ClientID].X)
                AddNetworkMessageInteger(newMsg, Player[ClientID].Y)
                SendNetworkMessage(INetID, NextID, newMsg)
                DeleteNetworkMessage(newMsg)
            endif
        NextID = GetNetworkNextClient(INetID)
        Until NextID = 0
    endfunction

    // ============================================
    // Send Player Moving
    // ============================================
    function SendPlayerMoving(ClientID as integer)
        NextID = GetNetworkFirstClient(INetID)
        Repeat
            //If we have a valid ID!
            if NextID <> 0
               //Send the Moving Packet
                newMsg = CreateNetworkMessage()
                AddNetworkMessageFloat(newMsg, 2.2)
                AddNetworkMessageInteger(newMsg, ClientID)
                AddNetworkMessageInteger(newMsg, Player[ClientID].X)
                AddNetworkMessageInteger(newMsg, Player[ClientID].Y)
                AddNetworkMessageInteger(newMsg, Player[ClientID].Angle)
                AddNetworkMessageFloat(newMsg, Player[ClientID].JoystickX)
                AddNetworkMessageFloat(newMsg, Player[ClientID].JoystickY)
                SendNetworkMessage(INetID, NextID, newMsg)
                DeleteNetworkMessage(newMsg)
            endif
        NextID = GetNetworkNextClient(INetID)
        Until NextID = 0
    endfunction

    // ============================================
    // Send Player Stopping
    // ============================================
    function SendPlayerStopping(ClientID as integer)
     NextID = GetNetworkFirstClient(INetID)
        Repeat
            //If we have a valid ID!
            if NextID <> 0
               //Send the Stopping Packet
                newMsg = CreateNetworkMessage()
                AddNetworkMessageFloat(newMsg, 2.3)
                AddNetworkMessageInteger(newMsg, ClientID)
                AddNetworkMessageInteger(newMsg, Player[ClientID].X)
                AddNetworkMessageInteger(newMsg, Player[ClientID].Y)
                AddNetworkMessageInteger(newMsg, Player[ClientID].Angle)
                AddNetworkMessageFloat(newMsg, Player[ClientID].JoystickX)
                AddNetworkMessageFloat(newMsg, Player[ClientID].JoystickY)
                SendNetworkMessage(INetID, NextID, newMsg)
                DeleteNetworkMessage(newMsg)
            endif
        NextID = GetNetworkNextClient(INetID)
        Until NextID = 0

    endfunction

    // ============================================
    // Save Player
    // ============================================
    function SavePlayer(ClientID as integer)
        tmpName = Player[ClientID].Name
        FileName = tmpName + ".txt"
            //Save the Player Data File
            PlayerFile = OpenToWrite(FileName, 0)
            WriteString(PlayerFile,tmpName)
            WriteString(PlayerFile,tmpPassword)
            //Default X/Y for Player
            WriteInteger(PlayerFile,Player[ClientID].X)
            WriteInteger(PlayerFile,Player[ClientID].Y)
            //Default Angle for Player
            WriteInteger(PlayerFile,0)
            //Default Joystick XY for Player
            WriteFloat(PlayerFile,0)
            WriteFloat(PlayerFile,0)
            //Close the PlayerFile
            CloseFile(PlayerFile)

    endfunction

    // ============================================
    // Load Player
    // ============================================
    function LoadPlayer(ClientID as integer)

     FileName = Player[ClientID].Name + ".txt"
     strDebug2 = "Opening File " + FileName
        //The account exists!
        if GetFileExists(FileName) = 1
           PlayerFile = OpenToRead(FileName)
           strName = ReadString(PlayerFile)
           strPassword = ReadString(PlayerFile)
            //If we have the right login credentials, let's login!
            if tmpPassword = strPassword
               //Set the Player Data!
               Player[ClientID].Name = strName
               Player[ClientID].Password = strPassword
               Player[ClientID].X = ReadInteger(PlayerFile)
               Player[ClientID].Y = ReadInteger(PlayerFile)
               Player[ClientID].Angle = ReadInteger(PlayerFile)
               Player[ClientID].JoystickX = ReadFloat(PlayerFile)
               Player[ClientID].JoystickY = ReadFloat(PlayerFile)
               Player[ClientID].Active = 1
               strDebug2 = "Loaded " + Player[ClientID].Name
               CloseFile(PlayerFile)
           endif
        endif
    endfunction

    // ===========================================
    // Send Disconnect to everyone connected
    // ===========================================
    function SendDisconnectToAll(ClientID as integer)
     //The Disconnect Flag is used to take us out of the loop if they've already been disconnected'
     // Disconnected = 0 - Connected
     // Disconnected = 1 - Logging Out
     // Disconnected = 2 - Timed Out
     // Disconnected = 3 - Disconnected
     if Player[ClientID].Disconnected < 3
      NextID = GetNetworkFirstClient(INetID)
      Repeat
        //If we have a valid ID!
       if NextID <> 0  
          //Send the Player to Everyone connected
        newMsg = CreateNetworkMessage()
        AddNetworkMessageFloat(newMsg, 2.6)
        AddNetworkMessageInteger(newMsg, ClientID)
        SendNetworkMessage(INetID, NextID, newMsg)
        DeleteNetworkMessage(newMsg)
       endif
      NextID = GetNetworkNextClient(INetID)

      Until NextID = 0
      //Set their Disconnected Flag
      Player[ClientID].Disconnected = 3

        endif
    endfunction

    // ===========================================
    // Send the Login Message to Everyone
    // ===========================================
    function SendLoginMessageToAll(ClientID as integer)
     NextID = GetNetworkFirstClient(INetID)
     tmpString = Player[ClientID].Name + " has connected!"
        Repeat
            //If we have a valid ID!
            if NextID <> 0
               //Send the Player to Everyone connected
                newMsg = CreateNetworkMessage()
                AddNetworkMessageFloat(newMsg, 2.8)
       AddNetworkMessageString(newMsg, tmpString)
       AddNetworkMessageInteger(newMsg,0)
       AddNetworkMessageInteger(newMsg,255)
       AddNetworkMessageInteger(newMsg,0)
                SendNetworkMessage(INetID, NextID, newMsg)
                DeleteNetworkMessage(newMsg)
            endif
        NextID = GetNetworkNextClient(INetID)
        Until NextID = 0
    endfunction

    // ===========================================
    // In-Game Chat Message
    // ===========================================
    function SendChatMessageToAll(ClientID as Integer, ChatMessage as String)
     NextID = GetNetworkFirstClient(INetID)
     tmpString = Player[ClientID].Name + ": " + ChatMessage
        Repeat
            //If we have a valid ID!
            if NextID <> 0
               //Send the Message to Everyone
                newMsg = CreateNetworkMessage()
                AddNetworkMessageFloat(newMsg, 2.8)
       AddNetworkMessageString(newMsg, tmpString)
       AddNetworkMessageInteger(newMsg,255)
       AddNetworkMessageInteger(newMsg,255)
       AddNetworkMessageInteger(newMsg,255)
                SendNetworkMessage(INetID, NextID, newMsg)
                DeleteNetworkMessage(newMsg)
            endif
        NextID = GetNetworkNextClient(INetID)
        Until NextID = 0
    endfunction

    [/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
    ```
  9. Arguing aside, I've always been a HUGE fan of Eclipse Worlds. To date it's probably the best custom version out there in regards to "features" and the rendering changes are spectacular.

    EVB is an amazing base, neatly coded, and very well optimized, but lacks features and newer technology that is found in EW.

    You can't compare EW and EVB, it's like comparing Apples and Oranges.
  10. I think there's definitely a lot of valid points to be said for all arguments in this thread.

    So I'll simply say a few things on my mind.

    Eclipse needs to be viewed in two ways, the Engine, and the Community. In my opinion, the community should be renamed something else, because the Community, in reality, doesn't use the Eclipse engine much these days, the community is an indie developer forum.

    **The Engine:**

    The current Eclipse Origins engine is built on dated technology. This is why Dr. Yukiro has selected a few members to draft and create a new engine with current technology to bring Eclipse into this decade. The old engine, Eclipse Origins 4, has become my love child project for the time being. I will be updating Eclipse Origins 4.3 and onwards until the team has released the new engine, and then support for Eclipse Origins will no longer be available. We will continue to allow people custom versions on the forum. Eclipse Origins 4.3 and maybe 4.4 will remain closed source for a while, but 4.5 (milestone) will once again become Open-Sourced and available to everyone.

    **The Community:**

    For years, the community was based upon the engine, everyone was using some variant of Eclipse or something similar to create their games. So chatter was focused a lot game design, concepts, etc. We've evolved and many of the community members have grown up, gone to college and are now working professionals. The existing community has changed from a bunch of kids wanting to make the next big MMO, to a bunch of teens or adults, who now understand game development, are venturing out onto other platforms for development. This is OK, Change is OK.  We shouldn't be stifling the competition and banning people who are creating similar projects but instead encourage them, offer them support, link to their engine and hopefully they will link back to ours. It's the only way to succeed as indies!  Everyone also needs to put ego's aside. Even though you are all older now and realize the limitations of Visual Basic etc, we still get kids on the forums who DO want to make the next big MMO and think that Eclipse Origins is going to do that for them. Let them have that pipe dream. It's what got YOU and kept YOU here. Don't rain on someone else's parade by telling them what they can't do, because you now know better! You started at this exact same location. Let them use Eclipse Origins, help them with their projects. Eventually they will become pillars of the community as well and realize there are other alternatives out there.

    /EndRant
  11. Hey Everyone,

    I'm taking over the Eclipse Origins development (VB6).  There are other things in the works that Dr. Yukiro I'm sure will announce in the coming days.

    As for what you can expect with Eclipse Origins, as Dr. Yukiro has stated we are moving away from the Gold/Silver licensing system and moving to a free-closed-source version for the time being. Yes, eventually when I clean up the source and am comfortable with the documentation as I plan to work on some nice detailed help documents, it will go Open-Source at some point.

    In the mean time Eclipse Origins 4.3 will be closed source but free!  We will still offer VPS hosting for a cost if you want your game hosted on our machine.

    More information will come from myself in the coming days!

    Hope to serve you all well!
  12. You'd have the Tweak places where it calls "RenderTexture" to adjust the destination width and height to 64x64 in other places as well, not just in DrawMapTile, it was just an example.

    I'm not entirely sure I follow your issue though Sherwin? I've never run into an issue where rendering into a source plane 2x the size has given me the artefact border unless I'm trying to stretch an that wasn't initially to the power of 2, or putting it into a surface that isn't to a power of 2?
  13. SherwiN is right, it's not really a "zoom" you simply render the texture into a larger surface size than the images actual dimensions.

    If you look at your Sub DrawMapTIle you'll find

    RenderTexture Tex_Tileset(.layer(I).Tileset), ConvertMapX(X * PIC_X), ConvertMapY(Y * PIC_Y), .layer(I).X * 32, .layer(I).Y * 32, 32, 32, 32, 32, -1

    Without testing it, this "should" work RenderTexture Tex_Tileset(.layer(I).Tileset), ConvertMapX(X * PIC_X), ConvertMapY(Y * PIC_Y), .layer(I).X * 32, .layer(I).Y * 32, 64, 64, 32, 32, -1

    Render Texture uses the variables (ByRef TextureRec As DX8TextureRec, ByVal dX As Single, ByVal dY As Single, ByVal sx As Single, ByVal sy As Single, ByVal dWidth As Single, ByVal dHeight As Single, ByVal sWidth As Single, ByVal sHeight As Single, Optional color As Long = -1, Optional ByVal Degrees As Single = 0), so you want to change the Destination With and Destination Height (dWidth and dHeight)
  14. Spork! Spike! I still have naughty pictures of you from your Broadcast a few Christmas' ago!

    How are things going? Drop me a line! I may have stumbled upon a project of yours that intrigues the bejesus out of me!
×
×
  • Create New...