Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

What are you working on? (Game Making Thread)

I know I always flit between projects, but I really think I might be onto something this time...

I have a log in scene, using sessions. I have timeouts for inactivity. I have players sorted into maps, which the game draws a list from, creates events for, and moves around accordingly. (Two lines to fix tomorrow and it'll be done, forgot to update something).

It's a super lightweight online system, but it's going to be robust at the same time once I fill out all the error handling side of things. Chat is going to be an issue though. I'm hoping I can get my irc script working, maybe. Either that or chat will be slow. It's state based so not ideally suited for chat.

After that, I can turn it into a proper game. I'm not worried about people hacking this time around, as that is what held vengeance back. People are going to cheat, it's going to happen. I just need to make the authentication side of things solid and worry about checking for cheats later. I'm not worried about people fucking with maps and the database or adding gold to their account. Not for now, anyway.

Essentially all I'm making is rpg maker + online, it's not a server side shindig much. And it's much more lightweight than running a game server like netplay. Sort of. I think.

I'm probably talking crap, I'm just happy to have solved several things today that I spent years on in the past.

Will see how this goes, anyway.
 
I can tell you now that it won't be more lightweight than running a game server! Web requests are huge, TCP is slow and PHP is an on-request pre-processor, multiple connections doing live-updating can quickly burn up the web server (DDOS would occur).
Push it as hard as you can and see how well it performs for interests sake, but don't try to make a real-time RPG on a web-server, things like item and login servers are fine as the requests for those things should be once in a while, not once every 16 milliseconds.

I'd love to tackle multiplayer RPG Maker games again, really don't have the time right now and network technology is no-longer in scope of what I'm doing, but it's something I'd really love to do. Making an open RPG game server platform that plugs into different engines, such as RPG Maker XP/VX/VXA would be super cool.

I once started an IRC client to test out my network library, didn't get very far with it, but that's something I'd like to see done in RPG Maker, could make for some interesting games. Like Role-Play chat but with actual persistent characters and visual locations, that would be awesome.



Added a .json cube mesh format loading thing, so I can do Minecraft characters;
RQmhysK.png


Looks pretty fantastic. If I were to start prototyping a 3D RPG game I'd probably start off with Minecraft characters as they are freaking easy to skin.
 
Princess Amy":3v7b814d said:
Ah. Damn.

Theoretically speaking, would once per second / few seconds be likely to ddos?
How many seconds do you spend on a webpage before you click? Because we're likely to spend 30+ seconds on a webpage with heavy content it's harder to DDOS a web-server. Imagine spending 16ms on a page, that's faster than human reaction time (70ms), you'd be sending hundreds of requests to a PHP server just to tell it I'm moving around, I've opened menu, I'm facing this direction, etc.
The HTTP request is raw-string and it inflate too, so your request will inflate to a reply that is 10x in size (And usually chunked across many TCP packets, adding delay), doing that every frame for a live update would be insane, the requests would pile up on the server, the replies will take longer and longer to come and by that time the data is incorrect and stale so would need discarding.

You would have to add a limit such as pull player data every 5-10 seconds, which would have a weird effect of everything freezing while your guy moves around and then the update comes and they all slide across the screen to their intended positions, you could interpolate that by sending the path data to the client, but that would increase the size of the reply tremendously.

What makes game servers different is that they queue and discard data on the fly, a web server can't discard a request if a newer one comes in, and because it's TCP it must guarantee that the first request gets through before the second request, so you can't even discard on client-side.

Game-servers will also stay away from using raw-string and will also have fixed packet sizes to stop the problem of replies over-inflating and have clever tricks to compensate for laggy players and to do batch-updates and send segmented data over-time in between other packets (So movement path information can be built over 15 frames while items/direction facing/whatever information is updated).

The best thing for game network tech is to send lots of small data in large UDP packets, web servers send large data across many TCP packets, so the opposite of what's best for real-time games.

EDIT: To answer your question directly, it will still DDOS eventually, the TCP protocol really does take ages to send and reply, you'll need more than a second between requests depending on how laggy the players are, so someone in Australia will need a ridiculous 30+ seconds between packets, someone next-door to the server would need 0.5 seconds between packets (Which is still a long time).
It will be more efficient to do a game server for real-time stuff, leave the web-server for static content like inventories and logins.
 
Lots of stuff going on that intersects greatly with my skills! So I must say something.

Let's start with DDoS: it stands for Distributed Denial of Service attack, and that means botnet. If you just mean a single client bringing down the server with too many requests, that would be DoS (only one D because it's not distributed).

