Die4Ever

@Die4Ever@programming.dev
34 Post – 504 Comments
Joined 1 years ago

Developer of Deus Ex Randomizer, StarCraft 2 Randomizer, RollerCoaster Tycoon Randomizer, Build Engine Randomizer, and Groovie 2 in ScummVM

https://lemmy.mods4ever.com/communities

https://mods4ever.com/

here's a good video essay https://www.youtube.com/watch?v=rxOKEsBx4NU Ross's Game Dungeon: Deus Ex

and https://www.youtube.com/watch?v=bgJazjz9ZsA Deus Ex: Human Revolution is FINE, And Here's Why

1 more...

I would suggest against GMDX for a first time playthrough, it changes A LOT. From the aesthetics, to the gameplay, to the sounds, the mood, the feel of the game, and the viable approaches in each level, there's so much that's changed it just isn't the same game anymore.

You're much better off with the Vanilla Fixer tool, Transcended, or Zero Rando (I'm the dev). You could also use Revision and toggle every setting to vanilla, but make sure you also disable the HDTP models, and disable Shifter and Biomod too, and definitely set the maps to vanilla.

1 more...

I feel the same way about the prequels, but I think the original game is the best game ever made.

we've got a megathread for discussion over at !speedrun@sh.itjust.works - https://programming.dev/post/16201685

but maybe there will be more discussion here instead?

anyways, it's live now, HYPE! https://www.twitch.tv/gamesdonequick

this is in person

I agree about some gimmicks like 2 players 1 controller, or playing games with a dance pad or whatever, they seem difficult but still feel like gimmicks to me

4-way races are ok if you're familiar with the game and speedrun already, but otherwise hard to watch

Agreed lol, and Threads

Allo

2 more...

I'm doing my part! Cool to see my little change finally released, I hope people like it

https://github.com/LemmyNet/lemmy-ui/pull/2073

2 more...

I think it's just a comparison because during the Reddit Exodus people often suggested Discuit instead of Lemmy because ActivityPub is "too complicated". So I guess this is a good demonstration that federation really is our best hope at replacing the big billionaire social media platforms.

As another point of reference vs Discuit's 6,787 registered users, Lemmy has 1,904,195 registered users. Kbin has 66,175, and Mbin has 5,453 registered users.

4 more...

Lemmy needs more tools to help avoid defederation. Like the admins being able to block communities (defederating a community interested of the entire instance), or hide posts from a community/instance from c/All so people who are still subscribed or manually search can still find the posts

Also users should be able to block instances just for themselves, just posts or comments as well

13 more...

there was a discussion about this same post before, I'll just copy paste my comment...

That post complains about not being able to view/manage images hosted by your instance, but v0.19.4 already fixed that last week? So that kinda disproves them saying the Lemmy developers didn’t want it to be possible. Also the post complains about the amount of storage used by caching images but that was also fixed/improved in v0.19.4

23 more...

They just needed to offer lots of storage so they could kill off Dropbox, now that it's mostly dead for consumers, it's time for Google to make money with their monopoly. Even though storage prices have gone way down.

given how many ‘Twitter alternative’ services like Threads and Bluesky are cropping up

I wish they would mention Mastodon lol

1 more...

I'm surprised there was no issue filed for this already, maybe I just failed to find it, but I made a new issue

https://github.com/LemmyNet/lemmy/issues/4412

if anyone wants to give it a thumbs up reaction then the devs will know to prioritize it, and if you have any ideas you could leave a comment there

Edit: that was somewhat a duplicate of this issue

https://github.com/LemmyNet/lemmy/issues/2951

Give that one a thumbs up

curious if we'll see commits from governments into the Mastodon repo lol

scaled sort is coming in v0.19.0 https://github.com/LemmyNet/lemmy/pull/3907

2 more...

at this point I think we might need comments more than posts, there's lots of posts already but most of them are lacking comments

16 more...

side-loaded videos

