Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
OneEightHundred
Feb 28, 2008

Soon, we will be unstoppable!

Jack B Nimble posted:

Thank you all; ubisoft doesn't make my absolute favorite games but they seem to keep improving, so I wanted to make sure my purchase did what it could to signal that; sounds like if I buy it any time in the next couple weeks or so that should be ok, doesn't have to be like a movie where everyone is watching that first weekend.
If you want to give Ubisoft more money, then buy the digital version at full price on PC off the Ubisoft Store.

Adbot
ADBOT LOVES YOU

Popete
Oct 6, 2009

This will make sure you don't suggest to the KDz
That he should grow greens instead of crushing on MCs

Grimey Drawer
How are ASCII games usually implemented? Are they actual text output using extended ASCII like you would write to a console? Or do they draw ASCII characters to a window using a tileset image?

more falafel please
Feb 26, 2005

forums poster

Popete posted:

How are ASCII games usually implemented? Are they actual text output using extended ASCII like you would write to a console? Or do they draw ASCII characters to a window using a tileset image?

Typically the former -- there are various control sequences that allow you to print a character at any location on a terminal that supports it. There are libraries that make this much easier (ncurses). If you wanted it to be able to run in either a GUI window with an ASCII tileset or a terminal, it would be pretty straightforward to make an abstract interface that supports both. If I had to guess, that's what I'd guess, say, dwarf fortress does.

Popete
Oct 6, 2009

This will make sure you don't suggest to the KDz
That he should grow greens instead of crushing on MCs

Grimey Drawer
Yeah I was thinking specifically games with a graphics window like DF and Caves of Qud. I assume they just split the screen up into an X * Y set of tiles and use ASCII graphic tilesets as the graphics.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe

Popete posted:

Yeah I was thinking specifically games with a graphics window like DF and Caves of Qud. I assume they just split the screen up into an X * Y set of tiles and use ASCII graphic tilesets as the graphics.

Yeah, these days relatively few ASCII games actually use a real terminal any more. It's mostly just an aesthetic that you can cultivate rather than a specific set of technologies.

Zaphod42
Sep 13, 2012

If there's anything more important than my ego around, I want it caught and shot now.
Old MUDs were just played over telnet so by technical requirement they used real ASCII.

But modern games can do different things.

There's an ASCII shader for Quake 😁

1337JiveTurkey
Feb 17, 2005

Writing a game that uses the terminal is dying because the advantages it had aren't as relevant these days. Like nobody's actually constrained by only having a text-mode video terminal or text mode having much finer screen resolution. If you want to do something like run a MUD over telnet, HTTP works just as well for demanding next to nothing out of your clients. If they really only have a text terminal then they can use Links for all I care.

Terminal is simpler by itself if you're not worried about cross platform but Windows and various Unices require different code plus an abstraction layer. Or they just mash it all together in one #ifdef'd clusterfuck because terminal is also easier for people with little experience programming.

Speaking of little experience, terminal's also good in that sense because you don't need to understand all the subtleties of a UI framework and event loop. You grab input when you want it, then do stuff in response, then grab input. Like if Dwarf Fortress is anything like Liberal Crime Squad it's still structured like that as much as humanly possible even with the OpenGL rendering. Now that more people are learning programming through stuff like Javascript where you've got to deal with an implicit event loop from the very beginning.

As far as actual rendering, you can have a set of tiles or you can use whatever the platform text rendering tools are to render the character to a tile and then blit it on screen like any other sprite. Rendering the text directly is probably not the best idea because there's a lot more overhead in text rendering these days that doing it two thousand times a screen refresh is going to hurt. But on my personal roguelike it was just a Unicode string that just got rendered to a 32x32 buffer so you could just do ☭ for ☭ communist insurgents.

Popete
Oct 6, 2009

This will make sure you don't suggest to the KDz
That he should grow greens instead of crushing on MCs

Grimey Drawer
I've been experimenting both ways. First I tried a "true" ASCII game where I used ncurses, that was the most simple/direct way to get something up and running that looked like a proper ASCII game but I pretty quickly started running into problems when I wanted to do anything more complex like handling terminal resizing.

