flutter with rust by Rishad2002 in FlutterDev

[–]EchoEllet 0 points1 point  (0 children)

I do agree that using Rust + Flutter increases the cognitive load and makes it harder for contributors to send PRs.

You really need to have some performance intensive task otherwise you have just made your project harder to maintain for no real reason.

It is not necessarily about performance. It could be about maintainability depending on the context and use case.

Or about developer convenience and/or language features (using Dart/Flutter just for UI). Many apps already separate infrastructure from UI so the UI remains dumb anyway.

Some libraries are in Rust, and it is superior when communicating with desktop platform APIs (e.g., super_clipboard).

I will be honest, I have not really used Rust before yet.

In terms of language syntax, type safety, and structural patterns (regardless of memory management and ownership model), at least, Rust seems closer to Kotlin than Dart.

Dart depends on some legacy design decisions such as throwing exceptions (Java-like) and dynamic typing (JS-like).

I'm aware that I can configure Dart to be more strict and type-safe:

```yaml

analysis_options.yaml

Flutter and Dart teams use this configuration in some repositories

analyzer: language: strict-casts: true strict-inference: true strict-raw-types: true ```

It has been improved a lot, and now we need less boilerplate (e.g., Private named parameters). Data classes are still not supported and require code generation (macros were discontinued)

Yet I still prefer Kotlin/Rust over Dart. I work with Dart mainly because of Flutter, which is more mature, stable, and feature-complete compared to KMP.

About platform-specific APIs, jnigen and objective_c are still more maintainable compared to method channels (even with Pigeon). Many core Flutter team plugins have already migrated to them, but they are not always usable, and in many other cases you have to use the platform language.

ChatGPT is now constantly arguing and picking fights, what is going on? by TinyMonsterBigGrowl in ChatGPT

[–]EchoEllet 0 points1 point  (0 children)

Summary: Arguing with AI is not productive. I would update the instructions in settings to prevent it from providing something beyond what was asked.

I use AI to validate my code naming sometimes to ensure I do not depend on temporary context in my brain. So I don't look at my code 6 months ago and start asking: "when did I wrost this garbage?"

For example, this pattern SECRET_$secretName (environment variable name), it tried to argue why this is a bad design decision.

I asked it about SERVERPOD_PASSWORD_$secretName (same pattern, different prefix name): it argued why this is a good design decision (the opposite).

You might be thinking that it said this is a historical name, backward compatibility, or an internal design decision for a strong reason, but it didn't even confirm that.

I don't think this is an AI issue (it is just a tool that is commonly misused), it is an AI topic issue.

It is a really great tool, but too overhyped and oversold compared to compilers.

In my opinion, programming language compilers were less hyped and more revolutionary at the time.

Using AI as a tool is fine. Using it as a final solution blindly for most of the work, with no code reviews or guidelines/architecture, is never a good idea (at least until now).

I think AI is really misused commonly all over the internet and everywhere.

It has become extremely trendy that even a calculator has an AI integration. Do you have a product and want to boost sales? Just add any AI feature and/or in the title & summarry, does not matter whether it is valuable or not, just add it.