Fucking Apple lol, just let people play video files, this should be basic minimum functionality

2 more...

I hate that people associate things in this way. Like if I see a bad website I don't think "wow Linux really sucks" or Nginx or Cloudflare or whatever other technologies they're using. I don't watch a bad movie and think the Blu-ray player is the problem.

1 more...

for reference, this is what it looks like on Mastodon, the post to !announcements@lemmy.ml it gets the hashtag for announcements

https://mastodon.social/@dessalines@lemmy.ml/112576601493225058

it's not really part of the message text, it's separate

1 more...

I think when telling someone to signup, don't give them a list of instances, just give them 2 to choose from

"Signup here, or here. Doesn't matter which one you pick because they're both linked and we'll be able to see the same posts."

Especially if you know their interests maybe you can suggest an instance focused on that, or one that hosts a community

4 more...

yea the reason to want more users is for niche communities, I don't need a billion people just for memes or news, but when you subdivide your users down to niche communities suddenly you'll want more

I wish there were more people on Lemmy talking about Deus Ex, The 7th Guest, DOS games, Randomizers, or specific TV shows that I'm currently watching (Reddit always had a pretty active sub for each and every show)

The GitHub issue is here, you could put a thumbs up reaction on it, and also subscribe to the issue to get updates about it

https://github.com/LemmyNet/lemmy/issues/2987

This is not an answer that will work for growing Lemmy. Most people do not want to buy a server and domain name to use Lemmy, and then they gotta learn how to use Linux and docker and figure out how to get it all working? Most people don't even know what Linux or SSH is. And then they need to read a huge list of instances to see which ones they want to block? And they gotta worry about keeping it up to date, and security issues, and watch the disk space usage. They would rather just stay on Reddit instead.

Also your solution still doesn't address blocking/hiding posts but not comments, or hiding posts in the feed but still showing them in searches or in the specific community.

2 more...

yea people get drowned out by these bots and they feel less inclined to contribute. I know I was less likely to leave a comment on Reddit when there were already many comments. I was less likely to post on Reddit when a subreddit was already getting many posts. I post and comment more here on Lemmy because it doesn't get drowned out. If we wanna grow then it needs to be natural, not via bots.

everyone do yourself a favor and go to your settings page and uncheck the option for "Show Bot Accounts", it's unfortunate that I can't keep the few good bots visible but there's just too much bot spam now.

Honestly too many things to list. When it's finished the devs will post the changelog. But the scaled sort option is a popular addition, remote follow is cool, giving users the ability to block instances, and a bunch of fixes too.

There's been some posts about a few of the updates, but a complete changelog won't be until the release happens, which should be this year?

https://lemmy.ml/post/5328302

https://lemmy.ml/post/6097110

https://lemmy.ml/post/6754481

https://lemmy.ml/post/7440981

https://lemmy.ml/post/8090844

7 more...

It's very hard for people to accept that there are other things that may need to be worked on before their requested fix/feature. Every big project has a huge backlog of issues/feature requests, you can't do them all in 1 day or even 1 year. Especially with low funding lol.

21 more...

I think ActivityPub states that you must follow a user for their posts to federate, but Lemmy currently doesn't give a way to follow users only communities, so it will probably eventually work

(I think technically communities are fake users that retweet/boost the posts to them?)

Just wait until v0.19.0, gonna be such a good update

13 more...

Scaled: Like hot, but gives a boost to less active communities

https://join-lemmy.org/docs/users/03-votes-and-ranking.html

On Reddit we had r/hardware which was great for this

Here we have !hardware@lemmy.ml but I haven't checked it out much yet

1 more...

I don't think this is entirely true, I think the number of subscribers is just not perfectly synced. My instance doesn't even allow signups, I just have my single admin account on there, but the communities have quite a few subscribers

https://lemmy.mods4ever.com/communities

5 more...

well my Lemmy backups did exceed 10MB, but the 0.18.3 database optimizations brought me under 10MB again lol