TCP is slower than UDP, yes, but doing it over HTTP at all is much worse. The benefits are that existing libraries exist (but not in RPG Maker) and there is a lot of common caching infrastructure all over the internet to make HTTP faster (but it won't for user-specific content because it's not cacheable).

Interacting with sockets directly in RGSS is probably much easier than trying to use Windows HTTP with Win32API. And even if you want to just do HTTP anyway, it's surprisingly easy to implement a simple HTTP request: see this PHP implementation.

I've actually looked through a lot of the Netplay+ 2 source code myself. It's surprisingly lightweight. Most of it is implementing game-specific commands to keep the server in sync with your character. I don't recall there being any security against cheating. Unfortunately if you don't want players to cheat, anything that they have to earn has to have the "earning" condition baked into the server somehow so the server can say "oh, I see you've met the obligations, let's give you the reward" instead of "you claim you earned this, so here you go".

I would recommend going through the Netplay source code if you're into this sort of thing. There are many ways it could have been done better in my opinion, but honestly you will just get so much farther if you claim the source code as your own and start modifying it rather than reinventing it or using it as-is.



But wait! There's more!

Somebody's already cracked the RMXP encryption at least. I forget what the algorithm was or who did it. As for Zlib, that's a part of Ruby that does GZip. Actually it's very useful for making PNGs.


And @Xilef! Holy gourads! The military people in your lighting demo look like Nintendo 64 but with...bloom shaders? And much better shadows? It's probably poor texture resolution, blocky models, and way too much specular highlights.
 
rey meustrus":21x240cq said:
And @Xilef! Holy gourads! The military people in your lighting demo look like Nintendo 64 but with...bloom shaders? And much better shadows? It's probably poor texture resolution, blocky models, and way too much specular highlights.
They are from Quake III, a game made 14 years ago XD

N64 wouldn't have been able to handle these models, trust me.
 
So I know that the project is doomed to failure, but carried on and completed it. Not going to release it because it's unplayable without a web server and I don't want to do that just to show off a thing, but anyway, it works. I used pathfinding so that while the game only updates the player array every few seconds, players are always moving... events just carry on moving until they reach their correct x and y, on each update getting a new x and y.

Not very practical, and not feasible for an MMORPG. But it works and that's enough for this project. Just want to feel like I've accomplished something.

So scrapping that and scrapping players walking around.

However, it's not all to no avail, as creating a game which is a full RPG Maker title that just has a few one off net connections would still be worthwhile, I think. It would be Afar++, as Afar itself doesn't show characters walking around or have any proper kind of chat system. Afar, even, is more resource intensive as everything is done server side.

Basically I'm planning potentially a new project based on Afar and this online system I made. It'll work.

There won't be other players walking around, that's a pointless thing in most MMORPGs anyway to be honest. But world events will be structured around what other players are doing or have done. The game will auto-update with frequent releases. There will be a central database of players.

OK, it will be hackable. But I think I can do it in such a way that that doesn't matter. I think, as rey meustrus suggested, some things could be done in such a way that the server can ask "could you have done this?" as well as just "have you done this?".

Er, probably a shit post, but I'll work on my concept better and explain it better later. It does make sense and is feasible rather than the silly idea I was working with.

Essentially, think an RPG Maker game that every now and then sends and receives data from a server to shape the world you're playing in.

It does make sense. I keep saying that because I'm trying to convince myself it does.

