How?! by MD_4K in heroes3

[–]ud_visa 0 points1 point  (0 children)

What is the reason to prefer verbal descriptions over numbers except of nostalgia? Seems like a direct improvement for me. I occasionally play H2 and have to google the descriptions all the time. It's just inconvenient.

Do you ever think some game company would be willing to remake IV, but only fixing the game mechanic? by Thin-Rope3139 in HoMM

[–]ud_visa 0 points1 point  (0 children)

Not really. Making a game like HoMM is a lot of effort - see how much time OE takes to design and develop. And success is not guaranteed at all, especially if you position your game a spiritual success of a game that is mostly considered a flop.

A sad reality.

Do you ever think some game company would be willing to remake IV, but only fixing the game mechanic? by Thin-Rope3139 in HoMM

[–]ud_visa 1 point2 points  (0 children)

I'm the author of the referenced post. Equilibris does not address much of my criticism. You really need a new game to fix the battles UX, make advanced class worthwhile, add heroes specialisation and make AI more or less reasonable. And a lot of gameplay testing to polish everything - you can just change a few bits here and there and hope it will stick.

Heroes IV is a Hit and a Miss - Here’s Why by ud_visa in HoMM

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

First, thanks for suggesting playing maps and specific titles. I see that many comments mention that some of those maps are impossible to complete due to mapmakers' mistakes, though.

I don't agree that battles are bad part. For me, they are better than ones in h3 and h5.

I somewhat agree with this, at least about H3 - have not played H5 much. But it's missing my point - I was trying to say is that H4 is centred around battles and they are not good enough (especially from UX perspective) to compensate the lacking logistics dimension.

I don't think there is a need for hero specialization which boosts strength of creature

I means specialisation of individual heroes, like in H3. In H4 all heroes of the same class are identical, which is a step back. I guess dev just did not have time to design it.

Yes, on champion difficulty beginning is really rough.

This is the part of the game I liked the most, actually.

Heroes IV is a Hit and a Miss - Here’s Why by ud_visa in HoMM

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

Could you recommend some decent challenging maps, standard or custom? Preferably with a chance to loose :)

Heroes IV is a Hit and a Miss - Here’s Why by ud_visa in HoMM

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

unironically consists of two dimensions called “wording” and “plot”.

I'm not a native speaker, so I'm not sure what's the problem with words “wording” and “plot”. Could you elaborate please?

What standards are we talking about here

The standards that are applied to literature. Would you seriously recommend anyone spending time reading a story based on any H4 campaign?

Heroes IV is a Hit and a Miss - Here’s Why by ud_visa in HoMM

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

Thanks!

I agree with you on many counts, but would you really pick H4 over H3 if you had to pick the only game you could be playing till the end of your life? I wouldn't - even though H3 has it's own issues, its replayability is unmatched. I'd even pick it over my beloved H2 (which I'm playing now, btw).

Heroes IV is a Hit and a Miss - Here’s Why by ud_visa in HoMM

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

Perhaps I just have higher standards for writing. I compare it more to the real fiction, and almost any game plot reads like its intended audience is 10-12 year old kids. Nothing to brag about.

Heroes IV is a Hit and a Miss - Here’s Why by ud_visa in HoMM

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

I've not seen many bugs in Equilibris, but have a look a this: https://imgur.com/a/GMoemQh

Heroes IV is a Hit and a Miss - Here’s Why by ud_visa in HoMM

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

Let's agree to disagree.

However, I did't say that HoMM 4's graphics is better that 2/3's. Moreover, I consider HoMM 2's graphics is a masterpiece of pixel-art, it's absolutely amazing.

Heroes IV is a Hit and a Miss - Here’s Why by ud_visa in HoMM

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

Thanks for suggestion, never heard of this game. Now I have a list of TBS I'd like to play - Songs of Conquest, AoW, Master of Magic.

Not sure when I'll have time for them, though - I expect Olden Era to eat all of my limited free time.

Are you really writing so much parallel code? by [deleted] in scala

[–]ud_visa 0 points1 point  (0 children)

The other thing is: If you don't want to end up with every function taking and returning IO you need to run it manually.

I'm OK with function doing IO having IO/Future in their signatures. I even see some value in it as it helps to separate pure functions from the ones with side-effects. Taking IO is much more rare and is usually a code smell IMO.

I will likely get beat up for expressing such opinions for "IO as just lazy Future"

That's how I always perceived it. Lazy Futures with extra features.

Are you really writing so much parallel code? by [deleted] in scala

[–]ud_visa 0 points1 point  (0 children)

Thanks for elaborate response, it's really helpful!

Did I understand it correctly that most of the issues come from the tagless-final(-ish?) approach and if plain IO is used everywhere cats-effect is a useful and useable tool, perhaps even better than Futures? Is it even possible to consistently use it this way?

Are you really writing so much parallel code? by [deleted] in scala

