1

Hi,

I posted this on Steam and figured it'd be useful here too. It's about how to unlock all the scenarios for the game Project Highrise when playing on Linux. I thought about posting it in the Project Highrise community on Reddit but screw Reddit. There isn't a dedicated Project Highrise community but this is an older game (10years) so hopefully Retro Gaming is a good fit for this?

**However if people think there is a better place for this let me know! I'm keen to help put this stuff on the fediverse and not corporate websites! **

Unlocking the scenarios

I've got many hours in the game and have my save game files but the medals didn't transfer. I want to replay it but I don't want to unlock all the base scenarios in order again.

Heres how to unlock all the base game scenarios (1-15) including on Linux playing with Proton (this will also work for Windows) so you can play in any order.

Any DLC scenarios you own are always unlocked by default and can be played in any order, so you don't need to worry about these.

Find the gameplay.txt file

First find the gameplay.txt file. This is where the medal data is kept, and is separate from your save game folder. You can find it as follows:

  • Windows: You can find it here (where USERNAME is your windows username):
    • C:\users\USERNAME\AppData\LocalLow\SomaSim\Project Highrise\prefs\gameplay.txt
  • Linux Steam Proton: You can find it in your Steam proton compatibility folder (not your game install folder; the game installs in ".../Steam/steamapps/common/Project Highrise" but the proton data is in ".../Steam/steamapps/compatdata/423580/" where 423580 is the games Steam ID). This is usually in your linux home folder (i.e. your ~/... folder, i.e. /home/USERNAME/...) but may be elsewhere if you have steam libraries on other drives. E.g.:
    • ~/.local/share/Steam/steamapps/compatdata/423580/pfx/drive_c/users/steam/AppData/LocalLow/SomaSim/Project Highrise/prefs/gameplay.txt
    • If you're struggling to find it, open steam, go to your library, go to the game, click on the cogwheel icon top right ("manage"), select properties, select the "installed files" folder, and click browse to find the game;s install files in your file manager. From this folder usually just go up two levels to find the "compatdata" folder.
  • Linux Heroic/Lutris/Wine: You can find it in your proton prefix folder for the game. This varies depending on where you installed your games but by default would be in your home folder (i.e. your ~/... folder, i.e. /home/USERNAME/...). Examples below; USERNAME usually matches your linux user name:
    • Heroic: ~/Games/Heroic/Prefixes/default/Project Highrise/drive_c/users/USERNAME/AppData/LocalLow/SomaSim/Project Highrise/prefs/gameplay.txt
    • Lutris: ~/Games/gog/project-highrise/drive_c/users/USERNAME/AppData/LocalLow/SomaSim/Project Highrise/prefs/gameplay.txt

Edit the gameplay.txt file

Backup the gameplay.txt file first! If you make a mistake the game will wipe the file and make a blank one; the game will still run fine but your existing medals will be gone! The game seems to be very strict about the medal IDs and will blank the file to prevent a crashing if any one is is wrong. Once backed-up, open the original gameplay.txt file in your favourite text editor. A basic file (a new install, unplayed game) will look like this:

{ 
medals {} 
onetimehints {} 
tutorials {}
} 

We need to add a list of flags into the medal section; they are in the format sX-victory-bronze #true for the first 9 scenarios. You also need the 10th scenario to unlock all the original scenarios to play. However confusingly in the game files, from the 10th scenario onwards most of the medal ids are in quotes. So for the 10th scenario we actually need to add "s10-victory-bronze" #true.

Basically you need to copy the below paste into your gameplay.txt, replacing the original text and them save the file to unlock all the scenarios for play:

{
 medals {
  s1-victory-bronze #true
  s2-victory-bronze #true
  s3-victory-bronze #true
  s4-victory-bronze #true
  s5-victory-bronze #true
  s6-victory-bronze #true
  s7-victory-bronze #true
  s8-victory-bronze #true
  s9-victory-bronze #true
  "s10-victory-bronze" #true
}
 onetimehints {}
 tutorials {}
}

