Welcome, Guest! Login | Register
Oh look what i did
Info
Report
348 Posts

yeah it is what it looks like.
No more details yet as its under construction still.
And things will change i'm sure.
Created on: 3 months ago
Edited on: 3 months ago
Info
Report
201 Posts

So you are actually working on it...Damn it me
Created on: 3 months ago
Info
Report
41 Posts

Hi Tin looks interesting
I saw once online a script that was to control players in  a foot ball game. I will keep a look out for it.

ps. I remember were I saw it was the Mat Buckland book on 'Ai. 'Programing game Ai by example'

n_iron
Created on: 3 months ago
Edited on: 3 months ago
Info
Report
348 Posts

There are no AI planned for the game, but i'm open to what ever you find.
Created on: 3 months ago
Info
Report
277 Posts

If there are no AI, then who are we fighting against? Is it going to be MP?
Created on: 3 months ago
Info
Report
201 Posts

@tinsoldier I had a feeling in the back of my head that I shouldn't have shown you TorqueBall, but here you go now
I hope you can form a better game out of it than me :P
Created on: 3 months ago
Info
Report
348 Posts

@powersupersport Yes it's going to be 8 player MP

@doomer022 well its going to be very basic, which is what i planned it to be, soooo we'll see.

As they say go big or go home....
Created on: 3 months ago
Edited on: 3 months ago
Info
Report
277 Posts

Are you sure you wanna go this way? Remember that 3D Rad doesn't have NAT punchthrough for networking, therefore you'd need to have a dedicated server/relay with a public IP address for everyone to connect to. Otherwise, it'd be impossible.

Please, seriously reconsider the multiplayer part of this game before starting work on the networking. It's already hard in Unity and is not any easier in 3D Rad. Even if you do manage it, there's still that NAT problem, which you can't do anything about as the API is too limited for anything to be done.
Created on: 3 months ago
Edited on: 3 months ago
Info
Report
348 Posts

@powersupersport  I'm fully aware of how to setup the networking and port forwarding, puch through would be nice, but not needed in my case.
And i do plan to run a dedicated server. I'm not sure if i plan to allow others to run servers yet.. it's a basic game, and probably wont see much use soooo.

EDIT: And to the public IP, not exactly cause i can also use a redirecting service that prevents me having to expose my IP and even allows my IP to change without causing problems.

But thats probably not required here.
Created on: 3 months ago
Edited on: 3 months ago
Info
Report
277 Posts

@tinsoldier, Fair points, but manual port forwarding doesn't always work due to how the ISP infrastructure works. Your forwarded port doesn't always match the port that is coming out with your public IP address.

It's not about if the game is meant to have much use. In the end, you're making an MP game. You do want at least some satisfaction by playing with someone. The frustration is real when trying to figure out why players are unable to connect.

Anyway, if the port forwarding does work though, then most of the problems are gone. So if you nail this one, props to you


Good luck!
Created on: 3 months ago
Edited on: 3 months ago
Info
Report
348 Posts

I'm working on the CBB (CarBall Battle) project right now which is coming along nicely. I'm basically using CBB as a development process for the Multi-player parts that will be added to the tank project too.  Also a little info on the CBB project, i realized that using a pcar to ram the ball and have it head towards the opponents goal will be quiet hard, sooo, i created a helper utility, that is basically  a force object that gets triggered to push the ball towards your opponents goal when struck.  It wont be a case of the helper scoring a goal for you, it's just a short time force to "help" the ball head in the proper direction. I'm not going to explain it in any more detail, its up to the players to figure it out and use it in the best way to get the best results in game, you will only know about it, when you see the ball possibly turning itself, and it can even cause the ball to stop and go into reverse so to speak. This project will be fun, it will be a timed 10 minute sessions and the wining team will be decided by total team goals. Team selection is automatic, you don't get to decide who plays with who, the player positions are filled in a flip flop way, that means red side first, then blue then red then blue, till all 8 positions are filled. there will be a spectator mode ( a free flying cam ) that can move anywhere in game.
There is a "ready" to play system in place for each player. players can come and go in game, there are no usernames for you in game, you are assigned simply player1 to player8 and a special host pcar that can allow me to pop in and out of a game and has a white buggycar body.. if i join with the host car i wont be a team member, just an observer in game, if and when needed. Most of the time, if i join i'll be a normal anonymous client pcar in game just like you. No chat is added in the project, i suggest if you wanna chat, you do so with discord, so its up to you if you want everyone or just team members server chats. No scoring will be stored either as no usernames are registered or required to play, its totally anonymous fun 10 minute matches.

