@molecularmusing@mastodon.gamedev.place avatar

molecularmusing

@molecularmusing@mastodon.gamedev.place

Founder of Molecular Matters • C++ & low-level programming • Created Live++: https://liveplusplus.tech

This profile is from a federated server and may be incomplete. Browse more on the original instance.

molecularmusing, to cpp
@molecularmusing@mastodon.gamedev.place avatar

PSA:
If your platform offers a native way to declare variables in thread-local storage (e.g. __declspec(thread) or __thread), use this instead of the C++ standardized thread_local.
The native version often offers superior codegen, even for simple types like int.

molecularmusing, to cpp
@molecularmusing@mastodon.gamedev.place avatar

As a surprise holiday gift, I am excited to announce that after several months of work, Live++ will finally be coming to PlayStation®5 in 2024!

https://youtu.be/g1-94kqUN08

Watch this space for an announcement of a Closed Beta soon.

molecularmusing,
@molecularmusing@mastodon.gamedev.place avatar

I heard people doubting whether Live++ could ever be brought to consoles, since it's allegedly tied to Visual Studio and the MSVC toolchain. This is proof that there's always a way.

Hot-Reload, Hot-Restart, Hot-Deoptimize, it's all there.

molecularmusing, to cpp
@molecularmusing@mastodon.gamedev.place avatar

Live++ 2.5.0 OUT NOW for Windows, Xbox Series X|S, and PlayStation®5!
https://liveplusplus.tech/

This is the only solution that supports simultaneous hot-reload for C++ applications across multiple platforms and processes, both locally and over the network.
https://www.youtube.com/watch?v=ewbkdxskl7I

molecularmusing, to random
@molecularmusing@mastodon.gamedev.place avatar

With PDB sizes getting alarmingly big these days (approaching 8GB), I whipped up an example for RawPDB that shows the individual PDB stream sizes, the biggest offenders, etc.

This could be useful for people trying to get their PDB sizes down to at least have a bit of a starting point of what contributes the most to a PDB.

https://github.com/MolecularMatters/raw_pdb

image/png
image/png

molecularmusing, to rust
@molecularmusing@mastodon.gamedev.place avatar

I'll leave this here for the Rustaceans:
https://youtu.be/zYCy2u_xf0A

This shows Live++ running on a Rust app using nothing but the latest stable Rust toolchain - no nightly or custom builds. Note that this doesn't require code to be structured around dynamic libraries.

molecularmusing,
@molecularmusing@mastodon.gamedev.place avatar

@pervognsen It was confusing to me at first, but given how Rust as a language works, it makes sense. Forces me to do things a bit differently, but nothing I can't handle with a bit of special casing here and there.

molecularmusing,
@molecularmusing@mastodon.gamedev.place avatar

@pervognsen Still have to see how this all works out on a larger project, but at least I'm a bit more familiar with the language and the rustc & cargo toolchain now.

pervognsen, (edited ) to random
@pervognsen@mastodon.social avatar

How much RAM do you have in your dev workstation/laptop?

molecularmusing,
@molecularmusing@mastodon.gamedev.place avatar

@dotstdy @wolfpld @pervognsen @foonathan Yeah, scaling beyond that is definitely hard.

I limit PDB loading to 16 threads because I had a hard time scaling beyond that. Some things are just not very thread-friendly, and/or you'll run into OS locks sooner or later.

molecularmusing,
@molecularmusing@mastodon.gamedev.place avatar

@dotstdy @wolfpld @pervognsen @foonathan I might be mistaken, but I'd say the mold linker is able to do that.
At least max out 64 cores when linking something like Chrome or Firefox.

molecularmusing, to random
@molecularmusing@mastodon.gamedev.place avatar

Is there a disassembler on Windows or online for x86-64 that will show an instruction's encoding with all the prefixes, opcode, ModR/M, SIB, down to the bit-level?
I need to massage instructions and this would certainly help.

molecularmusing, to gamedev
@molecularmusing@mastodon.gamedev.place avatar

Live++ 2.5.2 out now:
More robust PDB reader, source path filters for compilands, and a bugfix for hot-deoptimize.

molecularmusing, to gamedev
@molecularmusing@mastodon.gamedev.place avatar

