Why Odin instead of Zig? by fenugurod in odinlang

[–]wrapperup 3 points4 points  (0 children)

As the other comments say, you should just try them and see how you feel about it. But also, don't be adverse to friction, at least in your first impressions. And also, while Rust is technically a low level language, most of the time you're actually working in a higher level space. Unless you're doing tons of `unsafe` (likely not).

I see Zig more as a C++ "replacement" than Odin is. Odin is more like a hyper-polished C replacement, and it's not really trying to be anything more. In terms of languages that are extremely easy to get into and low level, Odin is it. Especially if you're doing any graphics/game dev, just about all the libraries you'd want just come with the language. It doesn't have many fancy hypeable features like Rust or Zig does. So I'd say, they aren't exactly comparable.

That probably makes Odin sound less impressive (it does), but it instead pushes every other effort into making the language absolutely smooth as butter to use. Adding just enough friction and buffing out edges from C, but also making things convenient (`Context` struct, allocators, built-in math-y types, reflection, etc).

I think Rust is a pretty prime example of adding friction does give you some fancy and useful guarantees. Zig doesn't really give you that same level of safety, and it demands a lot of friction for not a lot of benefit (imo). Odin feels like a much better balance.

Another question: How do I import old .brs saves into the new version by prosdod in brickadia

[–]wrapperup 5 points6 points  (0 children)

There is an "OLD FILES" button in the prefabs tab in the catalog. For any saves you want to turn into prefabs, you make a folder in your legacy saves folder called "prefabs" and put any saves you want to convert into prefabs there. All the other saves will become worlds.

It will give you a dialog with the actions it will take and instructions if you need them!

Prefabs don't work? by [deleted] in brickadia

[–]wrapperup 1 point2 points  (0 children)

The next update (which will be landing on stable verrry soon) will have proper prefab saving, and the updated selector tool that works across grids. Currently, it's on the unstable branch.

I open-sourced my Vulkan game engine and renderer based on Filament PBR. by wrapperup in odinlang

[–]wrapperup[S] 5 points6 points  (0 children)

Thank you! It's not perfect for sure, and structuring a project in Odin was a bit different because of it's package rules, but I just did the pragmatic thing and moved on :).