If you want chat for CBB you can use this discord server https://discord.gg/f6Dgafc

There's two ways to use a discord server link.
#1 just click it in this message and it will open discord in your browser.
#2 copy and paste in any discord app chat box.
Created on: 3 months ago
Edited on: 3 months ago
Info
Report
100 Posts

Quote from: Power Supersport

@tinsoldier, Fair points, but manual port forwarding doesn't always work due to how the ISP infrastructure works. Your forwarded port doesn't always match the port that is coming out with your public IP address.

It's not about if the game is meant to have much use. In the end, you're making an MP game. You do want at least some satisfaction by playing with someone. The frustration is real when trying to figure out why players are unable to connect.

Anyway, if the port forwarding does work though, then most of the problems are gone. So if you nail this one, props to you


Good luck!

Networking in 3D Rad isn't that hard to code. You just have few functions and that's all.
Some ISPs (like mine for example) allow you to open your ports if you `activate your Static IP` (in my case, it's 1 €/m ).
Created on: 3 months ago
Info
Report
277 Posts

Oh, @athanatos, should I even start... and where do I start from...

First off, maybe the problem is exactly that 3D Rad has too few functions. You can technically only send a string and an array of floats, whilst a better and more versatile generic approach would be to send bytes instead. At least with bytes you can kind of figure out how to encode stuff.

And yeah, some ISP-s do in fact offer a static IP and it's not always as cheap as in your case. That's not the point though. Why would anyone want to go through the pain of manually opening ports, even more - pay for a static IP just to play a game. Most people don't even know the difference.

It goes even worse than that. You can't even extend the freaking thing. I was looking at the script reference just to see if I can experiment linking my custom MP library to 3D Rad and trying to make a simple MP game with punchthrough and everything. And apparently you can't even do that because that haunted cursed array of floats is following you everywhere, even in the way you call a DLL function with arguments (yes, you can only pass floats in a DLL function and you know it better than me).

So yeah. If it was easy, then we would've seen lots of MP projects in 3D Rad. I am saying projects, not complete games. We have seen mostly no projects and absolutely no complete games.

Keep in mind I've also tried MP in 3D Rad.
Created on: 3 months ago
Info
Report
100 Posts

My argument was that networking in 3D Rad is easy to implement, given these few functions... But I didn't mean  by `easier` better in a general way. We all know how bad 3D Rad is compared to other modern-day engines.

Yeah, gotta agree, the way 3D Rad passes parameters to user-made Dlls is awful. Passing parameters by files? Did this one, say good night to your performance, since the fact that 3D Rad enjoys eating your RAM isn't enough.

But it isn't entirely 3D Rad's fault. Since you cant really specify at runtime the types and numbers of paramenters of a function pointer. And since loading Dlls happends at a low level language like C++ , and you can't compile C++ code at runtime, like you would do with C#, Lua, Squirreil, et cetera...

I had trouble in a function that uses 2 string parameters, (that's the MSGBOX in my 3DRadExtender dll) because I kinda misaglined one of the buffers (char*). See :https://github.com/NicusorN5/3D_Rad_Extender_Lib/wiki/MSGBOX

For 3D Rad performance: It might be the object's fault, how they are loaded and unloaded. (<-- INSERT press x to doubt IMAGE xd)
They are kept on the disk/files (whatever) as separate dynamic link libraries. Of course the entire dll isn't loaded into the random access memory, instead they're mapped and sections of it are loaded. The loaded dll size can get bigger tham the dll's size in the hard drive if it uses dynamic allocation.

Now, I don't have the necesarry software reverse engineering pr0 1337 h4ckerman skills, but I can make guesses and assumptions about this topic.

As I seen before from an other post in this forum, if 3D Rad object can be overflowed, than means they are stored on a array.
In the case of a List, if too much memory is used the program will simply crash, and it doesnt depend if you use a list or anything else, it's the quantity of memory you use.

As a proof, compile this code using a lightweight IDE like Code::Blocks or Dev C++ and keep looking at Task Manager :
void FillMemory()
{
    uint64_t* a; //Create a 64 bit unsigned pointer.
    a = new uint64_t; //Allocate a new 64bit integer variable in the memory.
    if(a != 0x0)*a = 1; //Use the integer a little because why not?

//Unfortunately program will throw a 0xC0000005 if there's no more remaining memory. :(

//We do not delete the variable after because we actually want memory leaks :D
}

From https://github.com/NicusorN5/CPP-Memory-Overflower/blob/master/memory_overflow.h .

(Please if there's anyone with better programming experience, etc, correct me if I'm wrong, since this is a long post and it's 1:27 AM (at the time I'm writing this) )
Created on: 3 months ago
Edited on: 3 months ago
Info
Report
277 Posts

C++ has never been my strength though, so I won't comment much on that.

But yeah, thanks for the info on DLL-s in 3D Rad anyway. Now I understand your point on the networking. We can call this a day now
.
Created on: 3 months ago
Info
Report
201 Posts

If you want to implement server hosting, try opting for a Port Forwarding technique. Really simple solution, just make it so that the port is customizable.
Created on: 3 months ago
Info
Report
348 Posts

you guys... as a server i'm the only one that needs to open ports, clients don't need to open ports

If your 3drad client wont work due to ports, thats an ISP issue.. nothing i can do about that except to tell you to open the port 3drad is using.
Created on: 3 months ago
Info
Report
100 Posts

Quote from: TinSoldier

you guys... as a server i'm the only one that needs to open ports, clients don't need to open ports

If your 3drad client wont work due to ports, thats an ISP issue.. nothing i can do about that except to tell you to open the port 3drad is using.

Well, I did not mean that, and I guess nobody else. Can you quote the persons that said that?

Also, today games support dedicated server, and methods that allow hosting without the struggle to open your ports (UPnp, NAT Punchtrough as 2 examples)
Created on: 3 months ago
Info
Report
277 Posts

@athanatos, indeed, the best solution to MP games is a dedicated server as there is almost 100% guarantee that players will be able to connect. The drawback is that it can be hard to set up in an automated way, and can also be costly for just getting started.
Created on: 3 months ago
Info
Report
348 Posts

UpDate -

So far i'm at about  90% done with the project.

Local testing is showing that car soccer is quiet hard to hit the ball towards the goals and i suspect even harder with 3 or more players all hitting the ball too.

So i came up with a new idea that is really just a twist on game play, it will use 100% of the same project.

I just need to add a couple things.

The idea is to either convert or just add a new "Game" to the project which will be car RUGBY.

The game play will go like this..

When a player hits the ball, they become the "driver of the ball.
As the driver you basically steer the ball for your team, a little push will be added to ( about half speed of a pcar).
If your team mates hit the ball, you remain in the driver seat, and they act as support to help move you to the goal, you help by steering to the goal.

If an opposing team car hits the ball, you get kicked out of the drivers seat and reset to your starting position.

I think the more players in the game, the more team oriented it becomes.

A 2 player game would be more of a chase and hit process as each of you jump in and out of the drivers seat till the round ends.

An eight player game would allow you to drive and 3 support team members to say block other players and hit the ball etc. very team oriented type play, you could even place 1 team member as a goalie allowing 1 driver and 2 support members to help with scoring.

Any thoughts any ideas.. feel free to share !.
Created on: 2 months ago
Info
Report
348 Posts

Update #2

So things started not working ...

Seems i didnt follow the KISS ( Keep It Simple Stoopid) method.

So i have to backtrack,

Iadded everything except 1 and they didnt play well together.

So once i have the basic project working we can try a online multi-player test, then i'll add back the extra things ONE  AT A TIME and validate that works BEFORE adding in the other parts..

I wanted to keep this super simple, but ... got ideas for other things and now the project wont be so simple when complete... is that a good thing or a bad thing ? ......
Created on: 2 months ago
Info
Report
348 Posts

So i've been playing with a process to use sprites as a player indicator, with 3 modes for each player, Online - Ready - Waiting.
The idea was to use inetarray to share this status, but i was getting mixed results, where in my CBB project, the inetarray just refused to work online and even locally, has been driving me crazy for a couple months trying to get this to work.
So i created other projects just to test the inetarray, and these worked, but.. still no go in CBB.
So i've given up using the inetarray, i believe there is a specific setup required in project for the array to work properly and if any thing is out of order the array fails.... this isn't documented in 3drads help files, it seems to be a hit & miss setup process.

So now i figured out a different process, that is to use the networked skinmesh to indicate players status like this -
semi transparent = off-line
Yellow carbody = waiting to play
normal carbody team color ( Red or LightBlue ) = ready to play

So thats what i'm setting up right now & will be testing that.

Then i can continue with the other little things in project, like the time keeper & scoring, resetting the round for the next round.

Most of this has been setup already, just need to finish and test ...

While i was taking a brake / rest from the CBB issue i just mentioned. i got the idea to go back to an earlier plane project, basically a multi-player air combat project, with a little island city as the war zone.
Some features, it has mouse flying control with the option to swap both up/down & Left/Right mouse controls.... i originally included the option to swap key-inputs too, but realized that the player can swap keyinput using the configure controls so i removed my key swap scripting.

Its quite fun to fly the plane using the mouse
( i'm using the included C192 plane and will add modes to it as needed)

Now i need to add Guns to the airplane mesh and some weapon script and the project will be well on its way to a airplane war project.
I considered adding missals with auto tracking... i'll probably keep that as an upgrade.

Also there will be a radar to locate players and there wont be teams, its you against everyone else.
( air wars is a blast from the past for me, many years ago i played an air combat project of this type, probably windows was at v3.1 and the game ran in DOS.  It was a ton of fun and used dial up modems, cause the internet wasn't available yet to the mass's )

So airwars and CBB and another tank warfair project are the 3 main things i've got in the works right now.

As too the netarray issue... way back jestermon created a networked car project.. i think it was a programming exercise for her cause she didnt use the inetarray to sync the cars, but instead used the inetstring array instead. while it works, her project was laggy as hell, i assume maybe the string conversions weren't the fastest or best idea or maybe she too saw issues with the i netfloatarray just as i'm seeing.
Created on: 3 weeks ago
Edited on: 3 weeks ago
Info
Report
154 Posts

Wow!! You have been busy!! All the best man. Atleast you seem to have gotten the multiplayer to work. Well done.
Created on: 3 weeks ago
Info
Report
348 Posts

@kulu The multiplayer isnt a issue, i have many other networked projects that all worked fine.
There is one i called a POC (proof of concept) project which allowed 8 players and the POC part was the players didn't need to disconnect and reconnect to change players in the game.

You see in 3drads default design, players connect & disconnect to be assigned a playerID.
I instead used rerouting of player input to the selected player inputs, so each player only needed to select which player to play from any unselected, then the project continues as normal.

I shared that project source code, all though i forget if i shared on this forum or possibly one of 2 others that have since closed down.

I have no plans to use the POC process  with any current projects in the works, for me it was just a " see if it would work" and it did.
Created on: 3 weeks ago
Edited on: 3 weeks ago
Info
Report
154 Posts

Thats awsome Tinsoldier!! I would love to do a multiplayer version of zeroxgen if possible. I also had been working on a first person shooter with GH Games. I would love to do a multiplayer of that as well.
Created on: 2 weeks ago
Sponsored