Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  
Pages: 1 ... 710 711 [712] 713 714 ... 796

Author Topic: if self.isCoder(): post() #Programming Thread  (Read 890087 times)

bloop_bleep

  • Bay Watcher
    • View Profile
Re: if self.isCoder(): post() #Programming Thread
« Reply #10665 on: December 09, 2017, 01:02:22 pm »

pygame is what you're looking for if you're using Python.
Logged
Quote from: KittyTac
The closest thing Bay12 has to a flamewar is an argument over philosophy that slowly transitioned to an argument about quantum mechanics.
Quote from: thefriendlyhacker
The trick is to only make predictions semi-seriously.  That way, I don't have a 98% failure rate. I have a 98% sarcasm rate.

Putnam

  • Bay Watcher
  • DAT WIZARD
    • View Profile
Re: if self.isCoder(): post() #Programming Thread
« Reply #10666 on: December 09, 2017, 04:03:59 pm »

GameMaker is a fine 2D engine, don't let the stigma get in your way.

Godot is great.

Unity is fine.

If you have a specific genre in mind, look for a specific engine for that. There's nothing wrong with ren'py or RPG maker, as said above.

As some examples: Doki Doki Literature club uses Ren'py. Undertale is Game Maker: Studio. Hollow Knight and KSP are Unity. Yume Nikki is RPG Maker. Nothing's in Godot yet, really, but it's a fine engine in my experience.

EnigmaticHat

  • Bay Watcher
  • I vibrate, I die, I vibrate again
    • View Profile
Re: if self.isCoder(): post() #Programming Thread
« Reply #10667 on: December 09, 2017, 04:43:42 pm »

Nuclear throne was from Game Maker.  Some really successful indy titles use Unity, but people don't notice because they expect the big Unity logo at the start (which you can get rid of with a paid account, hence only unfinished games or 2$ budget games having the logo).

Heck, a whole era of games were made in Flash MX.  People look down on those but some of them were quite good.
Logged
"T-take this non-euclidean geometry, h-humanity-baka. I m-made it, but not because I l-li-l-like you or anything! I just felt s-sorry for you, b-baka."
You misspelled seance.  Are possessing Draignean?  Are you actually a ghost in the shell? You have to tell us if you are, that's the rule

Reelya

  • Bay Watcher
    • View Profile
Re: if self.isCoder(): post() #Programming Thread
« Reply #10668 on: December 09, 2017, 05:19:54 pm »

That's the thing: a tool that makes things easy to publish means that every man and his dog will be publishing stuff with it: therefore most of it will be crap. e.g. so many Unity games or Flash games suck purely because both of those let you publish *something* with next to no technical knowledge: build your scene, add things, push the publishing buttons and you have an instant "working game".

Being easy to make stuff directly translates into lots of idiots will make stuff, and this in no way indicates that the tools themselves are shit.

Doomblade187

  • Bay Watcher
  • Requires music to get through the working day.
    • View Profile
Re: if self.isCoder(): post() #Programming Thread
« Reply #10669 on: December 09, 2017, 05:38:32 pm »

Been using unity, seems suitable. Thanks.
Logged
In any case it would be a battle of critical thinking and I refuse to fight an unarmed individual.
One mustn't stare into the pathos, lest one become Pathos.

milo christiansen

  • Bay Watcher
  • Something generic here
    • View Profile
Re: if self.isCoder(): post() #Programming Thread
« Reply #10670 on: December 10, 2017, 01:44:48 pm »

Some really successful indy titles use Unity, but people don't notice because they expect the big Unity logo at the start

I can tell a unity game from a mile away, because the way they start follows a pattern. First, and icon appears on the taskbar, then (with no visual change) you can no longer click things, and finally the game opens.

Also, one glance at the game files makes it really obvious. Unity games all come with mono and some data files in a particular structure.

Anyway, if you like C# then Unity is definitely the way to go.
Logged
Rubble 8 - The most powerful modding suite in existence!
After all, coke is for furnaces, not for snorting.
You're not true dwarven royalty unless you own the complete 'Signature Collection' baby-bone bedroom set from NOKEAS

Putnam

  • Bay Watcher
  • DAT WIZARD
    • View Profile
Re: if self.isCoder(): post() #Programming Thread
« Reply #10671 on: December 10, 2017, 04:16:44 pm »