I've restarted this time using the SFML library. I still want to have ASCII graphics, so I load in an image containing all the Code Page 437 characters which are parsed into 16x16 individual images and then use a vertex array to create a map of those images indexed by a 2d array. It looks pretty good and I think doing it this way will pay off down the road as you can easily swap out ASCII image sets to use different colours. I figured this is the basic jist of how most ASCII games these days do it, as once you get the basic structure down it's nice to work with a graphics library to get a little fancier with UIs and such.

Coffee Jones
Jul 4, 2004

16 bit? Back when we was kids we only got a single bit on Christmas, as a treat
And we had to share it!
I guess you don’t have anywhere near as much control regarding color, non ascii characters, window size etc if you’re using a standard Unix terminal for your game.

Big K of Justice
Nov 27, 2005

Anyone seen my ball joints?
Anyone doing anything interesting for HDR color grading/matching?

I feel like invoking the old "NTSC = Never Twice the Same Color" saying again.

I mean beyond taking the company credit card down to best buy and buying 16 different make/models of sets, throwing them all on carts and HDMI repeaters, and just finding the best "one size fits all"...

mutata
Mar 1, 2003

This was ages ago, but we had a Wall of TVs on a big wheeled rack when I worked on Disney Infinity. Anyone who wanted to wheel it into their workspace and hook up their dev kit and see their art on a reasonable spread of 9-12 different makes models and manufacturers.

more falafel please
Feb 26, 2005

forums poster

mutata posted:

This was ages ago, but we had a Wall of TVs on a big wheeled rack when I worked on Disney Infinity. Anyone who wanted to wheel it into their workspace and hook up their dev kit and see their art on a reasonable spread of 9-12 different makes models and manufacturers.

That reminds me of a bug I found on Major 3D Fighting Game Franchise 9 where screen-space coordinates were being used to determine relative positions of the two fighters, i.e. is this fighter on the left side of the screen. If one player was playing in 16:9 and one player was playing in 4:3, float precision could cause a desync where the clients disagreed about who was on the left for a frame. This was in the last installment and was never found because a) no one played the game in 4:3 except UI folks and b) no one played online except the online folks.

VelociBacon
Dec 8, 2009

Hoping there's a thread favorite answer to this or obvious recommendation.

I want to start exploring ideas I have about interactive digital experiences ranging from very art-heavy almost entirely passive viewing experiences to more traditional/interactive programs that might lean towards education/low-fi simulation in my field (critical care). I'm wondering what tools I should be looking at learning or what education I should pursue that would be meaningful and relevant to this end. I don't plan on working in the games industry, this is just something I want to explore. I'm in Canada if that changes anything.

My undergrad is in health science with a light applied physics focus but previously did 1-2 years of various programs including IT, economics, marketing, etc. As part of this I did a handful of CSC courses but it's been 10+ years and I've forgotten basically everything so I'd say I'm starting from basically no programming experience besides messing about with an arduino here and there and previous HTML projects (long time ago). My math is also around the 1-2 year university level, my stats is a lot better but still not great.

I've asked a few people about this and have gotten different responses. My gut feeling is that I'd be best served learning basic programming as a starting point. I've heard recommendations for python and C++. Other people just told me to play with Unity. Should I take a programming course? Should I try to learn it by myself? What are some resources?

I do work full time but it's shift work and I have stretches of 4-5 days off between work sets and I'm not super busy. I've done distance courses quite a bit and am not deterred by an online course if it's something that would be appropriate and useful.
Thanks everyone.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
I don't think you're going to get a single consensus, because there's so many potential ways to do what you're talking about. But there's a fairly small number of options that (I would guess) are going to come to the forefront.

First off, if the experience is mostly or entirely passive, you can just make a video, or a set of videos that users can pick between. There's any number of tools for that, but for free stuff there's Blender and Davinci Resolve.