Live++ 2.3.2 out now:
Improved compatibility with Clang, support for large PDBs containing nil pages.

https://liveplusplus.tech/releases.html

molecularmusing, to random
@molecularmusing@mastodon.gamedev.place avatar

Probably one of the most important comments in the Live++ codebase, because I would already have forgotten by now...

molecularmusing, to random
@molecularmusing@mastodon.gamedev.place avatar

With support for PS5 nearing completion, here are a few Live++ stats:

  • 3 platforms
  • 20 VS projects for tests
  • 36 VS projects for Live++
  • 137k LOC including tests (excl. external libs)
  • External libs: Qt for GUI, Intel XED, xxHash

It has certainly grown to become the largest codebase I've ever built on my own.

molecularmusing, to gamedev
@molecularmusing@mastodon.gamedev.place avatar

Live++ 2.4.1 out now:
Optimized loading times and performance, task bar progress, a few XSX-specific improvements, and the first beta version for PS5.

molecularmusing, to random
@molecularmusing@mastodon.gamedev.place avatar

Somebody submitted Live++ to the orange site and the comments did not disappoint.

It's simple: use DLLs, reload them, and tell your devs to never use anything stateful like globals, function statics, or TLS. Done.

In fact, Casey built this in a single day for Handmade Hero.

castano, to random
@castano@mastodon.gamedev.place avatar

Is there a way not to burn quithub's LFS quota on github actions?
I have a repo with GBs of LFS data, and it looks like the checkout action downloads the entire thing every time it's triggered.
This is not only is extremely wasteful, but also gets expensive very quickly!

molecularmusing,
@molecularmusing@mastodon.gamedev.place avatar

@castano @MouseByTheSea @wolfpld I can recommend self-hosted P4.
A friend helped a bit with P4 setup, and I wouldn't change it for anything else.

rovarma, to random
@rovarma@mastodon.gamedev.place avatar

The filesystem APIs on Linux remind me of Vulkan in a way. There's all these little low-level bits and bobs that can be used to build anything, but there's not a convenience function in sight, so everybody ends up implementing the exact same things in slightly different ways.

Sometimes a guy just wants to move a file to a different location, ya know?

molecularmusing,
@molecularmusing@mastodon.gamedev.place avatar

@rovarma Posts like this do not instill confidence for when I'm about to touch Linux.

superfunc, to random
@superfunc@mastodon.gamedev.place avatar

@molecularmusing heyo!

small heads up the front page for live++ has what seems to be a dead link

molecularmusing,
@molecularmusing@mastodon.gamedev.place avatar

@floooh @superfunc I'm not doing any restrictions.

It's just an iframe:
<iframe class="youtube-video" src="https://www.youtube.com/embed/ewbkdxskl7I?playlist=ewbkdxskl7I&loop=1" title="Live++ overview" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

molecularmusing,
@molecularmusing@mastodon.gamedev.place avatar

@superfunc @dougbinks @floooh Good to know, thanks!
Doug, how are the videos embedded on your site? Could you share the code for that?

FWIW, both the Avoyd and Live++ videos work on our MacBook, in all browsers.

molecularmusing,
@molecularmusing@mastodon.gamedev.place avatar

@superfunc Could you try this again please? It uses the nocookie version of YT now.

molecularmusing,
@molecularmusing@mastodon.gamedev.place avatar
molecularmusing,
@molecularmusing@mastodon.gamedev.place avatar

@superfunc Perfect, thanks for checking!

@dougbinks Thank you for the YT nocookie hint, didn't even know this existed!

molecularmusing, to random
@molecularmusing@mastodon.gamedev.place avatar

I will never understand why resellers ask whether there's a reseller discount when purchasing a single license of something?
Why would there be a discount?

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • thenastyranch
  • rosin
  • GTA5RPClips
  • osvaldo12
  • love
  • Youngstown
  • slotface
  • khanakhh
  • everett
  • kavyap
  • mdbf
  • DreamBathrooms
  • ngwrru68w68
  • provamag3
  • magazineikmin
  • InstantRegret
  • normalnudes
  • tacticalgear
  • cubers
  • ethstaker
  • modclub
  • cisconetworking
  • Durango
  • anitta
  • Leos
  • tester
  • JUstTest
  • All magazines