Godot also supports C# natively as of Godot 3 as well as any other language people are willing to write bindings for, but Unity has a much better learning environment right now since Godot's only supported all that for a few days.

MoonyTheHuman

  • Bay Watcher
  • I think the DEC VAX hates me.
    • View Profile
    • hellomouse
Re: if self.isCoder(): post() #Programming Thread
« Reply #10672 on: January 19, 2018, 08:56:59 am »

I'm trying to design the networking protocol for Exodus (You've probably seen the thread)

No idea how i should design it, any help? I want a good protocol for at least testing the game. A more complex protocol can come later.

McTraveller

  • Bay Watcher
  • This text isn't very personal.
    • View Profile
Re: if self.isCoder(): post() #Programming Thread
« Reply #10673 on: January 20, 2018, 11:13:55 am »

I'm trying to design the networking protocol for Exodus (You've probably seen the thread)

No idea how i should design it, any help? I want a good protocol for at least testing the game. A more complex protocol can come later.
I would read something like https://gafferongames.com/post/udp_vs_tcp/.  It is a really good series on basics.  You probably also want to look at things like how you want to handle encryption in the protocol - because you really do want to do that.
Logged
This product contains deoxyribonucleic acid which is known to the State of California to cause cancer, reproductive harm, and other health issues.

MoonyTheHuman

  • Bay Watcher
  • I think the DEC VAX hates me.
    • View Profile
    • hellomouse
Re: if self.isCoder(): post() #Programming Thread
« Reply #10674 on: January 20, 2018, 03:54:55 pm »

I'm trying to design the networking protocol for Exodus (You've probably seen the thread)

No idea how i should design it, any help? I want a good protocol for at least testing the game. A more complex protocol can come later.
I would read something like https://gafferongames.com/post/udp_vs_tcp/.  It is a really good series on basics.  You probably also want to look at things like how you want to handle encryption in the protocol - because you really do want to do that.
I'm all for encryption, but is it really necessary to encrypt anything more than the game's authentication? Encrypting map data, entity movements, and player commands seems like a waste of time.

McTraveller

  • Bay Watcher
  • This text isn't very personal.
    • View Profile
Re: if self.isCoder(): post() #Programming Thread
« Reply #10675 on: January 20, 2018, 04:48:02 pm »

Depends on how cheat-proof you want it, mostly.  It avoids man-in-the-middle issues too.  If you only encrypt the auth, any old computer can jump into the middle of the data stream after that and muck up the data for any given client; you really want to try and minimize that.
Logged
This product contains deoxyribonucleic acid which is known to the State of California to cause cancer, reproductive harm, and other health issues.

EnigmaticHat

  • Bay Watcher
  • I vibrate, I die, I vibrate again
    • View Profile
Re: if self.isCoder(): post() #Programming Thread
« Reply #10676 on: January 20, 2018, 05:56:05 pm »

That was an interesting read.

The last bit about client/server prediction put multiplayer games into perspective for me.  The client (AKA player) computer has to hold multiple past game states in memory and be able to replay back to the current game state in the event of lag.  So the client computer has to be able to simulate the game itself significantly faster than the normal play speed.  And since most multiplayer games support late joining, or at the very least are capable of correcting a client in the case of a severe desync, the server needs to be able to send the entire game state over the internet.  On top of that, what can be actually contained in a packet is more limited than I realized.  I didn't understand that user's routers could be a bottleneck where if you send too many packets in a short frame of time it chokes up and starts buffering.

Everything just... makes so much sense now.  Multiplayer games have been built around the limitation of network architecture, rather than the network architecture being built around the game.  Because neither game developers nor game players truly control the hardware that makes up the internet.  Game state is too complicated to be simulated quickly, client can't correct for lag.  Client and server have to send too much info router chokes.  Client computer can't process the game fast enough, it falls behind everyone else's game state and now you have to send them the whole state as if they were newly joining.  The game must be built within certain very specific perimeters.

No wonder most successful competitive and multiplayer titles are so far behind the curve graphically!  The devs already have so many concerns, the thought of CPU or GPU lag on top of that must be a nightmare.  No wonder the FPS developers of the previous generation liked consoles so much.  They can make assumptions about the client's hardware.  And the way Microsoft and Sony handled online connectivity (the ONLY good thing I'll say on this topic) is that they encouraged players to use wired connections to the router rather than wireless.  So now devs that want to make a game run fast like sonic, can still push the hardware to its limit (since they know what that hardware is) and the average internet connectivity is better.  Trends have changed since then but that's its own bag of worms only loosely related to hardware (PC is now the path to the casual multiplayer crowd, believe it or not).