For more complicated stuff you are probably looking at a game engine though. You want to use an engine (instead of writing everything yourself) mostly because it'll take care of stuff like setting up the display, loading and displaying graphics / playing sounds, handling user input, etc. Basically a bunch of fiddly stuff that you don't want to waste your time on. I would recommend starting with an engine even though you're also brushing up on your programming, mostly because your #1 priority is staying motivated, and that tends to be easier when you're writing programs that have graphical/audio feedback (like games), as opposed to writing toy programs that just take in text and output more text on a command line.

There's several big game engines that you can choose between. I can try to sum up their major points:

- Unity: probably the most popular game engine (for game development, that is). Huge installed userbase, which has the happy side-effect that pretty much any problem you encounter, someone else will have encountered previously. The asset store also has a bunch of stuff you can just buy and plop into your project. The main issue Unity has is that the engine's quality is pretty variable; a lot of stuff doesn't quite work the way you'd expect and documentation isn't always the greatest. But it can do your project, pretty much regardless of what your project is. All programming is done in C#.

- UE (Unreal Engine): the serious engine for serious devs. Honestly probably too heavyweight for you: it expects users to have a fair amount of time to dedicate to getting things working just so. But on the flipside, it can turn out prettier, faster, and generally nicer content than Unity can. Programming is done in C++ or Blueprint, a sort of visual coding system.

- GameMaker: much more limited than the above two engines, but focuses on doing what it does well, which means that if your project fits into its scope then you'll probably have an easier time of it. That scope is pretty much 2D sprite-based games, so there's still a lot you can do with it. Programming is done in GML, a custom language that's kind of Javascript-y.

- Godot: a relative newcomer, I don't know much about it. I've heard good things about it, and it can do 2D and 3D, but it's so new and has a smaller install base compared to the above three that I'd hesitate to recommend it for a newcomer. It supports a fairly wide variety of languages.

My personal recommendation would be to take this Udemy course, which is a learn-to-program course that uses Unity. Don't buy Udemy courses at full price, incidentally; they go on sale all the time (I saw it at $15 when making this post, for example).

VelociBacon
Dec 8, 2009

TooMuchAbstraction posted:

I don't think you're going to get a single consensus, because there's so many potential ways to do what you're talking about. But there's a fairly small number of options that (I would guess) are going to come to the forefront.

First off, if the experience is mostly or entirely passive, you can just make a video, or a set of videos that users can pick between. There's any number of tools for that, but for free stuff there's Blender and Davinci Resolve.

For more complicated stuff you are probably looking at a game engine though. You want to use an engine (instead of writing everything yourself) mostly because it'll take care of stuff like setting up the display, loading and displaying graphics / playing sounds, handling user input, etc. Basically a bunch of fiddly stuff that you don't want to waste your time on. I would recommend starting with an engine even though you're also brushing up on your programming, mostly because your #1 priority is staying motivated, and that tends to be easier when you're writing programs that have graphical/audio feedback (like games), as opposed to writing toy programs that just take in text and output more text on a command line.

There's several big game engines that you can choose between. I can try to sum up their major points:

- Unity: probably the most popular game engine (for game development, that is). Huge installed userbase, which has the happy side-effect that pretty much any problem you encounter, someone else will have encountered previously. The asset store also has a bunch of stuff you can just buy and plop into your project. The main issue Unity has is that the engine's quality is pretty variable; a lot of stuff doesn't quite work the way you'd expect and documentation isn't always the greatest. But it can do your project, pretty much regardless of what your project is. All programming is done in C#.

- UE (Unreal Engine): the serious engine for serious devs. Honestly probably too heavyweight for you: it expects users to have a fair amount of time to dedicate to getting things working just so. But on the flipside, it can turn out prettier, faster, and generally nicer content than Unity can. Programming is done in C++ or Blueprint, a sort of visual coding system.

- GameMaker: much more limited than the above two engines, but focuses on doing what it does well, which means that if your project fits into its scope then you'll probably have an easier time of it. That scope is pretty much 2D sprite-based games, so there's still a lot you can do with it. Programming is done in GML, a custom language that's kind of Javascript-y.