If you paste this in, it will set all the first 10 scenarios to Bronze medal, and all of the original 15 scenarios will be unlocked to play in your game.

Should you want to give yourself other medals (lets say you completed the scenarios years before and want it more accurate) then just add things like s1-victory-silver #true for Silver, and s1-victory-gold #true for gold.

The exception is any scenario from 10 upwards, where you need to add "" marks around the medal id: for example "s11-victory-gold" #true if you wanted to give a gold medal for scenario 11.

Note if you get any of the medals actual names wrong, the game wipes all the medals and makes a new blank file, so always back up!

If you really want to check a scenario ID, all the scenario ids can be found in the file ScenarioDefinitons.scm file in the game install folder (e.g. Project Highrise/Game_Data/StreamingAssets/Scenarios/ScenarioDefinitons.scm). Look for the "medal section" for each scenario and the id row, and look for what is written after that if you want to add other medals; most after 10 have "" in them, but some don't like scenario 26. Confusing but probably not important for most people.

Hope this helps! I'm enjoying replaying this game without the trudge of doing the scenarios in order.

25

"Vice-president effectively tells Leo to stay in his lane after the pope criticized the White House over the Iran war"

16
submitted 6 months ago* (last edited 6 months ago) by BananaTrifleViolin@lemmy.world to c/linux@lemmy.world

Hi, I've been collecting lots of random Linux tips and tricks and just thought I might sharing of one in detail in case anyone finds it useful. It can be helpful to understand how Linux works; after all, it IS the "Year of the Linux Desktop". I hope this is ok for this community; please mods delete if not. I have saved a copy and can post somewhere else more appropriate if so!

I've made it deliberately detailed as I personally learn by understanding the why as well as the how. This solution works for GTK 2 and 3 apps, but not GTK 4 which apparently deliberately ignores this.

The start section is a simple TLDR, likely enough for most people. The rest is a detailed explanation which may be helpful for different options and understanding/learning a bit more about using Linux environment variables generally.


TLDR - Get GTK apps to use your DEs save/load dialogue box

First ensure you have the following installed if you're on KDE (Or use equivalents if you're on Hyprland, cosmic etc.) These are pretty commonly already installed already on most distros. They may have slightly different names in your distros package manager.

  • xdg-desktop-portal
  • xdg-desktop-portal-kde6
  • xdg-desktop-portal-gtk

Next, open a terminal and type:

echo 'export GTK_USE_PORTAL=1' >> ~/.profile

This will add the GTK_USE_PORTAL=1 to your personal desktop environment set up, and it'll be set every time you log in. Just log out and back in. When you next launch a GTK app that supports it (like Firefox), you should find it now uses your desktop environments file manager dialogue boxes.


Detailed explanation!

The Problem

One thing that has always been a bugbear for me as a KDE user is when I use GTK 2 and 3 based apps, they usually default to use file/load/save dialogue boxes for GTK and not my KDE dolphin dialogue boxes. For example, Firefox uses GTK based dialogue boxes, so it has a different layout and different favourites on the left whenever I want to save an image or a page. It's just different enough that it slows me down each time I use it.

Some distros are set up so this doesn't happen (for example KDE Neon) but many don't seem to set this up in my experience. Certainly OpenSuSE and Nobara didn't have this set up.

It turns out, it's pretty easy to fix that for most GTK apps. Sadly this does not apply to GTK 4.


The Solution

There is a simple widely available and installed framework called XDG Desktop Framework that standardises how apps from different desktop environments work together. It's often used by Flatpaks, but also usually installed as a basic component of many major distros. But just in case it's not installed on your system, you want to look for the following type of packages in your package manager and install them:

  • xdg-desktop-portal
  • xdg-desktop-portal-kde6
  • xdg-desktop-portal-gtk

You may want different backends depending on your set up; on my distro (OpenSuSE) I can there are ones for Gnome, hyprland, lxqt, pantheon, cosmic and a few others, and there may be more on other distros. I'm on KDE and the KDE6 and GTK seems to be enough for me for this particular use.

Once these are installed, you can pass an environment variable to GTK 2 and 3 apps:

GTK_USE_PORTAL=1

An environment variable in Linux is something that can change the behaviour of software on your install. There are loads of ways to use these to get things done; they've very useful and a core part of how linux works.

For example, they can be set as a one-off when you launch a specific program, or set for a user for every program for that person or even set at the system level so every program has it set.


Detailed: How to set environment variables

Use it for ONE program only

The most basic way to use this would be open a terminal, and launch a program like firefox with the environment variable; for example:

$ env GTK_USE_PORTAL=1 firefox

This command runs the env program which sets the variable and then runs another program, like Firefox. The "child process" inherits the environment variable set by env. Here it'll open Firefox from your terminal with an environment variable set to use the portal; it works but is probably not a very convenient solution day to day.

A slightly better way to use this would be to edit the menu entry for Firefox and add the environment variable. So as a KDE user, I could open my menu, find Firefox, right click and select "Edit Application...". I'd then get the Firefox menu entry and I can add to the "Environment Variable:" box. Now each time I launch Firefox from my menu it will launch with variable set. Other DEs will have similar but unique methods to do the same.

This works but is still a bit limited. So a slightly better method again would be to edit the underlying .desktop file. To do that I could edit the existing .desktop file in the system folder and add the variable to the Exec="" line:

EXEC=env GTK_USE_PORTAL=1 firefox

Bear in mind system .desktop files are often replaced when you do updates, so it may be better to copy the existing one to your home folder, edit it and then use that. I won't go into massive detail about .desktop files.

This isn't exhaustive; there are other ways of doing this for one program.


Use it for ALL programs for ONE user

However, I personally want ALL GTK programs to use KDE dialogue boxes if they support it, and I think this is probably the best solution for most users. This is also a useful method for any other variables you want to use. Instead of setting the environment variable each time on the fly or per program, we can set it for the whole user account.

To set Environment Variables for a user there are a few places we can put them to make use of them. For a single user with a bash based system (vast majority of people), the best place to set them is ONE of these 3 files in your home folder:

  • .bashrc
  • .bash_profile
  • .profile

Lets try and understand these files:

.bashrc is used whenever a new interactive non-login shell is used - that generally means each time you open a terminal, this file is read and if you set an environment variable in it, anything run from that terminal will inherit and use that variable. That's fine, but it's not generally ideal for a GUI run program in a desktop environment and we're basically constantly setting the variable each time we run something. It'll work but it's not ideal.

.bash_profile (if it exists) is run when a user starts a new login shell with bash. You may not have this file; don't worry if not! This will run once per session; so when you first login to your desktop any environment variable in here will be run. This is better but it's still not quite ideal. If you have a bash based system, this will work, but if you've switched entirely to another shell script system (like zsh or fish) it won't. So this will probably work but again it's not ideal. Many systems seem to skip this file and use .profile as a more generic option.

.profile is run when a user starts a new login shell, regardless of the shell (bash, zsh, fish etc). Lots of systems even using bash may use this file instead of .bash_profile as it's more generic. If you add an environment variable to this file, whenever you login it will load and stay loaded for your session.

So the best place for most users to put GTK_USE_PORTAL=1 is .profile. When you log in that variable will set globally for your session and all new programs will use it. To use it, we need to add the following line to the file:

export GTK_USE_PORTAL=1

(For this, the export command will make an environment variable inheritable to all other programs run after it. If we just put GTK_USE_PORTAL=1 in, it'd actually be set for a moment but only for a moment - then the next command would be run during login and the variable would be forgotten again. If we used env instead of export, the env program gets launched as a new process, it modifies the environment and then it is designed to call another program straight after it. It's meant to set the variable for it's child process. It may still work but even if it does it's overkill: export changes the variable globally and is done, env changes the variable and then is supposed to start a new child process so is redundant here.)

We can add the line to the file in numerous ways. Via the GUI/desktop, you could open your file manager, find the file, open it with a text editor and type the line in. You'll probably find there isn't much in your .profile file, you can put it anywhere in the file, as long as it's on it's own clear line.

Or an we can add it in via the terminal. All we do is open a terminal and type/paste the following:

echo 'export GTK_USE_PORTAL=1' >> ~/.profile

(This command uses echo to take the text written after it in the quotes, and pass it on. The >> is a linux operator, and it takes whatever it is being passed and appends/adds it to the end of whatever file follows. So we finish with the destination ~/.profile for >> to put the text. So echo takes the text 'export GTK_USE_PORTAL=1', passes is to >> which then adds it to the end of the file .profile in the ~/ directory.)

Once the text is in your .profile file, you need to log out and log back in to your Linux desktop session. This is because .profile is generally only launched when you first login to your session.

After that, any program that launches will have the environment variable of GTK_USE_PORTAL=1 set. If it supports it, it will use it. If it doesn't support it, it will ignore it.


Use it for ALL programs for ALL users

If you want to set this globally for ALL users sharing a Linux install, then instead of using an individual home folder, we need to set the environment variable in a system file. This is overkill for this particular variable in my opinion, and generally I'd stick to user level settings (particularly as you will keep your changes if you back up your Home folder like a good Linux user!), but this may still be of interest as a concept for other variables.

To do this we need to add it to ONE of the following files:

  • /etc/environment
  • /etc/profile

You may not even have these files but don't worry. Many modern systems have loads of variables and settings, and are set up to generate these files dynamically from a collection of other files located in folders like /etc/environment.d or /etc/profile.d A folder ending with .d just means it's a directory containing partial configuration files, and the files in this folder are combined to make the final file by the Linux system. This is for convenience to make complex systems more modular, so things can be "plugged together". That helps complex distros separate out and manage different things cleanly.

We can also "plug in" our own settings by creating our own configuration files, and the good thing is if we give them a unqiue name, we usually won't lose our custom config if there is a system update and the distro changes it's own config files.

Either /etc/environment.d or /etc/profile.d is fine for this; I use profile.d because that's what my system is set up to use. If you don't have an /etc/environment file or /etc/environment.d folder, you could create one, put the "export variable" line in and it'll also work, but here I'll use profile.d as it's pretty widely used and it's a useful concept to understand how combined config files work.

First we need to create a new shell script file (.sh) in the folder which will be combined by the system at boot with the other existing files. System folders like /etc/ are system level and protected so we need to use the sudo command to do this as a root user. In this example I'm going to put my custom variables in a file called myvariables.sh - but call it whatever you want (within reason!). To do this, in a terminal we can put the following:

sudo cat /etc/profile.d/myvariables.sh
#!/bin/sh
export GTK_USE_PORTAL=1

