[-] Die4Ever@programming.dev 25 points 3 months ago* (last edited 3 months ago)

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.

[-] Die4Ever@programming.dev 22 points 4 months ago

ReVamped is such an obviously good name lol

[-] Die4Ever@programming.dev 24 points 10 months ago* (last edited 10 months ago)

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

[-] Die4Ever@programming.dev 25 points 10 months ago

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

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

[-] Die4Ever@programming.dev 25 points 10 months ago

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

[-] Die4Ever@programming.dev 23 points 11 months ago* (last edited 11 months ago)

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:

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:

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)

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

[-] Die4Ever@programming.dev 25 points 1 year ago

will get outdated and needs dealer updates

I thought Android Auto and Apple CarPlay both handle updates on the phone side, not the car side?

[-] Die4Ever@programming.dev 23 points 1 year ago* (last edited 1 year ago)

Primary Display Resolution: 1920x1080 60.75% -0.72%

Multi-Monitor Desktop Resolution: 3840x1080 60.70% -0.36%

maybe the "Multi-Monitor Desktop Resolution" is excluding single monitor setups, so it would make sense that there is no 1920x1080 in there

I don't see any common single monitor resolutions in that list so they're definitely excluding single monitor setups from that list, which is good

[-] Die4Ever@programming.dev 23 points 1 year ago

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

[-] Die4Ever@programming.dev 22 points 1 year ago* (last edited 1 year ago)

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

[-] Die4Ever@programming.dev 21 points 1 year ago

It’s a basic catch-22 - you need new users to attract new users.

This is the best thing about federation.

If the Fediverse became really popular and I created a new alternative to Lemmy/Kbin that was significantly better than both, it would be way easier to gain the momentum required to become a real player in the field compared to trying to compete with Reddit when most people aren't in the Fediverse yet.

[-] Die4Ever@programming.dev 23 points 1 year ago

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"

1
submitted 1 year ago* (last edited 1 year ago) by Die4Ever@programming.dev to c/meta@programming.dev

Compare browsing on this instance

https://programming.dev/c/technology@beehaw.org?dataType=Post&page=1&sort=New

vs

https://beehaw.org/c/technology?dataType=Post&page=1&sort=New

especially the post "Site to track Subreddit’s as they go dark" which was posted 21 days ago, still showing up at the top of New on this instance even above newer posts, but beehaw has all new posts instead

and I am subscribed to that community so it should be federated too

I think part of the issue might be because that post is deleted? or at least the permalink for it doesn't work

but also I just manually searched for https://vlemmy.net/post/430910 so now it shows up but still below the bugged post, but it shouldn't have needed a search to federate that post manually

1
Steam hardware Survey For June 2023 (store.steampowered.com)
submitted 1 year ago* (last edited 1 year ago) by Die4Ever@programming.dev to c/technology@beehaw.org

screenshots for archival purposes here

1

cross-posted from: https://programming.dev/post/161693

We’ve been really busy this year so here’s a recap of the best additions since v2.0 was released a year ago.

New in v2.5 are Mirrored Maps!

We now have an installer program!

  • Helps with getting the game running well on modern computers for you and also handling the mirrored maps download and installation.

New game modes:

  • Zero Rando - great for first-time Deus Ex players! Disables all randomization features but keeps all the bug fixes, QoL improvements, and balance tweaks.

  • Randomizer Lite - Great for players who haven't played Deus Ex in a long time, or those who are intimidated by the full randomizer, or if you just want to keep the original mood of the game.

  • Serious Sam mode - same as the normal Randomizer but with 10x as many enemies with difficulty tweaked to compensate.

  • All 3 of these new game modes can also be combined with other mods: Lay D Denton, GMDX, Revision, or Vanilla? Madder.

Enemies Overhaul:

  • Randomly spawned enemies can now get randomly generated patrol routes.

  • New enemies with slightly different stats and appearances, see the wiki.

  • Randomly spawned enemies now appear as the same faction as the enemies near them. (No more Thugs with MJ12 Troopers.)

  • Enemies now have a random chance to have a helmet added or removed, and an additional chance for them to get a visor. A helmet slightly reduces damage, while a visor makes them resistant to pepper spray and gas grenades.

We're now at 56 goals with randomized locations, with 228 locations for those goals.

We're up to 177 bingo events for our built-in bingo tracker

Accessibility improvements:

  • New spoiler buttons on the Goals screen in case you get lost:

  • Show Spoilers: shows where goals are

  • Show Nanokeys and Show Datacubes: similarly highlights the locations so you can see them through walls

  • Goal Locations: tells you the possible locations for goals without spoilers or cheating

  • Entrance Locations: Provides a list of all the possible entrances in your current map (for Entrance Rando only)

  • Entrance Spoilers: Provides a list of all the entrances in your current map as well as where they lead (for Entrance Rando only)

  • Improved Training mission

Reduced pixel hunting

  • Datacubes/nanokeys/medbots/repairbots now glow

  • Crates that become emptied out now turn into cardboard boxes so you know from a distance

  • Improved visibility for some goals like a new in-game map of the ship and emails referencing the locations of goals.

  • Training mission improvements including explanation of some of Randomizer's features

  • Map teleporters are now visible and show text of where they will take you, especially useful if you're playing Entrance Randomizer mode or with Mirrored Maps enabled

Music Overhaul

  • Random song chosen for each area

  • Ability to add music files from Unreal and Unreal Tournament (someone in our Discord also added in music from Red Sun with some easy config file editing!)

  • Continuous music which keeps the music playing smoothly even if you die similar to Super Meat Boy

Support for the mod Vanilla? Madder. v1.75

  • This mod adds tons of new mechanics and I think when you combine it with Randomizer you get the most in-depth Deus Ex experience possible! We've been working together so when they released their update on April 10th we were ready with support on the same day!

Choose what map to start the game

  • If you want to start in Hong Kong or Paris, for example. You’ll start with an appropriate amount of skill points, augs, and equipment. Likewise, the bingo board will be intelligently built and scaled to match your position in the game.

Other Improvements

  • We've improved physics with enemies receiving knockback from high damage, and improved physics on gibs.

  • We've recently added a leaderboard in-game! Make sure you enable Online Features because it's disabled by default. Also check out our Mastodon bot (Twitter started banning bots, Mastodon is like an open source and community-run version of Twitter) https://botsin.space/@DXRandoActivity

  • Left clicking to use items even if you don't have inventory space for them, such as medkits, armor, and food

  • Tweaked some numbers to make the rates of enemy types, weapons, and items a bit more varied from run to run.

If you haven’t seen Deus Ex Randomizer before, here’s the trailer from v2.0 to give you a taste of the features already included:

Download here: https://github.com/Die4Ever/deus-ex-randomizer/releases

view more: ‹ prev next ›

Die4Ever

joined 1 year ago