- Godot: a relative newcomer, I don't know much about it. I've heard good things about it, and it can do 2D and 3D, but it's so new and has a smaller install base compared to the above three that I'd hesitate to recommend it for a newcomer. It supports a fairly wide variety of languages.

My personal recommendation would be to take this Udemy course, which is a learn-to-program course that uses Unity. Don't buy Udemy courses at full price, incidentally; they go on sale all the time (I saw it at $15 when making this post, for example).

Thanks for the comprehensive reply - some good stuff to dig through here. I'll pick up that Udemy course for $15, it's basically free and if it's goon-recommended that's great.

Kanine
Aug 5, 2014

by Nyc_Tattoo
Gonna ask a potentially stupid/uncomfortable question for other devs in the thread:

As a junior artist (currently on a contract but looking for more remote work soon) in the games industry how bad for my career is it that I tweet/retweet/like stuff on my public twitter about crunch, unionization, etc. (where I post my art and have a few hundred followers comprised of mostly other people in the games industry)

Am I basically loving myself over and making myself unhireable? Is it enough for me to make my account private when I send out applications or is me doing this essentially getting me put on a literal blacklist that will prevent me from obtaining gainful employment in the industry ever again.

I'm obviously not stupid enough to talk about this on the work slack/discord in the company I'm currently contracting for but several of my coworkers have followed me on twitter since I started there a few months ago.

more falafel please
Feb 26, 2005

forums poster

Kanine posted:

Gonna ask a potentially stupid/uncomfortable question for other devs in the thread:

As a junior artist (currently on a contract but looking for more remote work soon) in the games industry how bad for my career is it that I tweet/retweet/like stuff on my public twitter about crunch, unionization, etc. (where I post my art and have a few hundred followers comprised of mostly other people in the games industry)

Am I basically loving myself over and making myself unhireable? Is it enough for me to make my account private when I send out applications or is me doing this essentially getting me put on a literal blacklist that will prevent me from obtaining gainful employment in the industry ever again.

I'm obviously not stupid enough to talk about this on the work slack/discord in the company I'm currently contracting for but several of my coworkers have followed me on twitter since I started there a few months ago.

So I'm a programmer, I've been at my job for almost 10 years, and in the industry for almost 15, so we're in somewhat different situations, but I've had my twitter profile pic be the Game Workers Unite logo for years, and I'm very outspoken publicly about all that stuff. It hasn't been an issue for me, but my company is maybe just sort of cool about it?

That said, I know a lot of people who keep the activist stuff on a private account, but obviously that doesn't have the same reach by definition.

al-azad
May 28, 2009



I feel like as long as you’re not an actual antagonist rear end in a top hat towards people directly you’re fine. I have heard of companies printing out social media accounts (I’m a government contractor in IT so it’s sometimes part of clearance checks) but it’s just like “is there a chance this person will commit criminal acts?”

It might be different if you’re looking for work in a big work for hire state but if you’re on the west coast or just not in America at all you’re fine.

MJBuddy
Sep 22, 2008

Now I do not know whether I was then a head coach dreaming I was a Saints fan, or whether I am now a Saints fan, dreaming I am a head coach.
I think the only issue you'd likely run into is how you vocalize your issues with crunch on interviews, but I don't think that's revelatory beyond "don't apply to work places that crunch their staff if you don't want to crunch."

Technically it could cost you a job but it's probably not a job you want.

But studios will define away crunch even internally. It's not "crunch" it's "our devs are dedicated". So be clear with boundaries or it will become an issue when it happens. I also don't think that's bad and I've never seen someone get looked down on for having a strong understanding of what they want in a role, including the work life balance.

Again, could "cost you the job" but you're looking for good job fits, not just any job.

Kanine
Aug 5, 2014

by Nyc_Tattoo

al-azad posted:

I feel like as long as you’re not an actual antagonist rear end in a top hat towards people directly you’re fine. I have heard of companies printing out social media accounts (I’m a government contractor in IT so it’s sometimes part of clearance checks) but it’s just like “is there a chance this person will commit criminal acts?”

It might be different if you’re looking for work in a big work for hire state but if you’re on the west coast or just not in America at all you’re fine.