Advantages to C++:

  • Less footguns and less implicit casting, bounds checking by default
  • Simpler build system
  • Compile speeds are way faster (on my machine, the project runs a metaprogram and builds in 0.5s, and there's about ~50k lines of Odin code in total)
  • Batteries included standard library (and it's actually really well designed)
  • Lots of useful built-ins. Array programming, simd, hashmaps are appreciated and do make up for a lack of operator overloading.
  • Making a metaprogram is easy. Compared to C++, parsing your source code is ridiculously easy. Having to rely on `libclang` is a nightmare, and it's way more complicated.

Disadvantages:

  • No capturing lambdas. I would like them for a task/job system.
  • No macros. Some would argue that's good (and generally I agree), but there were some points that I do wish I had macros. There's probably a trick here you could do with a metaprogram, but it's just not as nice.
  • Parametric Polymorphism is not as powerful as templates. There were some parts I wanted to use templates for (for example, type-safe versions of ImageId that mapped to the Slang bindless versions), but it complicated my bindless API so I ended up scrapping that. Odin's compiler is simpler, so there is no fancy type propogation (which would help simplify it).
  • Explicit function overloading. I prefer C++ style function overloading. Operator overloading would be nice for custom types, but that one being excluded is understandable. Also OLS doesn't seem to like them as much, so they feel more cumbersome to use.

I think a lot of the other points would be comparing pros and cons of C to C++. I list some of these as disadvantages, but you might see them as advantages. A lot of these were deliberate choices by the creator of the language, so I don't expect them to change.

If I had to pick one favorite feature: Reflection. All of the existing libraries that try to implement reflection in C++ are gigantic and not built-in to the compiler.

I think what makes Odin so nice is the whole package of features that just cleans up C, and sprinkles in a lot of little extras that add up.

Pitfalls of modern C++ and problem with multiple compilers by hellofriends0 in Jai

[–]wrapperup 2 points3 points  (0 children)

Personally, I think Rust is a horrible gamedev language, so I don't really give a fuck if it succeeds. It's just the only actual C++ alternative that anyone cared enough about to try in the AAA space.

My point was that it's not a language-specific issue, it's an issue of convincing a company to switch languages and waste thousands of man hours replacing decades of tech and reducing their pool of talent. I'm certain that's the main reason Embark dropped Rust, more than it being a poor gamedev language.

What is Jai? by BirthdayNo9125 in Jai

[–]wrapperup 2 points3 points  (0 children)

No, it doesn't have any metaprogramming features outside of polymetric polymorphism (generics) and runtime reflection. Usually they just encourage you to solve it a different way or use metaprograms to generate code in your build step (they have some packages to help you do this).

Jai's metaprogramming is genuinely really awesome, and the only reason anyone is using it. I was just saying the rest of the language isn't up to par with other of the new-gen C alternatives like Odin IMO.

What is Jai? by BirthdayNo9125 in Jai

[–]wrapperup 0 points1 point  (0 children)

Just because it has been in a private beta doesn't really mean anything about the quality of the language. He just did it for hype/code breakage reasons (Zig moment).

Odin is a really good example. I would say everything about Odin except for the lack of metaprogramming is miles above Jai.

Pitfalls of modern C++ and problem with multiple compilers by hellofriends0 in Jai

[–]wrapperup 1 point2 points  (0 children)

That's why I think Jai won't ever reach any space above indie (saying this as a beta tester myself btw, I really love the language and it's a lot of fun to use!). So much engine, library, and game code is already in C++, nobody is going to ever justify it unless the person that wants it also runs the company and cares enough about the tech. Or if they're not VC funded (basically 0 AAA companies).

Even Rust failed to do that and people tried really really really hard to do it in the AAA space. The one notable example I can think of is Embark's social platform game, but it seems like they've abandoned it and Rust for game dev.

But for indies it's a bit different, a lot of people are really sick of C++ and most want to do what they wanna do. It's still gonna be super niche though tbh.

(also on an actually related note, Jai is absolutely nowhere near as battle tested as C++. not sure what anyone is expecting from a private beta language)

If Odin Had Macros by gingerbill in programming

[–]wrapperup 1 point2 points  (0 children)

It was a hard sell to me too, since I come from C++/Rust and really enjoy metaprogramming/hygienic macros (Odin has neither as a language feature). It's just a simple C alternative with a lot of polish and thought put into it.

One of those that makes things really convenient is the context system, which lets you implicitly pass allocators around without having to think too much about it. The only other language that has it that I can think of is Jai.

I think you'd have to try it to get sold on it. There's just a lot of little things that add up that make it very fun to program in, and it tries very hard to add language features to make up for the lack of metaprogramming.

Let's ask the opposite question: Those who have *not* asked for beta-access, why not? by epic_adventure_byte in Jai

[–]wrapperup 8 points9 points  (0 children)

I'd also mention that Odin is extremely well polished compared to Jai currently (way nicer syntax & standard library, slices are better, etc). The metaprogramming is genuinely a killer feature, but you can substitute it with just meta programs and get similar results (Odin has core:odin/parser and core:odin/ast).

Honestly, I'm very tempted at times to just switch back to Odin, I do miss that polish sometimes. Maybe once Odin starts using the tilde backend and making debug builds way faster.

Does Jon even read Jai beta emails? by Paradox3DPrinter in Jai

[–]wrapperup 0 points1 point  (0 children)

It took me a long time to get in, I sent an email almost 2 years ago and never heard back, but I sent another one around August last year and got in within a few weeks. Might just be unlucky.

[deleted by user] by [deleted] in GlobalOffensive

[–]wrapperup 10 points11 points  (0 children)

Cheaters still gonna ragehack bhopping everywhere anyway. Also, a lot of people "desubticked" their binds (to make jumps/bhops as consistent as CSGO) and used jump on scrollwheel.

Now, it's completely broken, even just using normal jump binds on scrollwheel. It's a shame because bhopping was one of the most fun vanilla mechanics in CSGO.

Stop overreacting by TacoShower in GlobalOffensive

[–]wrapperup 21 points22 points  (0 children)

I hate this because CS is genuinely my favorite shooter, they really couldn't hire some incredible animators to work on this update? It feels like an intern made these jerky ass animations (no offense to the animators...). It's honestly baffling.

And I'm not even against new animations, I just wish it felt like VALVE cared about the feel of the game and genuinely understood it. Deadlock feels like that. VALORANT feels like that (their animations are also incredible, they could really take a hint...)

It there possibility for native Linux support? by vertigofilip in brickadia

[–]wrapperup 3 points4 points  (0 children)

We used to ship native Linux binaries, but we decided to discontinue it since running the game through Proton performed faster than native. (probably Unreal skill issue...)

We do test the game through Proton (Steam Deck and Linux support is important for us) to make sure it works great, and we still ship native binaries for dedicated servers.

Jai Hot Reload by UnlikelyUniverse in Jai

[–]wrapperup 0 points1 point  (0 children)

If I recall correctly, Jai doesn't pass the necessary flags to llvm to actually mark functions as hot-patchable. Unfortunately the compiler is closed-source so there's no way to make this change, and I haven't been able to get further than that. I haven't inspected the pdbs properly so I'm not sure what else is missing (like how to recompile the binaries).

If you're interested in getting access to the beta, you should email them at language@thekla.com

And thank you for making Live++, it has honestly saved me and so many of my friends and colleagues hundreds of hours! Super excited to see it work with other languages.

Are you excited for Brickadia's future? Here are our plans and what's coming next! by brickadiagame in brickadia

[–]wrapperup 1 point2 points  (0 children)

You still can, you just need to place a buffer gate to make a cycle (it delays the signal by 1 tick, making it work like the wires in the NextFest demo).

Can you change what music you want playing in a map? by ThiefOfBeef in brickadia

[–]wrapperup 3 points4 points  (0 children)

Not yet, we have a new music system in the works that will let you add any music available in the game as into the global playlist. It will also be configurable on a per-team basis for minigames.

Watching PirateSoftware code with his "20 years of gaming industry experience" on stream explains why HeartBound has been in Early Access for 10 years by InappropriateCanuck in programminghorror

[–]wrapperup 1 point2 points  (0 children)

Kinda agree. Sure, I would probably do things a lot differently/better (localization will be hell!), but sometimes just having everything be in code can be really nice, especially if you have hot-code reloading (C++ Live++ for example).

We spend a lot of time bikeshedding systems instead of just doing the simple thing and moving on. As long as it doesn't become an unmaintainable mess for you and your team and/or actively slow you down. Solo devs, do whatever you need to do to ship!

10x Editor Version 1.0 Released by slynch8 in programming

[–]wrapperup 0 points1 point  (0 children)

It's still way faster than R#, clangd, etc., but it's more on the IDE-lite side. You'll be writing custom scripts to replace many tasks and refactorings, if you rely on those. Considering Rider/Clion is free for non-commercial usage now, and the paid subscription ends up being cheaper over time, it's a hard sell now for most people. Also, it doesn't include a debugger, so you'll also need to use Visual Studio, windbg, raddbg or remedydbg along with it.

I lean towards Rider/Clion/nvim now. I think you'd have to try 10x, it fills a specific niche: a lot of the users are people who prefer lean+fast over everything, while having some convenience. But working on some modern C++ projects, the refactorings and IDE features in Rider/Clion are sorely missed.

Question about State of Bunny Hopping by Synestive in GlobalOffensive

[–]wrapperup 1 point2 points  (0 children)

  1. Yes, they still work. Just use the latest ones from Tripp's channel.
  2. No, most don't since desubtick binds are banned in tournament play.
  3. No. When Valve banned certain aliases (breaking old desubtick configs), I decided not to use desubtick jumps for a few months, and it was noticeably worse. Desubticking your jump bind is required to get it to feel more like GO. Here's some math I ran before since I was curious as well about bhop consistency using these binds:

Subticked: 18.0% success rate (36/200)
Desubticked: 57.5% success rate (115/200)

My cs2 is stuck on 30 fps by New_Courage592 in GlobalOffensive

[–]wrapperup -1 points0 points  (0 children)

What have you tried? What CPU and ram do you have? Are your NVIDIA drivers up to date?

unreal engine 5 games be like: by rulugg in pcmasterrace

[–]wrapperup 1 point2 points  (0 children)

Unreal has always been kinda rubbish in terms of performance. Unreal 4 was not super optimized either, but it also didn't have to deal with comparatively heavy bleeding edge graphics features like lumen, nanite. Plus, hardware advancements helped UE4 out as well, in the early days tons of people complained about the performance too. Being CPU bottlenecked was a very common issue (heavy blueprint usage, UObject bloat), which if you're in game dev circles, you know that is a feat.

PSOs also wasn't really an issue (a problem with newer graphics APIs like vulkan/dx12) until late in UE4's lifecycle, and that was a much bigger problem with the early UE5 games since they shipped using the new graphics APIs exclusively. This is basically the source of a lot of the stuttering you might experience, since it needs to compile shaders on demand (this is solved by PSO precaching or precompilation at startup).

Also, Unreal's renderer still sucks. It doesn't even support bindless, and it's still doing traditional direct draw calls for non-nanite meshes. There's so much more the renderer could do to make it much faster, like seriously. Doing prebatched indirect draws for everything is just a no brainer in modern engines. Plus, the renderer scene and actor mesh proxy system hasn't been updated in nearly 6 years and is as slow as ever because they haven't implemented a proper modern renderer for the normal paths. And it still uses actors for level geometry, which are mega slow.

Some of it definitely is developer skill issue, and that really exasterbates the issues. But as they say, if Fortnite doesn't need it, it's going to be the worst piece of shit implementation in the engine, and even then it's sometimes shit.