First step will be to make a client with authentication, simple forward and back commands, and an auto-updater. I will make it as solid as possible, for any useful definition of solid. Only once that's done will I ever start work on the game itself, because that's where all my online games have fallen apart before.

I will not be making or working with an online system properly, not for now, because even though I am sure I could make a workable game server, I know from past experience how much of my time it would take up, and I know I would end up making a server... and not a game. Just managing the server would take up any time I'd be spending working on the game.

Anyway, it will work, and I'll work on a proper concept and design.

I'll also try and get IRC working in-game because I think that's a good compromise between the two systems.
 

Jason

Awesome Bro

Princess Amy":1cpotj8m said:
There won't be other players walking around, that's a pointless thing in most MMORPGs anyway to be honest.

... I'm sorry, but this is the most retarded thing I've ever heard anyone say about an MMO.
 

Jason

Awesome Bro

MMO, massively multiplayer online.

Multiplayer meaning multiple players.

If there aren't other players around for you to play with, it's hardly a multiplayer game at all, it's more of a singleplayer game that requires an internet connection to submit a highscore but calls itself multiplayer, like games that are like "SUPER DUPER MULTIPLAYER FEATURES, BEAT YOUR FRIENDS ON THE HIGH SCORE TABLES!" when the game is entirely singleplayer and no one else is there.
 
I think I've poorly explained what makes it multiplayer, but it'll make more sense when I put up a proper concept thread.

It won't just be a high score. It will be a multiplayer experience, you just won't have other players walking on the screen taking up resources. I do think that in some mmos they don't need to be there. Much of runescape for example would actually work better if the players had no sprites, it would lag way less.

I'm not saying it would be the same kind of game as a cooperative dungeon running thing, of course, if anything it's a different genre.

It'll make more sense when I flesh this out.
 
List of currently online people.

Role-play chat rooms manage pretty well without any graphics at all simply by having player list of who is in the room/field/zone with you.
 
We make our own room using a 20x15 map (according to regulations), everyone using the same tileset. Upload this to our profile, along with an customised message.

Visit people's virtual rooms and talk to them.
 

Sauk

Sponsor

I just writ up the concept for the creation of the gods, the universe, planets, and all things on earth for one of my side projects. I think it turned out really good, too.
 
Jason":3rjmwt9v said:
... How would you trade in Runescape and do PvP and get help from other people, if they weren't there?
Most trade in rs happens through the grand exchange nowadays. P2p trade could be implemented via a website. As for pvp, that's one that can't be implemented fully, but I do have lots of ideas to explore regarding it.
 
Creating a merged tileset using all the tiles from the RMXP RTP. Even if I don't end up using it as a tileset, having a file with tiles in with no repeats would be a good thing anyway just to have lying around. There's so much repetition in the tiles.

A replacement for Erk's Ultimate Exteriors and Ultimate Interiors. They had several problems:

- a few glaring errors rendering a lot of important tiles unusable (1px out)
- repetition! The same tiles feature many times
- split into two tilesets, when a lot of tiles are both "in" and "out" worthy
- lots of tiles missing, there are many tree variations in the RTP that were missed for example
 
Ruby interpreter.

I have a C++ class that allows Ruby objects to register themselves for updating, so you can subscribe the update functions of Ruby objects to an instance of this C++ class and call rubyManager->Run() and it will crawl the subscription list and run their update methods (If it doesn't have an update method then it won't be added to the subscription list).

This is sort of cool, means I can choose what kind of scripting paradigm I want at a later date after the API has been built.

Ruby:
class MyClass

 

    def initialize( name )

        @name = name        

        RubyManager.subscribe( self )

    end

    

    def update

        IO.print( "Name : #{@name}" )

    end

    

end

 

MyClass.new( "Hello" )

MyClass.new( "World" )

I was inspired by RGSS' SceneManager which calls a methods on the scene that's currently at the top of it's stack (Something I'd probably use for game UI).
 
I can't believe how much of the RTP I've missed by using "ultimate exteriors" tilesets that don't actually have every tile. There's so much detailing here but it's all split between tilesets. Put together it's something special.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top