the contracts ive worked my coworkers seemed to like me well enough and based on what the art directors told me at the end of the contracts they thought i did a good job so i guess i dont have to worry about that at least

MJBuddy posted:

I think the only issue you'd likely run into is how you vocalize your issues with crunch on interviews, but I don't think that's revelatory beyond "don't apply to work places that crunch their staff if you don't want to crunch."

Technically it could cost you a job but it's probably not a job you want.

But studios will define away crunch even internally. It's not "crunch" it's "our devs are dedicated". So be clear with boundaries or it will become an issue when it happens. I also don't think that's bad and I've never seen someone get looked down on for having a strong understanding of what they want in a role, including the work life balance.

Again, could "cost you the job" but you're looking for good job fits, not just any job.

i think this is 100% the best way to look at it honestly, though its still incredibly difficult to break out of the "oh god oh god i need to break into the industry and get stability beyond short remote contract work" anxiety

lmao i guess if i wanted to have stability i should have chosen a different industry

Kanine
Aug 5, 2014

by Nyc_Tattoo
also if im applying to a studio, is it reasonable for me to message a current employee of the company to ask what their experiences have been so far with the place?

should i just limit to asking former employees?

more falafel please
Feb 26, 2005

forums poster

Kanine posted:

also if im applying to a studio, is it reasonable for me to message a current employee of the company to ask what their experiences have been so far with the place?

should i just limit to asking former employees?

If it's people you know outside of that, then sure, absolutely ask them how they feel about it. If it's people you don't know, you can definitely ask them, but it's entirely possible that they'll talk about what you talked about to other folks at their company, including potentially the people trying to hire you. But again, if there's a backstabbing/pledge your life style culture there, you probably don't want to work there.

Kanine
Aug 5, 2014

by Nyc_Tattoo
i guess the real answer is to rely on anonymous reviews on glassdoor or other places if possible then

mutata
Mar 1, 2003

Reposting this from you posting that in the CG thread, heh.

Every couple months I run a tweet deleter and delete every tweet, like, and reply older than a week. I think if I was actively applying to places, I would run that, pin a tweet with my top 4 pieces, and just retweet cool art until I got hired. I don't think you're doing any damage, but you should assume that employers and potential employers WILL look at your social media and judge you off it. Especially don't tweet about internal unionizing efforts or whatever, you'll find yourself no longer a "culture fit".

My current employer is pretty liberal and we're small and they're all aware that I'm an angry lefty weirdo who uses Twitter for yelling. YMMV. Social media is bad.

Kanine
Aug 5, 2014

by Nyc_Tattoo
Hey I really appreciate the feedback, that all tracks with the answers I've gotten elsewhere pretty much.

IAmKale
Jun 7, 2007

やらないか

Fun Shoe
I have a very naive question about how video games handle save games, due in large part to the recent revelation that Cyberpunk 2077 save games have a filesize limit of 8MB, at which point they break and can no longer be loaded:

Do game studios hand-roll save game file formats? Is there something preventing the wide adoption of local database solutions like SQLite for storing save games?

It boggles my mind, as a web application engineer with zero game dev experience, that a AAA game like CP2077 can suffer issues with writing game state to disk when storage space is plentiful and processors are ever faster. I bring up SQLite as an alternative specifically because it's a database engine that's been battle tested, is highly performant, can read data from/write data to a single .sqlite file on the filesystem, and easily supports databases measured in the hundreds of gigabytes. Especially for single-player games, what would motivate a game studio to seemingly hand-roll their game save data structure in a way that inadvertently places a hard maximum on how big that file can become?

And if it's a matter of obfuscating game saves to discourage tampering, why bother if it's a single player game? What would it matter if a player could query a save file and manipulate it, with the assumption that if it breaks the game then they shouldn't have bothered messing around with it.

Thank you for humoring me. As I said I have zero programming experience in your world and I'm sure there's an aspect to save game formats that I'm completely oblivious to. I think it's a rather fascinating subject, though, and I'd love to hear your take on my terrible suggestion.

djkillingspree
Apr 2, 2001
make a hole with a gun perpendicular