11M Jul 28 22:35 bak-lemmy-2023-07-28_22.35.52.zip
8.8M Jul 28 22:39 bak-lemmy-2023-07-28_22.38.59.zip

(hosting an instance with communities but no users doesn't need much hardware at all btw)

2 more...

I like how the cracks in the monitor extend beyond the glass lol

ok maybe not my biggest or cleanest optimization, but an interesting one

I made the WCS Predictor for StarCraft 2 eSports, which would simulate the whole year of tournaments to figure out the chances for each player qualifying for the world championship (the top 16 players by WCS Points), and it would also show the events that would help/hurt the players. It was a big monte carlo simulation that would run millions of iterations. (My memory is fuzzy here because this was 2013 to 2014)

Originally I did a data-based approach where each Tournament object had a vector of Round objects (like round of 32, or semifinals, etc) which had a vector of Match objects (like Soulkey vs Innovation, or a 4 player group). The Round class had a property for best_of (best of 3, best of 5, etc). This was really inflexible cause I couldn't properly simulate complex tournament formats that didn't fit my data, and it required a lot of if statements that could cause branch prediction misses.

A tournament definition looked something like this:

::: spoiler older code example

		Round ro32("ro32");
		ro32.best_of=3;
		ro32.points_for_3rd=150+25;
		ro32.points_for_4th=100+25;
		Match ro32GroupA;

		ro32.matches.push_back(ro32GroupA);
		ro32.matches.push_back(ro32GroupB);
		ro32.matches.push_back(ro32GroupC);
		ro32.matches.push_back(ro32GroupD);
		ro32.matches.push_back(ro32GroupE);
		ro32.matches.push_back(ro32GroupF);
		ro32.matches.push_back(ro32GroupG);
		ro32.matches.push_back(ro32GroupH);

		GSL.rounds.push_back( ro32 );

:::

When I rewrote it for the following year, I ditched the data-driven approach to try to get more efficiency and flexibility, but I definitely didn't want virtual functions either, so I decided to use templates instead and a custom class for each tournament. Now creating a tournament looked like this:

::: spoiler newer code example


template
class Round : public RoundBase
{
public:
	MatchType matches[num_matches];
// ... more stuff ...
};

class CodeSBase : public TournamentBase
{
public:
	Round<32, SwissGroup, 8, RandomAdvancement<16, 16>, true > ro32;
	Round<16, SwissGroup, 4, A1vsB2<8, 8>, true > ro16;
	Round<8, SingleMatch, 4, StraightAdvancement<4, 4>, true > quarterfinals;
	Round<4, SingleMatch, 2, StraightAdvancement<2, 2>, true > semifinals;
	Round<2, SingleMatch, 1, StraightAdvancement<1, 1>, true > finals;

	void init(vector &prev_matches, vector &upcoming_matches)
	{
		quarterfinals.best_of = 5;
		semifinals.best_of = 7;
		finals.best_of = 7;
		ro32.points_for_placing[3] = 100;
		ro32.points_for_placing[2] = 150;
		ro16.points_for_placing[3] = 300;
		ro16.points_for_placing[2] = 400;
		quarterfinals.points_for_placing[1] = 600;
		semifinals.points_for_placing[1] = 900;
		finals.points_for_placing[1] = 1250;
		finals.points_for_placing[0] = 2000;
		finals.match_placing_to_tournament_placing[0] = 1;
	}


	void predict(Simulation &sim, array &top8, array &bottom24, array &finalists, Rand64 &rng)
	{
		RandomAdvancement<16, 16> Ro32toRo16;
		A1vsB2<8, 8> Ro16toRo8;
		StraightAdvancement<4, 4> Ro8toRo4;
		StraightAdvancement<2, 2> Ro4toRo2;
		StraightAdvancement<1, 1> finalsadv;

		ro32.predict(sim, t_id, Ro32toRo16, rng);
		ro16.AcceptAdvancements(Ro32toRo16.advancing_players);
		ro16.predict(sim, t_id, Ro16toRo8, rng);
		quarterfinals.AcceptAdvancements(Ro16toRo8.advancing_players);
		quarterfinals.predict(sim, t_id, Ro8toRo4, rng);
		semifinals.AcceptAdvancements(Ro8toRo4.advancing_players);
		semifinals.predict(sim, t_id, Ro4toRo2, rng);
		finals.AcceptAdvancements(Ro4toRo2.advancing_players);
		finals.predict(sim, t_id, finalsadv, rng);

		top8 = Ro16toRo8.advancing_players;
		for (uint i = 0; i<8; i++) {
			bottom24[i] = Ro32toRo16.falling_players[i * 2];
			bottom24[i + 8] = Ro32toRo16.falling_players[i * 2 + 1];
			bottom24[i + 16] = Ro16toRo8.falling_players[i];
		}
		finalists[0] = finalsadv.advancing_players[0];
		finalists[1] = finalsadv.falling_players[0];
	}

:::

All data had very good locality using arrays instead of vectors, everything could be inlined and branch predicted and prefecthed, complex tournament formats could be built even properly handling high placements from one tournament granting you seeding into a different tournament. I think I gained like 3x to 5x speedboost from this alone, I also made it multithreaded and work in batches which improved performance further, which allowed me to get updated results more quickly and with a higher number of samples. I also made it so it could output the results and then keep processing more batches of samples to refine the numbers from there. I wouldn't normally suggest these kinds of optimizations but it's a very unusual program to have such a wide hotloop

The website is gone, but here's a working archive of it (which I didn't know existed until writing this post, I thought there were only broken archives)

::: spoiler archive links, me reminiscing on old times, get ready for stats and graphs overload

home page: https://web.archive.org/web/20150822091605/http://sc2.4ever.tv:80/

a tournament page: https://web.archive.org/web/20160323082041/http://sc2.4ever.tv/?page=tournament&tid=27

a player's page: https://web.archive.org/web/20161129233856/http://sc2.4ever.tv/?pid=73

a general checkup page: https://web.archive.org/web/20161130055346/http://sc2.4ever.tv/?page=checkup

a page for players who must win tournaments to qualify: https://web.archive.org/web/20161129235740/http://sc2.4ever.tv/?page=must_wins

page showing the simulations history: https://web.archive.org/web/20161130055230/http://sc2.4ever.tv/?page=simulations

FAQ page: https://web.archive.org/web/20160323073344/http://sc2.4ever.tv/?page=faq

the fantasy league WCS Wars: https://web.archive.org/web/20161130055233/http://sc2.4ever.tv/?page=gamehome

my WCS Wars user page https://web.archive.org/web/20160704040152/http://sc2.4ever.tv/?page=user&uid=1

:::

Normie is gross but it's mainly just dismissive and having too high an opinion of one's own taste/interests.

Really? I always thought it was supposed to be self deprecating, like saying "people who aren't fucking weirdos like myself"

4 more...

I'm still most excited about the ongoing work on plugin support

https://github.com/LemmyNet/lemmy/pull/4695

would you say this belongs in the 0.20.0 milestone? or is it too soon?

I think forking might be an overreaction at this point, a better idea would be to work on plugins/extensions support

https://github.com/LemmyNet/lemmy/issues/3562

And also new frontends can be made without touching the backend, so you could fork just lemmy-ui or one of the phone apps or one of the many web uis

In order to improve interoperability with Mastodon and other microblogging platforms, Lemmy now automatically includes a hashtag with new posts. The hashtag is based on the community name, so posts to /c/lemmy will automatically have the hashtag #lemmy. This makes Lemmy posts much easier to discover.

this should be interesting

for reference, this is what it looks like on Mastodon, the post to !announcements@lemmy.ml it gets the hashtag for announcements

https://mastodon.social/@dessalines@lemmy.ml/112576601493225058

it's not really part of the message text, it's separate

image proxying also sounds good