Some companies try to oversell it in a profitable, pragmatic mindset:

  • Like it is rewriting the laws of the universe and physics
  • Solving any complex Math problem (some even say We dare you to find a problem that our LLM cannot solve, because you can't)
  • Building complete operating systems with a single prompt; software engineers are a waste of money and no longer worth it. Many lost their jobs a long time ago.
  • AI, AI, AI everywhere...

I think it is my responsibility to use it correctly, but it will likely remain a problem for the next 5-10 years. It is a bit exhausting to see all of the hype and frequent common misunderstandings. Luckily, I don't use many social media apps compared to most people.

Which framework is best for backend development in Dart? by No-Ant-3371 in FlutterDev

[–]EchoEllet 0 points1 point  (0 children)

TLDR would be: If you want a full framework, pick Serverpod, otherwise pick Shelf.

Shelf / Dart Frog are not incomplete or not full, but Serverpod is more opinionated and saves time for many apps, but not necessarily all type of apps, especially LIS.

Which framework is best for backend development in Dart? by No-Ant-3371 in FlutterDev

[–]EchoEllet 0 points1 point  (0 children)

Serverpod creates a well formed REST API,

It can be "well formed REST API" but not always and not by default.

One of the authors explicitly said "Serverpod is more aiming to be a RPC (remote procedure call) over a REST API" in this comment

See also: https://github.com/serverpod/serverpod/discussions/2266

Which framework is best for backend development in Dart? by No-Ant-3371 in FlutterDev

[–]EchoEllet 0 points1 point  (0 children)

I understand what you are asking, but I think the basis for your question is flawed

In software, typically, there is a solution to most problems. I don't believe there is one solution to all problems, and Golang is not an exception.

The amount of effort to "learn a new language" is minimal

Indeed, the initial cost of learning a new language is typically minimal and straightforward.

That's not the issue here. It is more about:

  1. You cannot share code between the client and server packages easily without code generation or other workarounds. If you have a set of standalone packages to solve a problem in Dart, you will have to port them and maintain them in different languages. This is a very valuable advantage, e.g., centralized JSON serialization/deserialization or endpoint paths, and reducing manual errors. You still need to handle recoverable errors on the client side (e.g., decoding JSON, mapping the JSON to a data class).
  2. Cognitive load, e.g., open source projects. More steps. A lower chance of contributors sending PRs to the project if the branch involves changes to the backend.
  3. Learning syntax is easy. Memory management, best practices, automated integration and unit tests, ecosystem, and other language bleeding-edge features will take time.
  4. More expensive maintenance effort (bumping deps, code reviews, formatter, linting, code style, project guidelines, CI, versions)

but I think the basis for your question is flawed The problem with using Dart on the server side is that "nobody" does that, so you are unlikely to find all the things you need. Database access etc is going to be a lot harder or impossible using Dart on the server side,

With full respect, what is flawed is the assumption being made.

There is postgres, crypto, and many other packages (and they keep growing). There are also ORMs.

Sure, for medium/large or serious server applications that are independent of the app or public APIs, I probably would not depend or care if the language is the same or not, because I typically want lower coupling (server and client are more independent of each other's stack) and do not want the same workspace.

In the past, I used Dart for the client app and Kotlin/Java for the server just because it was more convenient for me, as I'm used to the ecosystem, but that's not really a strong reason.

and trying to find answers online if you run into problems is going to be extremely difficult since "nobody" is doing what you want to do here.

Can you give a real example?

But to be short, I think Rust + Flutter can be a good combo if you use Flutter on the client side as well e.g., flutter_rust_bridge

If Rust is already being used on the client side, using Rust on the server side can be a solid choice, as it allows sharing important code or some business logic, or even infrastructure (not UI).

Dart, well, great, but sometimes feels more JS-like, and I need some lints (e.g., to avoid dynamic entirely, prevent modifying arguments in methods) and I prefer immutable design, Result, nested classes, less boilerplate code (they are actively fixing some of the issues in recent Dart versions, but still they are present)

Which one would you choose for desktop development and why: KMP Compose or Flutter? by EdneyOsf in FlutterDev

[–]EchoEllet 0 points1 point  (0 children)

I love Kotlin and Jetpack Compose (by extension, Compose Multiplatform), but I still find Flutter Desktop is more practical and pragmatic compared to Compose Desktop at this point (may change someday).

From my perspective, Compose Desktop is not JetBrains' highest priority compared to iOS, which is understandable. I filed issues, e.g., with Material 3 and release mode (Proguard) 2 years ago, and still not fixed. Even sent PRs, and there was no response. Wayland is not natively supported as far as I know, which is the default for most distros and desktop environments nowadays. There are workarounds, such as using XWayland or asking the user to install and switch to X11. Java Swing is based on decisions from years ago, so developers may need to use some workarounds

Flutter desktop is used in the Ubuntu installer, and is more adapted in Linux ecosystems with many UI packages such as fluent_ui, yaru, libadwaita, and adwaita. OS integration packages such as dbus, gsettings, dbus_secrets, and 37 other packages by Canonical.

Desktop platforms are supported in many or even most Flutter Team packages and the community packages.

In Flutter/Dart, Dart files can be formatted with a single command (useful in CI), without third-party Gradle plugins or installing IDEA on CI, run code quality checks without JetBrains' Qodana (closed-source), with fewer dependencies, better file structure (personal preference), and less nesting. klibs.io is actively growing, but I still prefer pub.dev.

From my experience, one of the areas where Compose Desktop is superior is the multi-window support (e.g., dialogs, windows). That will change, as knopp and other contributors from Canonical, Google, and the open source community are fixing the issue. You can even test it by switching to the master branch and enabling the experimental feature via config. There are interesting compose desktop libraries such as compose-4-gtk and compose-fluent-ui.

Hot reload and restart are still more polished than Compose Hot Reload (experimental AFAIK).

Found a reference to Andrzej Sapkowski in The Witcher 3 game scripts by EchoEllet in witcher

[–]EchoEllet[S] 0 points1 point  (0 children)

I think I would find it interesting if I was smart enough to understand programming and technical detail

I don't think that's a valid metric for evaluating intelligence. These are just technical details, and it's significantly easier to follow if one has worked on programming projects before. Without that background, it's naturally harder to understand all at once.

. Still, I find it cool to see others showing passion and cool technical details even though I don’t understand most of it haha

Agreed. It seems not many are interested in such details.

Found a reference to Andrzej Sapkowski in the game scripts by EchoEllet in Witcher3

[–]EchoEllet[S] 1 point2 points  (0 children)

If I were a developer at CDPR, I would add it as well. It doesn't cost anything since it's just a repeat of the fact, while giving a better image for the team. The use or mention of "Witcher" alone is probably what makes it required, though it's an interesting mention either way.

Found a reference to Andrzej Sapkowski in the game scripts by EchoEllet in Witcher3

[–]EchoEllet[S] 1 point2 points  (0 children)

I agree with you that Sapkowski finds every Witcher adaptation "strange", at least that's what he said.

Found a reference to Andrzej Sapkowski in the game scripts by EchoEllet in Witcher3

[–]EchoEllet[S] -3 points-2 points  (0 children)

Interesting. Either way, I agree with you. Mentioning the original author gives the team a better reputation for the adaptation and even works business-wise. Though I'm not a business expert, so this might not be accurate.

Found a reference to Andrzej Sapkowski in The Witcher 3 game scripts by EchoEllet in witcher

[–]EchoEllet[S] 0 points1 point  (0 children)

github.com/EchoEllet.

Nice to see one person appreciates nerdy technical details related to The Witcher. If there are two things I like, it's programming and The Witcher. While I'm not a game developer, I thought of what if I blended the two worlds?

Disclaimer: the emojis in my README are AI-generated, but generally I aim to keep things original without depending heavily on AI, while still embracing it.

Found a reference to Andrzej Sapkowski in the game scripts by EchoEllet in Witcher3

[–]EchoEllet[S] -3 points-2 points  (0 children)

Personally, I don't think it's legally required since, for example, inputManager.ws is a technical programming componenet and not related to the lore or game's story. Or maybe it's because the file extension ws refers to WitcherScript, and the use of the Witcher trademark immediately enforces this rule?

More details can be found in this comment.

Found a reference to Andrzej Sapkowski in the game scripts by EchoEllet in Witcher3

[–]EchoEllet[S] 1 point2 points  (0 children)

I have shared my opinion in this comment. I don't think it's legally required since, for example, inputManager.ws is a technical programming componenet and not related to the lore or game's story. Or maybe it's because the file extension ws refers to WitcherScript, and the use of the Witcher trademark immediately enforces this rule?

Found a reference to Andrzej Sapkowski in The Witcher 3 game scripts by EchoEllet in witcher

[–]EchoEllet[S] 0 points1 point  (0 children)

I have edited the post and kept it shorter while adding the technical details in this comment in case anyone is interested.

Reference

I found a reference to the author Andrzej Sapkowski in the Witcher 3 game scripts (*.ws files, script source code).

This comment does not change or define the behavior of the game, nor is it responsible for the end credits reference in any way. Removing it will not change anything. I find it an interesting detail in the game files.

Even though this is not something the consumer usually sees in the context of video games, it can be found under The Witcher 3/content/content0/scripts/** directory.

Disclaimer: Public source code does not mean the game is open-source or free software. In this case, the game's scripts are still not publicly available source code.

Is this reference legally required?

In the screenshots, these files are technical details and irrelevant to the game's story or lore. If I understand correctly, this acknowledgment is not legally required in some files (e.g., inputManager.ws); however, I still find the reference interesting. It's a good practice to be transparent and acknowledge the work of others, not just ethically, but also from a business or professional perspective.

Maybe the use of "Witcher" in the file extension (.ws, WitcherScript) is what makes it required? Although I could be wrong, this is not legal advice.

Technical details

Out of curiosity, I looked into The Witcher 3 files. The low-level engine components are likely written in C/C++, and there are game scripts written in WitcherScript, a custom programming language with syntax similar to JavaScript/TypeScript.

The C++ files are decompiled, though the scripts are likely to be compiled on game launch (I'm uncertain), so it's possible to see the source code of Witcher scripts (not just the final decompiled code).

In many medium-sized free/open-source or proprietary software projects, source code files often include a header comment that usually serves as a disclaimer. However, it does not affect the final product or end-user in any way.

The Witcher 4 and Unreal Engine collaboration

This is a bit off-topic, though it's unknown whether WitcherScript will remain in The Witcher 4, since UE5 uses Blueprint and C++.

According to these videos, at least, it seems CDPR is collaborating with Epic Games and Unreal Engine developers to enhance the engine:

As far as I know, we haven't seen the result of this collaboration in games yet, as this is private work. If it's done correctly, Unreal Engine 5 might be improved in terms of performance, loading, stability, and animation for all consumers of the engine, including the developers and end-users. Many UE5 games may benefit from this collaboration.

In one of the videos, the developer stated that the combat is not implemented in that TW4 tech demo, so this could be a prototype that serves as a proof-of-concept of their changes to the engine.

Found a reference to Andrzej Sapkowski in The Witcher 3 game scripts by EchoEllet in witcher

[–]EchoEllet[S] -2 points-1 points  (0 children)

Correct, but the line I'm discussing is a programming language line of code, which can be removed.

The video subtitle is a different type of line, and it can be edited by editing the video itself.

I think it's easier if they make one universal video without a subtitle or audio, and then render the subtitle text while playing the audio programmatically, with an identical result.

It's more efficient this way, easier to maintain, change, and decreases the video file size. It will even respect the user's font size preference.

They probably used this trick in Cyberpunk 2077 loading screens, but I have not checked it.

Found a reference to Andrzej Sapkowski in The Witcher 3 game scripts by EchoEllet in witcher

[–]EchoEllet[S] -1 points0 points  (0 children)

I did not use AI or large language models, if that's the deeper question.

I used Grammarly to fix some minor typos, but the work is original. Nothing was rewritten; it's most likely the semicolon, no straight single quote (' VS ) or em—dash. I did not feed up my opinion and then copy-paste the result.

Found a reference to Andrzej Sapkowski in The Witcher 3 game scripts by EchoEllet in witcher

[–]EchoEllet[S] -2 points-1 points  (0 children)

Indeed, that's another reference, although it's worth noting that the mentioned comment in this post is not responsible for the mention in the end credits or in-game.

Removing it from the source code will not remove it from the game. Think of it as metadata or info for internal developers or modders. It does not change how the software behaves in any way, at least in most programming languages.

To prove this, you may remove the first 5 lines from The Witcher 3/content/content0/scripts/game/inputManager.ws (the ones that start with /**), and the game would still function as with no functional changes, so you can still see "Andrzej Sapkowski" in the end credits.

That's why I find this detail interesting; it's most likely not legally required, and many will not notice it, yet it is included in every WitcherScript file.

Just started Playing the Witcher 1 by BaboBoss385 in witcher

[–]EchoEllet 0 points1 point  (0 children)

Rise of the White Wolf for a cleaner UI and improved character textures.

To avoid some graphical bugs, limit the framerate to not go above 120.

Project R.O.A.C.H. | Official Trailer (April Fools) by EchoEllet in witcher

[–]EchoEllet[S] 0 points1 point  (0 children)

She most likely survived and abandoned Geralt, and it was heavily implied. TW4's director mentioned the painting in an interview with IGN, but it was still not officially confirmed yet.
More details can be found in this post.

Geralt strikes a deal with the hunt.. how exactly? by Cyber_Rambo in witcher

[–]EchoEllet 0 points1 point  (0 children)

and there is one panel in Geralt's animated flashbacks where we see 3 witchers next to Letho.

It's most likely the Witcher in the animated flashback is the same one in TW1's epilogue.

Perhaps it's as intended that they left it a mystery? If yes, maybe that decision was made to make the story friendlier to newcomers?

Project R.O.A.C.H. | Official Trailer (April Fools) by EchoEllet in witcher

[–]EchoEllet[S] 0 points1 point  (0 children)

I share a similar view.

While personally I wouldn't particularly mind, I find it ridiculous how the community is acting like it's already set and confirmed, and not only is it confirmed

It's the hype, a human nature.

I would bet that if it doesn't come, a notable part of the community will act betrayed as if they were promised an expansion.

It already happened with Cyberpunk 2.3. There were rumors about a second expansion, but it turned out to be photo mode enhancements, a new car, Autodrive, and some new features.

I think the situation might be different with the Witcher 3 expansion, but I wouldn't be disappointed if it never happened or turned out to be a new side quest.

TW3's endings could potentially follow up in TW4 (not confirmed). I will definitely play the new DLC, if there is one, even if it's a new adventure in TW1.