IAmKale posted:

I have a very naive question about how video games handle save games, due in large part to the recent revelation that Cyberpunk 2077 save games have a filesize limit of 8MB, at which point they break and can no longer be loaded:

Do game studios hand-roll save game file formats? Is there something preventing the wide adoption of local database solutions like SQLite for storing save games?

It boggles my mind, as a web application engineer with zero game dev experience, that a AAA game like CP2077 can suffer issues with writing game state to disk when storage space is plentiful and processors are ever faster. I bring up SQLite as an alternative specifically because it's a database engine that's been battle tested, is highly performant, can read data from/write data to a single .sqlite file on the filesystem, and easily supports databases measured in the hundreds of gigabytes. Especially for single-player games, what would motivate a game studio to seemingly hand-roll their game save data structure in a way that inadvertently places a hard maximum on how big that file can become?

And if it's a matter of obfuscating game saves to discourage tampering, why bother if it's a single player game? What would it matter if a player could query a save file and manipulate it, with the assumption that if it breaks the game then they shouldn't have bothered messing around with it.

Thank you for humoring me. As I said I have zero programming experience in your world and I'm sure there's an aspect to save game formats that I'm completely oblivious to. I think it's a rather fascinating subject, though, and I'd love to hear your take on my terrible suggestion.

it's not entirely uncommon in my experience, for a lot of reasons but mostly in an attempt to reduce bloat and potentially to speed up load times. additionally running a full-fledged sql database is probably overkill for what ultimately is something that just needs to write out occasionally and be read even less frequently. Additionally there are platform-specific concerns wrt save files and serialization but I don't know whether that'd restrict using SQL databases. But honestly save game bugs aren't rare, but are (in my experience) usually not directly tied to the file format and more commonly just tied to errors in the actual serialization/deserialization of objects and game state, which is less about the file format and more about how serialization code is structured.

bob dobbs is dead
Oct 8, 2017

I love peeps
Nap Ghost
they totally hand roll poo poo that anybody doing line of business would've cracked open a can of whoopass in 1999 and they therefore get some 1999 software dev results out of it

there are AAA games out there with less-than-single-digit test code coverage on nonengine code

more falafel please
Feb 26, 2005

forums poster

Most big engines have some form of serialization code for game objects, and typically the save system is implemented with that. Using something like SQLite is good for games with a lot of tabular data, like sports game rosters, RPGs with loot tables, etc, but save data isn't usually very relational.

Zaphod42
Sep 13, 2012

If there's anything more important than my ego around, I want it caught and shot now.

IAmKale posted:

I have a very naive question about how video games handle save games, due in large part to the recent revelation that Cyberpunk 2077 save games have a filesize limit of 8MB, at which point they break and can no longer be loaded:

Do game studios hand-roll save game file formats? Is there something preventing the wide adoption of local database solutions like SQLite for storing save games?

It boggles my mind, as a web application engineer with zero game dev experience, that a AAA game like CP2077 can suffer issues with writing game state to disk when storage space is plentiful and processors are ever faster. I bring up SQLite as an alternative specifically because it's a database engine that's been battle tested, is highly performant, can read data from/write data to a single .sqlite file on the filesystem, and easily supports databases measured in the hundreds of gigabytes. Especially for single-player games, what would motivate a game studio to seemingly hand-roll their game save data structure in a way that inadvertently places a hard maximum on how big that file can become?

And if it's a matter of obfuscating game saves to discourage tampering, why bother if it's a single player game? What would it matter if a player could query a save file and manipulate it, with the assumption that if it breaks the game then they shouldn't have bothered messing around with it.

Thank you for humoring me. As I said I have zero programming experience in your world and I'm sure there's an aspect to save game formats that I'm completely oblivious to. I think it's a rather fascinating subject, though, and I'd love to hear your take on my terrible suggestion.

The thing about CP2077 is that its designed to work on 7 platforms, including PS4 and Xbox. They're not going to invest time in anything special for file formats for PC that they can't easily extend to those other primary platforms as well.