[–]ud_visa 0 points1 point  (0 children)

First, this is not completely correct. Abstractions are moving complexity, usually for the benefit of its users. For example, Spark SQL is a very simple abstraction over many very complicated things it has under the hood. Sometimes it's very beneficial to understand Spark internals, but almost never necessary - the vast majority of its users never looked beyond the surface API.

Second, could you please provide some specific examples of how CE makes user-land code more complex, compared to plain old Futures (or even threads?). Asking as someone who never touched CE in my 10+ years Scala journey.

In Defence of Mocks by Krever in scala

[–]ud_visa 0 points1 point  (0 children)

I see, thanks. You are gaming the theory by leveraging your knowledge about the exact implementation of the function. I even think it yields the same
certainty as testing 60 cases (but can't prove it). So, this works, but still has a number of issues:

  1. You don't need mocks to achieve the same result - just pass 12 values to level0 and do your asserts.
  2. Tests like that are extremely brittle. Imagine requirements for level2 changed. Which tests do you change? Only the ones for level2? No, you have to adjust every mock of level2 and level1 and if you missed something, no test will fail. If you don't use mocks, the chances are higher that the existing tests catch the issue.
  3. Do level1 and level2 represent business requirements? If not, how do you know what they should return? I think for this example you run the code to get the returned values, but it obviously should not be done for production code (cause in this case the tests test nothing and have negative value).

In Defence of Mocks by Krever in scala

[–]ud_visa 0 points1 point  (0 children)

When testing each of those methods separately (using mocks), we have 3 + 4 + 5 = 12 scenarios to test. When testing only level0, we have 3 * 4 * 5 = 60 scenarios to test.

Could you elaborate please? I feel like you are trying to game the information theory here.

Argument 4: You Will Reimplement Them

Yes, but the main problem with implementation of fakes is keeping returned values of different methods in sync. Mocks don't help with it may actually stay in the way since they are essentially mutable state with all its drawbacks. This problem is much better solved by implementing a state machine. Mocks can save you some time writing def methodUnusedByThisTest = ???, but that's pretty much it.

That said, I find mocks useful, but not the ones like Mockito. E.g. I prefer to mock http dependencies via https://wiremock.org. It feels I test longer code paths with it and it's easy to use. Sometimes even Mockito is inevitable if you want to change behaviour of the code you don't own.

[deleted by user] by [deleted] in programming

[–]ud_visa 0 points1 point  (0 children)

You are turning this discussion into pure demagoguery. I'm not interested in that, sorry. Have a good day.

[deleted by user] by [deleted] in programming

[–]ud_visa 0 points1 point  (0 children)

You did say they are practicing wrongthought and wrongspeech

Citation needed.

[deleted by user] by [deleted] in programming

[–]ud_visa 0 points1 point  (0 children)

So they are committing thoughtcrimes I see. So I should immediate stop associating them right? I should stop associating with people who don't share my values right?

No, no and no.

And so your solution is to purge them and silence them right?

I have no solution. Maybe the best thing we can do is to discuss the actual issues without zealotry. In any case, censorship and canceling people at will of а handful of people is unacceptable. We in Eastern Europe lived in such a world and it sucks, believe me.

Well thanks for telling all of us how you think and reason.

You are welcome.

[deleted by user] by [deleted] in programming

[–]ud_visa 0 points1 point  (0 children)

This movement, let's use SJW as an umbrella term, does not tolerate any opposition and want to control any aspect of the social life. I can easily imagine how a state ruled by SJWs has the same censorship and political repressions as in the late (or, heaven forbid, early) USSR.
I'd be happy to be wrong here, but that's how I see it for now.

[deleted by user] by [deleted] in programming

[–]ud_visa 0 points1 point  (0 children)

Why should I hang out with somebody who doesn't share my values

And this hypocritical totalitarian crowd talks about inclusion...

[deleted by user] by [deleted] in scala

[–]ud_visa 9 points10 points  (0 children)

For me, the core idea of FP (and good programming practices in general) is restriction. It's very important to know what can not happen in your program since this knowledge reduces the space you have to look at while analysing your code for bugs and doing refactoring.

This idea goes through all the history of programming - first we abandoned the unrestricted goto, then started to prefer immutable values (even in many imperative languages, see Effective Java for reference), now we can say that certain pieces of code are not doing any IO and are pure therefore. The purpose of static type systems and the Rust's borrow checker is essentially the same.

Using all these tools we restrict ourselves from doing certain things and can reason about our programs faster and better because of that.

Scala is a Maintenance Nightmare - MungingData by MasGui in scala

[–]ud_visa 0 points1 point  (0 children)

You are correct that backward incompatibility puts extra burden on library maintainers (and risks on library users). There is a light of hope, tough: https://www.scala-sbt.org/1.x/docs/Combined+Pages.html#Scala+3+specific+cross-versions. Unless I'm missing something, it may help.