And if you look at which multiplayer games have survived, its almost always games that have ignored recent gaming improvements.  Most of the huge MP successes have barely any non-player physics objects and most certainly do not use havoc, rather using their own physics calculations.  It also explains why even tho modern FPSs always have at least one projectile that's simulated they choose to make almost all guns hitscan.  Many games even have detailed sniper simulation with bullet drop but don't apply that to modern weapons.  Its because hitscan shots don't need to be remembered, only the inputs that resulted in the shot.  And also why most RTS style games (like MOBAs) implement basic attacks as homing skillshots (which are cosmetic and thus acceptable to be desynced as long as the time damage ticks remains consistent).  So if you think about it, in the average multiplayer FPS, the game state is *ultra* simple.  Its physically impossible for most players to have more than 5 projectiles out at once without cheating, and generally a projectile attack will resolve before you can start another one.  Then most competitive games have no NPC players whatsoever.  So all that you need to send to each client is the stats of each player's character.  So that's... a position, a rotation, the current animation state and the frame, then a couple values like health/mana/cooldowns/ammo.  And then all active projectiles, which is almost nothing.  Oh my god, the game state in Overwatch is so simple, I just realized.  All those crazy attacks and abilities on the heroes, yet the info the server needs to send to each client is so... simple.

Mainly this just makes me impressed with the Planetside 2 team.  I now understand the enormity of the task they set themselves to.
Logged
"T-take this non-euclidean geometry, h-humanity-baka. I m-made it, but not because I l-li-l-like you or anything! I just felt s-sorry for you, b-baka."
You misspelled seance.  Are possessing Draignean?  Are you actually a ghost in the shell? You have to tell us if you are, that's the rule

Mephisto

  • Bay Watcher
    • View Profile
Re: if self.isCoder(): post() #Programming Thread
« Reply #10677 on: January 22, 2018, 08:51:06 am »

And then there's stuff like Arma.

Imagine doing all of those calculations for every player on a huge map and now you understand why there have always been performance issues.
Logged

milo christiansen

  • Bay Watcher
  • Something generic here
    • View Profile
Re: if self.isCoder(): post() #Programming Thread
« Reply #10678 on: January 29, 2018, 01:57:25 pm »

Why do people suggest using library constants for "platform independent" path separators (such as Path.PathSeparator in C#)? Don't they know that Windows is perfectly fine with "/" as a directory separator?

The only time I have ever had "/" fail me is with certain old cmd.exe built-ins (copy for example), for actual programs it works fine, even mixed separators (part of the path with "\" and part with "/") works fine.

Actually, if you want to work with paths in a portable manner you need to strip backslashes and replace with slashes first, else user input that is perfectly valid could blow up your path parsing. Why is "\" the default in Windows at all? Wouldn't it be better to prefer "/" always for greater portability?
Logged
Rubble 8 - The most powerful modding suite in existence!
After all, coke is for furnaces, not for snorting.
You're not true dwarven royalty unless you own the complete 'Signature Collection' baby-bone bedroom set from NOKEAS

Mephisto

  • Bay Watcher
    • View Profile
Re: if self.isCoder(): post() #Programming Thread
« Reply #10679 on: January 29, 2018, 02:12:15 pm »

Why do people suggest using library constants for "platform independent" path separators (such as Path.PathSeparator in C#)? Don't they know that Windows is perfectly fine with "/" as a directory separator?

The only time I have ever had "/" fail me is with certain old cmd.exe built-ins (copy for example), for actual programs it works fine, even mixed separators (part of the path with "\" and part with "/") works fine.

Actually, if you want to work with paths in a portable manner you need to strip backslashes and replace with slashes first, else user input that is perfectly valid could blow up your path parsing. Why is "\" the default in Windows at all? Wouldn't it be better to prefer "/" always for greater portability?

You ask a question and then answer it in the final paragraph.

Why use platform-independent options? So you don't have to do that bullshit. I'd much rather do
Code: [Select]
os.path.join('long', 'path', 'this directory has spaces')
over manually determining if this slash is a Windows separator or an escape character.
Logged
Pages: 1 ... 710 711 [712] 713 714 ... 796