(This first runs sudo - temporarily logging us in as a super user (we'll be asked for our admin password). Then it runs cat which will take the following text and put it in the target file (i.e. it'll concatenate the text). To do this we first tell cat the file location - /etc/profile.d/myvariables.sh - if it doesn't exist, cat will create it. Then it will put everything that follows into the new file. The first line is #!/bin/sh - this line tells the operating system when it reads the file it is a shell script, and to use /bin/sh to interpret it. In most systems, /bin/sh actually points to /bin/bash. The next line then runs the export command to set the environment variable to GTK_USE_PORTAL=1; because we use export this will be inherited by all programs running after it in the entire system, for all users.)

Alternative if we have already created a myvariables.sh we can instead just add the line to the existing file:

sudo echo 'export GTK_USE_PORTAL=1' >> /etc/profile.d/myvariables.sh

(This command uses **sudo ** to give us permission to use echo to take the text written after it in the quotes, and pass it on. The >> operator appends/adds it to the end of the file we provide it.)

Or we could also use a text editor to do this:

sudo nano /etc/profile.d/myvariables.sh

(This uses sudo to open a text editor in the terminal - nano - to open the file.)

Then we can just type in the following into the new file, and save the file.

#!/bin/sh
export GTK_USE_PORTAL=1

If you want to do this via the GUI, you can put the above in using a GUI text editor like Kate or Gedit; just bear in mind you need administrator level access to edit and save the changes as we're working within the /etc/ folder

Whichever method you use, you will likely need to reboot so that the new environment variable is set for all programs on your system.


Setting this for Flatpaks

Just to be completely comprehensive, we can also set this variable (and others) for Flatpaks if we want to. I won't go into massive detail though.

Personally I use a program called flatseal - you can install this from Flathub. This program lets you manage all your flatpaks.

In Flatseal, on the left is a list of all your flatpak programs. The first option is "All Applications". If you select this and scroll down on the right you will find an "Environment" section. You can click the + button to add a new line and add GTK_USE_PORTAL=1. This will tell ALL flatpaks to use this setting if they can. If you prefer you can instead just add it to individual programs in the same way - select the program from your list of flatpaks on the left, and then find it's "Environment" section on the right and add a new variable in the same way.

This can also be done using flatpak itself from the terminal if you prefer.

Hope this is helpful!

[-] BananaTrifleViolin@lemmy.world 169 points 1 year ago

This perfectly encapsulates how anti vaxxers and others think. "Ive thought it through and it cantnbebright". Its incredible how we can have access to vast amounts of information and yet live in an age of gleeful ignorance.

[-] BananaTrifleViolin@lemmy.world 201 points 1 year ago

This is just Mafia like extortion. It doesnt really matter now if/when these tariffs are undone - Trump has totally destroyed the US reputation as a reliable ally and trade partmer.

No deal with the US is worth the paper its written on, as everything is dependent on the whims of one person.

Presidential systems are sources of weakness and instabilty it seems. They're no better than monarchs, and the whole system can easily be twisted into dictatorship. Look at Russia and now the US.

[-] BananaTrifleViolin@lemmy.world 147 points 1 year ago

Well, Europe needs to grow a pair and tell Trump to fuck off. We need to accept that he is leaving Nato, and European countries need to take it over or set up a new organisation. He can make any deal he likes with Russia; Europe and Ukraine can just tell him no and show him the true limits of his power. He cannot dictate to Europe and he is not our president.

38
[-] BananaTrifleViolin@lemmy.world 288 points 2 years ago* (last edited 2 years ago)

"Time to switch to uBlock Lite or another ad blocker"

No. Time to switch to Firefox or derivative such as Librewolf.

15
submitted 2 years ago* (last edited 2 years ago) by BananaTrifleViolin@lemmy.world to c/adventuregames@lemm.ee

New adventure game "The Phantom Fellows" has released on GOG and Steam, with a 10% discount until 4th Oct.

It's a comedy mystery game featuring a guy and his ghost friend, who perform jobs and investigate mysteries over 7 days in a small Colorado town. The game has a pixel art aesthetic, reminiscent of recent games like The Darkside Detective, and synthwave music.

I have no connection to the company, stumbled across the game and been playing for a few hours. So far, it's a fun game, good production values for £11. Certainly scratches that adventure game itch.

EDIT: it's made for Windows, but I've been playing it on Linux via Lutris/Wine without issue.

[-] BananaTrifleViolin@lemmy.world 151 points 2 years ago

After being forced to standardise to usb c and be responsible for some of the e-waste it produces, apple has finally relented.

They fought tooth and nail against the EU regulations to force charging standards. I don't care if they up sell cables to some people; most people will reuse what they have and thats the whole point of the regulations.

Regulation works.

[-] BananaTrifleViolin@lemmy.world 218 points 2 years ago

This is a fluff piece written by someone in a rich bubble.

The 2 year old and 4 year old have no concept of money, the 4 year old did not "do most of the work" in a lemonade stand, and they do not have "their own money" to spend. Picking up after yourself and putting dishes in the sink are not chores, and kids this age aren't taking out the trash - of course they enjoy it when mummy does it and makes a big deal of how grown up the kids are for helping, and probably rewards then for it.

None of the ideas are innovative or relevant to most parents, and particularly not with a kids that age. This is just one rich bored parent with young kids sharing their "experiences". Pretty out of touch with reality.

[-] BananaTrifleViolin@lemmy.world 142 points 2 years ago

Zuckerberg thinks Facebook should self regulate and that means in this case be free to allow posts of anti-vax propaganda and covid conspiracy theories that literally cost lives.

This is just a great example of why social media needs external regulation.

[-] BananaTrifleViolin@lemmy.world 225 points 2 years ago* (last edited 2 years ago)

This is badly written and ignorant article. Fat32 supports up to 16Tb partition size (depending on cluster size - 2Tb -16Tb).

Its microsoft's windows tools that arbitrarily only allow users to create 32Gb partitions, and it is this that is being changed. This is not a change to Fat32, this is a change to windows. 3rd party tools on Windows and other systems like Linux have long offered more options for partition size.

That its taken to 2024 for Microsoft to fix the command line tool (and still not fix the GUI tools) is ridiculous.

[-] BananaTrifleViolin@lemmy.world 165 points 2 years ago

No one seems to have actually read the article, just the headline. This is the ultimate click bait title - kudos to the headline writer in 1939.

The tl/dr: It's saying Hitler's authoritarian actions were galvanising other countries to step up and protect democracy after the failures after WW1.

In the final paragraph:

It is one of the most interesting phenomena of Hitler's political activity that it has resulted in bringing about so soon such an overwhelming and unprecedented manifestation of defensive solidarity amongst the democratic peoples.

And the final line of the article:

It would be the height of paradox if Hitler, of all persons, were destined by his statesmanship finally "to make the world safe for Democracy."

The article is surprisingly prescient.

[-] BananaTrifleViolin@lemmy.world 194 points 2 years ago

Ironic that Libertarians are banning things in their own subreddit.

[-] BananaTrifleViolin@lemmy.world 147 points 2 years ago

Manifest V2 phase out is a big deal, as Google is pushing towards Manifest 3 only. Google's version of Manifest 3 is hobbled by removing WebRequest blocking which breaks privacy and ad blocking tools - an obvious benefit to Google as an Ad and data harvesting company.

Firefox is implementing Manifest 3 with WebRequest blocking, as well as supporting Google's hobbled version declarativeNetRequest to allow compatibility with chrome extensions.

146

The New York Times has used a DMCA take down notice to remove an open source Wordle clone called Reactle

[-] BananaTrifleViolin@lemmy.world 408 points 2 years ago

DRM-free doesn't mean piracy. GOGs whole business model is built around selling games DRM free. I don't pirate but I do use GOG where possible as I hate DRM - it punishes and inconveniences legitimate users for piracy and doesn't even solve the problem. DRM is just an expensive waste of money for everyone involved.

19

I'd been having problems with the scale of the VLC interface at 4K on my Linux machine (KDE Plasma, Wayland).

I found a solution from a mix of previous solutions for Windows and other Linux solutions which did not work for me. The problem is with QT (which is used by VLC) and the linux solution was to put extra lines in the /etc/environment file but I found while this fixed VLC it mucked up all other QT apps including my Plasma desktop.

The solution is to use VLC flatpak and set the environment variables for the VLC flatpak app only using Flatseal or the Flatpak Permission Settings in KDE.

Add two Environment variable:

Variable name: QT_AUTO_SCREEN_SCALE_FACTOR Variable value: 0

Variable name: QT_SCREEN_SCALE_FACTORS Variable value: 2

For the second variable, scale_factors, set it to match the scaling you use on your desktop. 1.0 means 100%, 1.5 is 150%, 2 is 200% and so on. My desktop is set to 225% scaling, so I set mine to 2.25 and it worked. In the end I went up to 3 for VLC because I liked the interface even more at that scale (it's a living room TV Linux machine)

Hopefully this will help other people using VLC in Linux.

If you don't want to use Flatpak, you can add the same variables to your /etc/environment file (in the format QT_AUTO_SCREEN_SCALE_FACTOR=0) but be warned you may get jank elsewhere. This may be less problematic outside of KDE Plasma as that is QT based desktop environment. For Windows users it is a similar problem with QT and there are posts out there about where to put the exact same variables to fix the problem.

view more: next ›

BananaTrifleViolin

joined 2 years ago