SQL is more about access anyways, If they wanted to make things standard they could easily just use like XML or JSON (and some game companies do) but a lot of times they want to restrict such easy cheating so they intentionally obfuscate the file format. Having it be a proprietary binary file helps there a little. (Doesn't stop dedicated people, but stops the majority) As for why bother, that's a design choice. Generally you want to protect players from cheating so they experience the game more proper. People don't know what's best for them, and while I love cheating in games that I've beaten I wait until I beat them for that very reason, it can spoil lots of things.

There's not enough data to warrant a SQL while running, all the save state can be held in RAM. Running SQL might help something like Skyrim though where the files can get truly insanely huge because of the sheer scope of saved variables.

Also generally look at how much they were cramming to finish Cyberpunk and how it got delayed even at the last minute. With videogames any given feature you can come up with, odds are someone on the dev team was thinking the same thing too and was begging his team lead for a few weeks to implement it, but it was a no-go, because fixing the broken cars or the fact that your character would occasionally invert themselves was higher priority for shipping. So someone may have even thought about implementing a better save format, but testing showed that it wasn't really necessary and they ended up working on other things. And then the game releases and people spam crafting using macros and everything explodes... that's the game industry!

Zaphod42 fucked around with this message at 04:26 on Dec 21, 2020

Spite
Jul 27, 2001

Small chance of that...
and unity/unreal aren't well engineered pieces of software. they are the result of many people adding new features onto an ancient core over many many years at this point.

I'm constantly amazed Unreal works at any level of efficiency at all.

CDPR's engine should be newer so they have less of an excuse. but in my experience gamedev is terrible about planning and scoping so I'm sure they've fallen into the "hack it together" trap over and over.

Shruggoth
Nov 8, 2020

You can't always compare the techniques and technology used for web development with game development. Same goes for any other industry, such as high-frequency trading. The requirements for each are completely different.

Gamedev almost always optimizes for speed. You have to manage IO, physics, audio, gameplay logic, and rendering for a frame generally within 32 or 16 ms. These are often parallelized, but no single system can take more than that without affecting the experience. Size is also still a concern too, and it also indirectly affects speed. Hardware improves over time, but most games are bound by consoles and generally there's more and more stuff that has to fit into the game every year.

There are a lot of 'solved problems' in gamedev, but the tradeoff for generalized solutions is usually a sacrifice in speed and customizability. AAA games have very specific requirements which heavily depend on the game, which is why you might see a studio roll their own physics engine when Havok exists.

Binary serialization is generally preferred because it's faster and smaller than any other method. It's (slightly) harder to implement and harder to debug than something like Json, but it's rarely a major source of bugs beyond format/versioning changes. It has a side benefit of obfuscation, but that's rarely a concern since any dedicated individual can crack it.

As to how this particular bug arose, it's hard to say. It sounds like it's a problem with the way the crafting system is saving out and loading rather than with the actual act of saving and loading. 8 MB is smaller than many textures, so I doubt it's just the size causing the slowdown/corruption.

As to how this slipped though, shipping any game is a minor miracle given the constraints. It's possible that QA didn't test the specific scenario, or that it was found but some producer decided against fixing it since there were 100 other things on fire. Or maybe it was a bug introduced by fixing another bug at the 11th hour.

The Glumslinger
Sep 24, 2008

Coach Nagy, you want me to throw to WHAT side of the field?


Hair Elf
There are also a ton of first party rules about saving, so you have to quickly write things out at a maximum frequency and with a fixed max size. You can't just write to disk whenever you want

dads friend steve
Dec 24, 2004

I get that for games that “continually save” (I’m thinking like Dark Souls here) you’d need to be mindful of save performance, but what about games like Disco Elysium where saves are either manual via menu or autosave on area entrance/exit? Do those have more freedom to trade off performance for simplicity?

Shruggoth
Nov 8, 2020

dads friend steve posted:

I get that for games that “continually save” (I’m thinking like Dark Souls here) you’d need to be mindful of save performance, but what about games like Disco Elysium where saves are either manual via menu or autosave on area entrance/exit? Do those have more freedom to trade off performance for simplicity?

In my experience, performance vs. simplicity tradeoffs usually happen when it's clear that the performance is necessary. If a section of code is profiled and it's causing performance issues, that's usually when it gets optimized at the cost of readability/maintainability. Some tradeoffs are made before perf becomes an issue, but generally those are patterns that are understood by most game programmers or are known to be a necessity (eg. multi-threading).

Binary serialization is common enough that I would think all engines support it to some degree. The necessity of using it for saves probably depends more on how much stuff you're saving and how tolerant the system/players are to save and load times than the frequency of the saves, though that's probably also a concern.

Shruggoth fucked around with this message at 07:21 on Dec 21, 2020

dads friend steve
Dec 24, 2004

Fair enough. I had to implement a binary deserialization in C a bunch of years ago, and folks are right; it’s not hard. But it is enough of a pain in the rear end I’d avoid it if at all possible for something text based and human readable like JSON.

Of course that runs into its own kinds of scaling issues (YAML sucks, as does trying to zero in on the part of an 8000 line JSON file you care about using jq)

dads friend steve fucked around with this message at 07:51 on Dec 21, 2020

czg
Dec 17, 2005
hi
Some game engines also reuse their networking system for saving the game.
Since they already have a system for serializing game state data fast and in a minimal format, they might as well reuse it for saving games as well.
Instead of serializing out just the entities that have changed over a network pipe, they dump out all the entities to a filesystem instead. Loading the game is then pretty much the same as reading the initial sign-on packet from the server when connecting to a game.

That's probably not relevant to Cyberpunk though.

OzyMandrill
Aug 12, 2013

Look upon my words
and despair

dads friend steve posted:

Fair enough. I had to implement a binary deserialization in C a bunch of years ago, and folks are right; it’s not hard. But it is enough of a pain in the rear end I’d avoid it if at all possible for something text based and human readable like JSON.

Of course that runs into its own kinds of scaling issues (YAML sucks, as does trying to zero in on the part of an 8000 line JSON file you care about using jq)
A game team might have 5-15 programmers, and the save game code will usually be assigned to one of the most junior...

Kanine
Aug 5, 2014

by Nyc_Tattoo
An acquaintance of mine is going to be teaching a generalized intro to 3d art for games next fall at a community college (he's worked in the industry for about 5 years with a background in environment art and wants to pass on his knowledge.)

He's going to be dividing the class (about 20 students) between character, environment, and general 3d art for those unsure. I think this makes a lot of sense.

He's doing something interesting which I think is really cool, he's actually going 3d-modeling software agnostic, he's telling his students blender/max/maya/modo/zbrush/etc. are all acceptable and the first week will involve showing his students those 4 pieces of software and having them choose one to focus on. Beyond that he's still going to be using the various substance tools as a focus in regards to material creation. He's also stressing using eevee/marmoset/unreal 4 to be used for final deliverables for the final project as the goal by the end of the semester will be to have one good portfolio piece ready.

I've been helping him a bit with essential information and tutorials I wish I'd been giving when I started learning 3d as someone who ended up going into 3d environment art. (I can include links to resources and go into more detail for anyone interested.)

Beyond the specifics of 3d art, the other focus he'll be having in second half of the semester is showing his students places to get good feedback to continually improve, network and hopefully help land a junior position within the industry. Polycount along with The Club and Dinusty discord servers seem like good places to start?

My two main questions are:

What do you wish had been shown to you as a novice that would have made becoming a 3d artist a lot smoother?

For specifically 3d character artists, what resources do you think are essential for people going into 3d character art?

Adbot
ADBOT LOVES YOU

OzyMandrill
Aug 12, 2013

Look upon my words
and despair

Kanine posted:

He's doing something interesting which I think is really cool, he's actually going 3d-modeling software agnostic, he's telling his students blender/max/maya/modo/zbrush/etc. are all acceptable and the first week will involve showing his students those 4 pieces of software and having them choose one to focus on.

If it's an industry focussed course then this worries me - Max/Maya are so entrenched, not knowing them will just lead to your CV going straight into the reject pile in the first cut.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply