Hallucinations re: the rendering of Cyberpunk 2077
c0de517e.blogspot.com
c0de517e.blogspot.com
https://1.bp.blogspot.com/-gO2R-e5TmHs/X9umb0DXKFI/AAAAAAAAC...
Sony's return policy for digital isn't consumer-friendly and something I want to defend, many call it a "no refunds" policy, as if you start the game even once you can't get a refund. But as publisher it's their right, and within their interest, to enforce it. It's not up to studios to unilaterally change it.
On Dec 13th, CPDR issued the tweet/statement, "For copies purchased digitally, please use the refund system of PSN or Xbox respectively."[0]
The next day at an investor call, investors asked them if they had a special refund agreement with Sony and Microsoft. They said they didn't. [1]
Then the next public statement from either was Sony saying it's removed. The next statement from CPDR was to investors but was leaked, essentially saying they met with Sony and Sony told them it was being removed.[2] Oh, to be a fly on the wall for that meeting.
Microsoft has also said full refunds for anyone who requests, matching Sony.[3]
[0] https://twitter.com/CyberpunkGame/status/1338390123373801472...
[1] https://www.cdprojekt.com/en/wp-content/uploads-en/2020/12/c...
[2] https://www.bankier.pl/wiadomosc/CD-PROJEKT-SA-Czasowe-wstrz...
[3]https://twitter.com/XboxSupport/status/1339983452255498240
I've been watching my girlfriend play it on PC and it's been generally fine
If I could request one single upgrade though, putting user input fully onto a thread that isn't also responsible for rendering would be great.
What would be the point of putting user input on its own thread, though? Do you letting the UI run at 60 if the 3D graphics are janky? Otherwise there's no point collecting input faster if the game isn't going to draw it until next frame.
Shooting things with a console controller becomes much easier. With a high power single shot weapon, you can sweep over your target and pull the trigger at the right moment. Works great for games that accurately record your input timing regardless of whether there's a frame drawn at the right moment or not. But once you learn this technique, playing games that require a frame to process input becomes very painful.
edit: Sure, it doesn't specifically need to be implemented as a thread if the controller events come with a timestamp, but my sibling comment indicates that in CP2077 the input event between frames might actually be lost.
There is controversy around this idea. The game is certainly buggy and many similar open world games have also been buggy on release. However, a lot of the problems in Cyberpunk 2077 don't appear to be bugs. They appear to be active design decisions that were made as a shortcut on promised features. Here is a Twitter thread with some examples of design decisions that might appear as bugs to an untrained eye.[1]
It seems like CDPR knew they had an unfinished game and couldn't deliver it close to its release date. Management decided to do whatever had to be done to release a game in time for Christmas. This "open world games are always buggy on release" narrative plus some shady behavior surrounding how they handled reviews[2] allowed them to get largely great reviews and a huge influx of cash. Hopefully that provides enough capital to justify a long term commitment to finishing this game because it is doesn't appear to be a few bug fixes or performance improvements away from being the game that was promised.
[1] - https://twitter.com/jumpovertheage/status/133892916630199091...
[2] - https://screenrant.com/cyberpunk-2077-ps4-xbox-one-review-sc...
I don’t really mind the examples in the Twitter thread, but I do mind that you really cannot interact with the world in any meaningful way.
None other than skyrim is one of the best examples of this.
But yeah your description is pretty good.
For me it was great on the beginning, the mood and the graphics are pretty good. Some missions are great as well. But now I’m not really sure if I will even finish it. It doesn’t really feel meaningful.
Also even though there are some explicit sex scenes (but so few I’m not sure why they are there), it is really not edgy at all. It’s like a corporation designed the game which is everything cyberpunk is not supposed to be.
There are a ton of great ideas in there, but then someone realized it would take too long so they half assed everything.
Totally agree. Take for example character backgrounds. They are meaningless. You have a custom 5 min introduction for that background and then you are playing the same game as everybody with the addition of just a few dialogs.
They could have just focused on one background and make the side quests more relevant to that background.
And that's exactly why I loved it haha, but I do understand the grievance with it
With this game it's probably a generational thing on more than one level: not only do most people tend to grow out of side quest competitionism at some point, I suspect that older parts of the audience are also drawn into this particular main story stronger than their younger peers. It's just so perfectly 1990ies vibe that you almost forget that people did not in fact have mind machine interfaces and fancy prosthetic limbs when they sent their first email on AOL. The game represents exactly how people born around 1977 remember the movies of their youth (entirely unlike how you'd perceive them if you'd see them today).
Really npc's are stupid in skyrim, gta, cyberpunk whatever. And it doesn't matter. When you look at Watch Dogs, its getting very repettetive anyway; You look at a few and discover that you actually don't care about it anyway.
I play cyberpunk right now for the story they build and they build, so far, a very good story.
They can keep the npcs as they are honestly; Finetune perhaps but meh
PS. I'm also enjoying the game a lot, but soft locks and brokenness is starting to take it's toll.
In earlier GTAs like San Andreas there is an explicit difference between "traffic in the distance" and "traffic close by" - the former will be removed if out of sight, doesn't have full-fidelity 3D models, apparently doesn't have physics applied to them, ... Once they get close enough, they get more complete and sticky. (GTA V quite possibly does the same, I just know less about the details there and its a lot less obvious)
Regarding your second point, I'm not sure if you've seen how it's handled in CP? Basically all roads in the distance have a string of car/headlight sprites (yes, 2D) moving on them. Makes the world look amazingly populated and alive.
However the density of the sprite cars is much higher than the actual cars (depending on your settings). So when driving on a long road you always seem to be chasing a large group of cars that you can never reach. There seems to be no connection between actual cars spawning in and the sprite based crowd illusion.
And if you use a scope with good zoom to observe the sprite cars, it looks very funny. Basically you have very obvious Doom faux-3D sprites in an otherwise stunning environment.
That said, why do we have to remain purely positive for an expensive AAA game that promised so much and sold at a high price tag? Why should they be excused?
The police seemly doesn't have an AI, people actually believed they didn't.
But a player happened to see a police car with cops inside (extremely rare to see that), and saved his game near, and ran several tests.
He found out if you piss off the cops, using a car (on foot they just exit the car and never climb back on), and then you hit their car with yours (shooting them doesn't work, they just go away following a pre-programmed path), they start chasing your GTA-style.
So this means they DID code the cop cars to chase the player car, but a sequence of bugs make the only way to see this content to be go out of your way to do it (you need to see cops in a car spontaneously while you are inside a car too, then run over a pedrestrian, then hit the cop car with your car).
Self driving cars are a billion dollar industry, and yet you expect a game dev studio to come up with a realistic AI for drivers?
It's a game. People know that it's not real. Sure, it's fun to discover the tricks that the devs had to pull off to make it work. But man, don't blame a game dev studio that they haven't come up with an algorithm for self driving cars.
edit: Also hitting a pedestrian isn't a huge deal in a videogame.
Other than the game is very enjoyable on a PC, with some really enjoyable NPC action, interesting side quests and a great main story line. Also a great value compared to buying a movie or going to the cinema for a similar price - so far sunk 50h into the game.
For example take a look at this video[1], specifically the part in which the user shoots at AI driven cars. The AI in GTA 5 responds in a much more realistic fashion. This has a huge impact on immersion and creating a lifelike world. GTA 5 came out 7 years ago. There is no technical reason for Cyberpunk's AI being this bad. CDPR simply didn't want to invest the time in making it better.
(Sidenote: When the guy started beating up pedestrians I just couldn't continue watching that video. Maybe I'm getting old.)
for those of us that just heard about nitter in some other thread here today.
The game was announced 8 years ago and the last gen consoles were the main target. What do you mean it didn't belong there in the first place. The game came out now because it was delayed, otherwise it would have been out when we ONLY had the consoles where it "didn't really belong in the first place".
I am running it on a high end PC, maybe the bugs manifest more often on a lower spec PC?
RDR2 manages to offer a level of fidelity, detail on a larger scale and runs on these systems just fine. I don't think it's unreasonable for consumers to expect a game in development for so long to live up to at least the level of that game.
Cyberpunk has vastly more variation in NPCs, models in general, textures, light sources, and so on. In my playthrough, the largest crowd present in RDR2 was maybe 10 people on screen at the same time. Twenty at best. In my mind, the level of ambition doesn't compare, unless you were to limit your Cyberpunk experience to the Badlands.
I like rockstars approach much better: very limited hype, limited numbers of trailer/videos, no crazy promise, &c. Release on a limited amount of platforms first and take your time to port it to others so that everyone gets a polished version (or at least as good as it gets given the hardware). Cyberpunk looks like your typical "over promise, under deliver" approach.
So you hear complaint from people with PS4 Pro and people with standard PS4 that swear they only have few issues but playable performances, which makes no sense unless the game is dependent on some less visible spec, like the performances of the media it has been saved to, which circles back to the original point, consoles are no longer this stable, uniform hardware that's hard to master but easy to support, and the requirement to target every hardware combination is anachronistic
Also bear in mind that this is the PS4 version that’s being pulled. Maybe that’s where your confusion came from. The proper PS5 edition is not released yet. The PS5 runs this PS4 version somehow fine... But that’s definitely not how it’s supposed to work in the first place.
On PC game is an amazing masterpiece. There are few bugs but they are not critical and easy to ignore.
This game should not have passed certification and how it happened clearly shows to the public what has long bugged me: how much you get away with and how many, or how serious, issues you get a waiver for in cert is directly proportional to how high profile your game is. This reinforces the issues with big titles being released in a bad state.
The gameplay is fun and I don't regret buying it (physical copy). But I'm a sucker for the cyberpunk theme and Witcher 3 is probably my #1 console game of all time so maybe I'm willing to accept too much. Far from unplayable though and I don't really care for maxed out graphics so the look and feel is just fine for me.
My explanation for the outrage is that in the past few years quite a few people made youtube careers bashing AAA games. Making outrage videos a lucrative business, apparently, and the new generation of wannabe game journalists jumped on the train.
I do not agree with this, higly subjective, but on a PC with decent framerates the controls are fine IMO. Much better than say, Witcher 3.
Some humble thoughts:
The discussion on the SSAO suggests that the game's system uses GTAO - lots of features suggest at the least heavy inspiration from the technique (see "Practical Realtime Strategies for Accurate Indirect Occlusion" - relatively accessible paper).
The way the game's rendering is set up seems very carefully thought out. Namely, the relative lack of pre-baking and lighting "tricks." This accomplishes several things at once: It simplifies development of locations and assets - hugely important in a game with a scope this large, it makes the lighting/visuals of the game more robust and consistent in quality, and it also allows the integration of ray tracing effects without changing the artists' and designers' process.
Since even without ray tracing the game uses PBR and broadly physically plausible (though carefully designed) lighting, adding ray-tracing doesn't require a massive amount of extra work. All the information is already there, and it'll be much easier to make it look good.
All in all, reading this article has done just as much to convince me that the game is "next-gen" (at least in terms of graphics) as actually playing it has :)
As a comparison, the ENB mod for Skyrim allows dynamic lighting in that game, but to actually use physically plausible light locations rather than the base game's prebaked light maps essentially requires redoing the lighting for all the locations in the entire game (there are several mods that do indeed do this.)
Before CP2077 I still hadn't seen a game that definitely beat what you could accomplish with modded Skyrim for visuals - even in very recent games it was all still fundamentally done the same way. Good to see that essentially a decade of near stagnation has ended. It's a little vexing that the state of PC gaming is so dependent on the release of new consoles, though.
Edits: for minor fixes
Thats apparently where the big money is. Also, there are lots of folks like me, who play only occasionally and therefore not needing to spend so much for a state of the art gaming PC, and get by with their 5+years old one.
But yes, if the high end PC gamer hardware would be standard ... that would allow for some serious graphical (and other) improvements.
I am finally back into game developement (as a side project) - and I am surprised again, how much hardware constraints limit game developement, too. Many things I want to do, are just not possible on the average machine (but thats the bonus from developing on average hardware, you find out about that early on).
I still dream of a voxel sandbox gameengine with integrated chemistry and physics. There are quite some projects promised that years ago, but apparently it is not yet possible with todays hardware. Maybe soon?
All dynamic lighting, dynamic shadows, no lightmaps. I guess it was a couple generations too early for that to work.
Maybe lightmaps are dying off now because game worlds are getting bigger and denser, and storage isn't getting faster as fast as GPUs are, so it's better to throw together something approximate and dynamic that can be rendered in 2 or 3 frames, than something perfect that can never move and has limited resolution at bake time.
You can see what this accumulation looks like for CP2077's SSAO in this Gamer's Nexus video: https://youtu.be/zUVhfD3jpFE?t=960 He attributes it to TAA but to me it looks like a clear example of the exact temporal accumulation technique described by the GTAO paper in order to get samples performance-efficiently.
This ("free" compute due to memory bottlenecks) is true for the last-gen consoles as well as modern cards.
So rather than a storage limitation, it's more a limitation of being able to get the data from system memory or even on-card GPU memory to the GPU cores fast enough since the cores now process it so quickly. A general increase in resolution of textures and towards 1440p and 4K displays has not helped with that issue.
Going along with that is a general trend towards PBR (physically based rendering) in all fields that use computer graphics - film/tv, 3D modelling, design, games.
The PBR philosophy is generally anti using tricks & hacks where possible. The reasons why are the reasons that PBR has been so widely (almost universally) adopted: PBR makes it easy for artists to create consistent and robust results, using understandable methods that mostly work how you would intuitively think they should, and the results automatically look good and are interoperable since there is a clear target - to emulate real light transport, materials and so on.
It's simply not feasible (or at the very least extremely costly in artist/dev labour) to be manually designing bespoke tricks to get each individual scene to look right. It's a "let the computer do the work" type of philosophy, which Cyberpunk seems to follow since they didn't even seem to include manually placed occlusion planes, for example (going by the original article).
So it's a combination of the hardware now being capable of it, having gradual software/algorithmic improvements to get better approximations to correct lighting, and a relatively wholesale overhaul of the entire graphics pipeline toward PBR, due to its substantial benefits. Then, since the PBR approach is highly compatible with ray-tracing inherently, ray tracing is the cherry on top, for now still only usable on top end hardware for realtime games.
Artists would just need to specify the procedural part, ie their editors would need to have that as well.
I think currently, the way artists work, they anyway have a lot of layers, and some of them are procedurally generated. I know people at least used to use something like "clouds" procedurally generated in Photoshop, and use that to apply some effects to the texture like wearing or staining. But in the end they "burn" the texture to bitmaps, and a lot less layers. Maybe that could be instead done on the GPU. Then the base texture becomes mostly flat, easily compressable, and the clouds can be procedurally generated, requiring no storage at all. It can still be deterministic, you can just store the seed.
Not everything can be procedurally generated on the fly (at least with a small algorithm that would run quickly enough on a GPU). At a certain point just providing compressed bitmaps becomes more efficient, especially since GPUs are highly specialised to work with exactly those. Everything is a tradeoff in real time graphics.
Possibly this explains the issues on ps4/xb1 hardware. If cp2077 were designed for the new generation of GPUs where those tricks are unnecessary, it clearly wouldn't backport well onto hardware that requires those tricks.
To me you've kinda proved my point. Nothing in that video strikes me as being "next gen" in terms of graphics. They have a decent filmic post processing filter and high res textures, I guess? CP2077 looks much, much better than that.
I do agree it does some things better, but it overall still looks "current gen."
Skyrim doesn't use prebaked lights and shadows at all. That's why you generally only have a handful of active light sources per scene with everything else being filled in with ambient (interiors) or sky (exterior) light.
One thing I feel it does in Cyberpunk is adds a layer of lighting correctness that really sells the environment. Sometimes it doesn't look perfect but it always feels correct and closer to true to life.
I have long held that lighting more than textures was the missing realism in games, and if you have ever played retraced minecraft I think you get what I mean. Even the pixelated textures and block world of minecraft feel like a real world when rendered with correct lighting.
How do you got into CG? Do you fiddle with other areas, like AI, ML...? I'm asking cause I think you really have to concentrate in one field to get to the level of the guys behind cyberpunk. They probably never had to learn react / redux in order to get a job.
Start with https://github.com/jkuhlmann/cgltf to handle loading the data. Check the sidebar of https://www.reddit.com/r/opengl/ for tutorials.
https://victorribeiro.com/3Dsphere/
https://www.youtube.com/watch?v=w13Q_KL1I9A
I just need to focus a little bit more in order to get more complex stuff done.
for instance: I don't know jack about animations / bones / skin deformation. =(
try this if you have time
I only know the basics, but as far as I know that stuff is generally pretty straightforward (at least compared to actual rendering)
Basically you have an invisible vertex floating inside the mesh, and vertices on the visible mesh are "weighted" to it (with a floating point weight), so that when the bone moves, it "pulls" vertices towards it based on the weight strength. A mesh vertex can be weighted to multiple bone vertices at once. Bones typically consist of two vertices, where one is treated as an anchor and the other rotates around it. They're then arranged in a hierarchy, so that a parent bone's transform (translate/rotate/scale) applies to its children, and so on. So for example, rotating an upper arm bone causes the forearm bone to rotate with it.
An animation is then a series of keyframes on those bones (translate/rotate/scale to a particular x/y/z at time t). Those keyframes are interpolated when the animation is applied, and the mesh vertices are dragged along accordingly.
Motion-capture is just taking position data from a live actor and mapping it to those bone keyframes.
Things get slightly more complicated when it comes to blending between multiple animations (for example, running + swinging a sword; you basically average the keyframes). And then there's IK or Inverse Kinematics, which basically means that instead of driving an animation purely from explicit keyframes, you procedurally place the "end" of the limb (a character's foot goes all the way to the ground, for example) and then procedurally work backwards adjusting the bones up the hierarchy to satisfy that position. This is pretty common these days and leads to dramatically more natural-looking animation for characters and creatures (you can see it in action by walking on some stairs in a recent game). I don't know exactly how it's implemented.
But that's about it from a technical perspective. Of course the artistry of getting all of this just right is much harder - from the bone-weighting ("rigging") to the keyframes to the motion capture data cleanup - but the technical aspect isn't nearly as complicated as rendering (to my understanding).
A static model I just copy it's vertex position to a buffer, right? So when there's a bone animation I just update the vertex in my models and the copy it again to the buffer, for every frame?
I was using ThinMatrix [1] videos as guidelines when I was creating my engine. I'll take a look in how he implemented animations. Thank you.
The transformation matrices are interpolated for each rendered frame using the hierarchial animation data and the computed matrices are uploaded to the gpu in a buffer. The matrices are accessed in the vertex shader by indexing into the matrix buffer to calculate the vertex position.
How do you reconcile noise in motion capture data to bone transformations? For example, isn't it possible that the motion capture data slightly elongates or shortens the forearm in a way that makes it impossible to maintain the relationship with the upper arm bone?
In my head, it feels like you would have to pick the closest point on the sphere that's created if you rotate the forearm all around the elbow joint, but that seems expensive to do everywhere all the time.
That said - and I haven't done this myself, I'm just speculating - if you're using motion capture data directly maybe it makes sense to ditch the hierarchy altogether and have each bone be independent? Though, that could be problematic if you wanted to blend some "artificial" animations together with the recorded ones. I'm not sure what the standard practice is.
Of course raytracers don't work like polygonal hardware rendering but a lot of the maths and concept do carry over I've found. If you understand how normal mapping and reflections work in a software Raytracer you shouldn't have too much trouble implementing the same algorithms in a hardware accelerated pixel shader for instance.
In general I think that implementing a raytracer is just one of these projects that's just too cool and simple not to do, so I don't think you'll be wasting your time anyway.
Writing vertex and fragment shaders blew my mind the first time I did it. "Wait, this code will be run for EACH PIXEL ON THE SCREEN?" It's obvious in principle, but the actual implementation felt awesome to experience first-hand. Like the feeling of accomplishment that you get in re-deriving a famous theorem yourself. It's not groundbreaking or novel, but it unlocks a much deeper understanding for why we need GPUs at all.
You can take a look at the humble repo I used to both learn C++ and explore 3D rendering [1]. If by some chance you are interested in learning more about how this stuff works, I highly encourage you to check out TheCherno's youtube channel [2]. I'm not a huge fan of his newer stuff (Hazel engine), but his older series implemented 3D graphics from scratch in Java. Taught me a huge amount about how this stuff works and really ignited my interest in programming.
[1] https://github.com/TimelyToga/tlotk/tree/master/src/engine/g...
[2] https://www.youtube.com/watch?v=iH1xpfOBN6M&list=PL656DADE0D...
exit(FUCKED_UP_SHADER_COMPILATION);
funnyFunny story: following a video (ThinMatrix) about creating a 3D engine in Java (I was translating everything to JavaScript and working around the old OpenGL concepts_) I learned that you can't have an object as a index in a JavaScript Dictionary. Living and learning.
There's plenty of job openings in game development industry outside of the top of the field roles for the best AAA projects. These job openings require less expertise and experience, but yet will allow you to get your hands dirty with various areas, 3d rendering included — although in smaller studios working on smaller projects you most likely will not be a part of dedicated rendering team and will be involved in different areas of the project.
This is good. The rest is more of theory. I can dump you a lot of papers, talks, and reviews like the OP one.
For the level you see in Cyberpunk, you need to learn modern, physically-based techniques. This requires a bit more math, though nothing you wouldn't see in a CS degree. My favorite reference on PBR techniques is the PBR book, which is free online. Applying some of these techniques in a real-time setting is of course another challenge.
However, all this probably takes a ton of time and math and low-level programming knowledge for a newcomer.
https://raytracing.github.io/books/RayTracingInOneWeekend.ht...
"A screen space representation of geometry and material information, generated by an intermediate rendering pass in deferred shading rendering pipelines." https://en.wikipedia.org/wiki/Deferred_shading
As an aside, I worked in visual effects for film for years and never heard the term g-buffer. I am sure we had some other term that we thought was common, but was only used inside our studio.
Classically, you draw the whole triangle, start to finish in one go. Interpolate the triangle, look up any colors from textures, do the lighting math, write it all out. Simple and straightforward.
For complicated reasons, it often actually works out better for current games on current hardware (games/hardware of the past decade) to defer the lighting math and do it in a separate pass. So, interpolate the triangle, look up the textures, write all of the inputs to the lighting math (other than the lights themselves) to a multi-layer 2D array of parameters (surface color, normal, roughness, etc...). Then later determine which lights affect which pixels and accumulate the lighting using only the 2D parameter arrays --without needing the triangle information.
The multi-layer 2D arrays of material parameters is called the "G-Buffer". I think it originally stood for "Geometry Buffer". But, the name has taken on a life of it's own.
In forward rendering you allocate one RGB color buffer for the screen, then rasterize triangles to this buffer, directly producing final RGB color values at each pixel.
In deferred rendering instead of one RGB color buffer you allocate a set of screen-sized buffers to hold various attributes of your choosing for each pixel, which can include colors but also things like the surface normal, material type, roughness, velocity, etc. These buffers are collectively referred to as the G-buffer. When you rasterize triangles you fill in all the attributes for each pixel instead of just a final color. Then in a second full screen pass, for each pixel you read all the surface attributes you wrote earlier and combine them with other data such as the positions of nearby lights, do some calculations and output the final color.
By deferring lighting calculations and separating them from the geometry rasterization, deferred rendering can offer more flexibility and performance in some cases. However it is tough to use with MSAA and/or transparent objects, and can be a memory bandwidth hog. Modern rendering is all about tradeoffs.
Avoiding unnecessary shading is only one small reason to use a G-buffer - you could just do a depth pre-pass for that. The bigger advantage of deferred shading is that it gives you a lot more flexibility with lighting, letting you decouple lighting complexity from screen complexity. This is especially useful with many tiny lights that only affect a small portion of the screen.
Even if you use a depth map to exit early on fragments you are still going through all your geometry twice, once to get your depth map and again to do all your shading.
The history of renderman (prman) went in a similar same way, though not through using actual g-buffers. Originally it would shade and then hide because of memory constraints and displacement of micropolygons happening in the surface shader and not in a separate displacement shader. Eventually the architecture shifted to try to do as much hiding as possible and split out displacement shaders into a separate type.
Another thing that can be done with g-buffers is using mip-mapping and filtering of the g-buffer to do some sampling or effects on lower resolutions. Pixels can also be combined into distributions instead of just averages, though I'm not sure how much this is done currently.
(If they don't they're kidding themselves)
Then I got another bug on the desktop with a builtin Intel GPU. Those are usually regarded as the ones with the best driver support on Linux, but that didn't save me. After waking up after it has went to sleep, sometimes, that means often, parts of the screen would flicker. It happened directly after the update from Ubuntu 20.04 to 20.10, or kernel 5.4 to 5.8. Now I've manually installed 5.10 and the bug is gone, but without my manual intervention the bug would have continued for months.
https://www.amd.com/en/press-releases/2019-03-19-amd-radeon-...
Just support the lates driver version that Nvidia/AMD/Intel recommend. Same as on Windows.
> desktop environments, windowing protocols, audio protocols
All abstracted by available open source libraries, notably libSDL. Besides, Windowing is a laughably trivial part of a game and audio isn't that much more complex when it comes to the OS interface.
The decision to port/not port to desktop Linux is not a technical one when the renderer has already been ported to Vulkan and the rest of the game already compiles on a POSIX-like platform.
It's a "film critic who doesn't believe games are art"'s idea of a game - a pretty world with few meaningful choices, dumb AI, huge swathes of features obviously ripped out, very little aesthetic customisation etc.
The world is quite nice, but I feel more interested in (and more engaged by) Fallout 4 (and that's something because Fallout 4 isn't particularly good either and barely an RPG).
There is more to it's problems than just performance.
The game has already made it's money back, I hope that they bring it up to spec. I want to like it, it's just a bit dull to me (But it's probably a bad sign when the most recent CoD game has a more interesting plot)
But thats subjective, right?
The plot does seem interesting to me, but I will wait some time, before buying a new gaming PC and play a less buggy version of it, to see for myself.
I've completed the main story and is at my second play-through now. First play-through was main quests only basically, second is a few main and then every single non-main quest I can get at and only then main quests. It is by far the best made open-world game I have ever played and while there are a lot of bugs it is nowhere near "Bethesda level buginess". Fallout and Elder scrolls -some of my favorite games- was worse than this even after the first 5-10 updates, since at least 90% of the bugs I saw was game breaking, same-game-corrupting or crash-to-desktop stuff.
I have had zero crashes and zero bugs that required me to reload. 100% of bugs have been cars floating a few centimeter above ground, a weapon falling a few centimeters below ground (but I can still pick it up), the GPS not taking the fastest route, etc. Basically not a single bug that is cause for all the yelling and shouting I'm seeing. In a few patches it is everything GTA could only dream of and I'm sure this will be a cash-cow. A cash-cow for the only anti-DRM and customer-friendly big developer out there is a huge win.
That I can play it at high settings (using Digital Foundry's recommended settings) at my not at all brand new PC is just icing on the cake.
This may be because I'm not very far into the main quest (without spoiling, I have about 3 hours ago gotten past the prologue and interlude).
But just off the top of my head, stark differences between gta and Cyberpunk:
Vehicle types. Gta has cars, motorcycles, helicopters, planes, blimps, atvs, and iirc bicycles. Cyberpunk has cars. I've seen motorcycles but I haven't seen that I can ride them yet. I've seen flying car type things too but again no evidence I can drive them. Same for blimps.
Gta lets me enter buildings and do things like bowl, play darts, pool, whatever. Get a drink at a bar, iirc. Strip clubs. Again, not too far at the game, but I tried going to a bar in Cyberpunk and it was like buying a drink in skyrim. It simply appeared in my inventory and that's that. I visited a hooker and he fucked me and that was kinda fun I guess, but not as interactive as a gta strip club.
Cops. I've seen a funny video in Cyberpunk where someone sniped someone from a roof and cops teleported behind him (nothing personel, kid). In GTA the cops have to actually arrive in some form of transportation to respond to your crimes.
So those are my main complaints, but only because we're comparing to gta here. On its own I actually enjoy Cyberpunk more than gta, but I do so fully cognizant of its flaws. I still have fun though.
If CDPR have the balls to look to add as much as they can over the next few years they could have a very nice game in the end, but currently it's just a bit mediocre.
CP have way more indoor area than GTA5.
It only have cars and motorcycles you can control yes.
It has strippers and hookers and you can drink lots of places where the drink is served on the table or you can buy it to inventory.
Anyways, if mini-games made the best game neither would be in top 10.
Maybe does not run on some potato console, and the real failure of CDPR here is launchig on console at all, that extra effort could have gone to squishing some more bugs and getting the PC version more polished before launch.
Just like people buy consoles to play a certain game, they buy PCs to play a certain game, and Cyberstalker is definitely a good reason to upgrade if you're behind the curve.
Assuming a game has stealth mechanics, why do some games let you shoot out almost every light (Ghost Recon Wildlands, GTA 5), while others don’t (Far Cry 5, Cyberpunk)?
Is it a technical decision that needs to be made early on in the game process?
Perhaps being able to shoot any light out involves more work for world and mission designers?
And in any case it takes additional logic to make a light be destroyable, in addition to needing the proper flags to be set in the level design process. I can't think of very many games where all lighting is truly dynamic like you are thinking, and up until recently a lot of graphics cards could not handle more than a few dynamic lights at a time
When DOOM 3 released, part of its technical wow factor was how it was able to get dynamic lighting working using early 2000's graphics tech. I remember being blown away watching the light change as an overhead lamp was being affected by physics
I think Ghost Recon Wildlands and GTA 5 do it well in the sense that lights that would clearly be destroyable by a bullet are indeed destroyable, from lamp-posts to car headlamps to light bulbs. If a light needs to be fixed, at least it helps for the source to be designed to look like it has metal grating around it or something.
I remember DOOM 3 blew me away, too. Those zombies you could only see with the flashlight in the first level. Scary! I played it to the end with lights off with my brother and we both got jump-scares regularly!
However Cyberpunk (without raytracing) is not the most beautiful game I played. It has a few nice scenes, the one discussed in the article looks good, but you also have a lot of areas that are nothing special and have very bad performances.
I have RTX card and I see (pretty noticeable) difference when I turn on RTX reflections and shadows in Cyberpunk, but I can't see what is the difference in RTX-lightning.
Perspective
"DLSS is just [an approximation]" is a common comment, but it's bollocks because everything in a modern game engine is an approximation to some underlying phenomenon. Even raytracing is basically a bunch of noise to our eyes before the magic makes it viewable.
Is it perfect? Of course not, but being able to fake detail that our eyes don't take issue with could be enormously helpful to smaller game studios who can't achieve the same results - I'm specifically thinking of flight simulators which often don't run very well, where 60% of the pixels on the screens are effectively filler (Terrain, Clouds etc.)
It's that simple, try the fidelityfx options if you want to see what bad upscaling looks like.
DLSS will let people run games who otherwise wouldn't be able to afford to play them, end of argument.
https://www.youtube.com/watch?v=9ggro8CyZK4&t=931s
It looks amazing, possibly more detail than native
https://www.reddit.com/r/cyberpunkgame/comments/cxqm1u/every...
https://www.reddit.com/r/pcgaming/comments/aqmffc/is_dlss_ju...
https://www.gog.com/forum/cyberpunk_2077/cyberpunk_is_really...
I have 3 times more ”proofs”! :)
It's ridiculous how you can’t just accept mine ”ok, let's disagree”. Looks like it touches some really important side of your souls ;)
DLSS is not the end-solution to rendering, well, nothing is, but it's an AMAZING piece of technology. All these temporal and dynamic resolution techniques are here to stay as they -improve- the look of games no matter the HW.
What do I mean? Obviously dynamic resolution and temporal reprojection are worse than say, a fixed 8k rendering at 240hz! Yes, true! But, that's not the correct math.
The more correct math would be, on a given hardware, say a 3080, would you rather spend the power to render each single pixel exactly, or would you rather "skip" some pixels and have smart ways to recover them for a fraction of the price, almost equal to the real deal, so now you have extra power to spend somewhere else?
Of course if you just do less work with DLSS or similar technologies, you're losing something, it's bad. But that's never the equation. The real equation is that no matter how powerful the HW, the HW is a fixed resource. So if you spend power to do X, you cannot do Y, and you have to chose whether or not X is more valuable than Y.
Makes sense?
Now, all that said, it's also true that sometimes you max out everything in a game, you cannot have more of anything because that's literally all the game has to render, and at that point sure, it's reasonable to spend power even in things that are not that great bang-for-the-buck because literally you cannot do anything else anyways! So for the very top PC HW, you end up doing silly things, like rendering in native 4k because you cannot use that power in any other way.
But that's in a way "bad", it's a silly thing that we have to do as there is no other option! If we had the option though, it would be much better even on a 3080 to render say a 2k or 1080p upscaled to 4k via DLSS, and use the remaining power to say, have 2/3 times the detail in textures or geometry or number or shadow-casting lights etc etc...
Here is our disagreement. For my eyes DLSS is unacceptably blurry (even in ”Quality” mode). You can look at it - ok, but it's only one of the opinions. You can spend 1 minute in google to find quite contrary opinions. Whole your long comment is based on the idea that upscaling is an optimization - you are forgetting that upscaling is a tradeoff.
My main complaint about DLSS ”hype” marketing is exactly about this: do not promise ”incredible quality” when under the hood it's just a pity upscaling. Some HW is not good enough, some games are not optimized enough - it's fair and it's okay, there are things to sacrifice, there are workarounds. Just don't lie.
What I meant to say is that we live at a time where rendering every single pixel all the times is simply a waste of resources - that can be better spent somewhere else.
And you're still saying it's "blurry" - that's not the point. Certainly temporal reprojection will -always- be blurrier than not using it. But you're not considering what you're -gaining- by that blur. The real question is - would it be better to say, have a world with 1 million objects at 4k, a bit blurry, or a perfectly sharp image, at 2k, with 100k objects...
Temporal reprojection saves time that then can be invested in other things.
Lastly. CP2077 ALWAYS uses temporal reprojection. ALWAYS. If you disable DLSS it uses its own TAA instead. If you disable TAA (which cannot be done in the settings menu, but there are hacks to force it) is STILL USES temporal for most of its rendering before the final image.
I'm happy to see at least one person on HN can agree with this.
After re-reading your and my comments I concluded that my real issue is lack of the settings in CP2077. I do respect opinion of people who want to use TAA and DLSS, I’m just upset that I can not pick something I like, can’t decide what to sacrifice and what to prioritize.
Your article is quite interesting and I’m grateful for it. Please keep writing things like this.
In some instances it add detail, in other instances it removes detail.