From Doom Guy to Master Chief, to the literal space marines of the Warhammer series, hulking masculinity power fantasies are well represented in the sci-fi genre. Capturing a sort of kitschy charm, these characters aren't without a purpose, but their prevalence does tend to give players expectations of grandeur when booting up sci-fi games.
Way back in 1986, this gave the notably quirky Sierra a chance to subvert these expectations by making the hero of its Space Quest series into one of the most unlikely candidates possible: a janitor. As Roger Wilco, a member of a space cleaning crew who accidentally finds himself on a journey to save the universe, players had to bumble their way through obstacles that other heroes would have simply solved with a BFG and a Schwarzenegger-esque one-liner.
The result was a more personal, more charming look at sci-fi adventure through a fresh pair of eyes. Sci-fi stories often set-up elaborate, deep universes to explore, but seeing them from the perspective of a blue collar worker makes them come across not only as places where you could fight, but also where you could live.
Diaries of a Spaceport Janitor, a new title dubbing itself as an "anti-adventure" game, seeks to recreate that same feeling. Casting the player as an alien woman with a municipally-subsidized trash incineration job and dreams of someday moving far, far away from her home planet, Diaries replaces self-insert bombast with a more subdued, relatable story. Not unlike a Midwestern kid working an agonizing summer job hoping to one day make it to a big city, the game's protagonist must endure hours of monotonous labor all the time being taunted by the grandeur of the sci-fi universe that surrounds her.
Still, despite the slogan of "anti-adventure," there seems to be something more bubbling beneath the surface. As the hero goes about her daily toil, she finds herself cursed and being followed by a mysterious skull. And while cleaning the spaceport with her trusty Incinitron, more mysteries present themselves. "Discover unique and flavorful pieces of trash that reveal the adventurous culture of the planet you're stuck on," developer Bradford Horton writes on the TIGSource forums. "And, if you're lucky, a way off it," he continues. Diaries may be about a small-time worker, but the task in front of her seems to be as daunting as any space marine's.
Diaries of a Spaceport Janitor is being developed by Sundae Month, is about 90% complete, and should be releasing soon. You can follow development progress over on the game's blog.


We manufacture over 300 million tonnes of plastics each year for use in everything from packaging to clothing.
Plastics linger in the environment, littering streets, fields and oceans alike.
Plastics are polymers, long thin molecules made of repeating building blocks.
Most plastics are made from carbon-based monomers, so in theory they are a good source of food for microorganisms.
Unlike natural polymers plastics aren't generally biodegradable.
Plastics have only been around for about 70 years.
So microorganisms simply haven't had much time to evolve the necessary biochemical tool kit to latch onto the plastic fibers, break them up into the constituent parts and then utilize the resulting chemicals as a source of energy and carbon that they need to grow.
Now a team at Kyoto University has, by rummaging around in piles of waste, found a plastic munching microbe.
After five years of searching through 250 samples, they isolated a bacteria that could live on poly(ethylene terephthalate), a common plastic used in bottles and clothing.
At present, most plastic bottles are not truly recycled.
Packaging companies typically prefer freshly made 'virgin' plastics that are created from chemical starting materials that are usually derived from oil.
The PET-digesting enzymes offer a way to truly recycle plastic.
These could then be used to make fresh plastics, producing a true recycling system.


text:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ColoreColor = Corale.Colore.Core.Color;
using System.Threading;
using Corale.Colore.Razer.Keyboard.Effects;
using Corale.Colore.Core;
using Corale.Colore.Razer.Keyboard;

namespace AdvancedChroma
{
    public class StarlightKey
    {
        public ColoreColor first;
        public ColoreColor second;
        public double redStep;
        public double greenStep;
        public double blueStep;

        public double currRed;
        public double currGreen;
        public double currBlue;

        public int keyX;
        public int keyY;

        public int step = 0;
        public double stepDivisor = 255;

        public bool fadingOut = false;

        public StarlightKey(ColoreColor first, ColoreColor second, int keyX, int keyY)
        {
            this.first = first;
            this.second = second;

            stepDivisor = StaticRandom.Instance.Next(80, 160);

            redStep = ((double)first.R - (double)second.R) / stepDivisor;
            greenStep = ((double)first.G - (double)second.G) / stepDivisor;
            blueStep = ((double)first.B - (double)second.B) / stepDivisor;

            this.keyX = keyX;
            this.keyY = keyY;
        }

        public void reset()
        {
            this.keyX = StaticRandom.Instance.Next(0, Constants.MaxRows);
            this.keyY = StaticRandom.Instance.Next(0, Constants.MaxColumns);

            while (true)
            {
                int containsDuplicate = 0;

                foreach (StarlightKey sk in MainWindow.starlightKeys)
                {
                    if (sk.keyX == this.keyX && sk.keyY == this.keyY)
                    {
                        containsDuplicate++;

                    }
                }
                if (containsDuplicate == 2)
                {
                    this.keyX = StaticRandom.Instance.Next(0, Constants.MaxRows);
                    this.keyY = StaticRandom.Instance.Next(0, Constants.MaxColumns);
                }
                else
                {

                    stepDivisor = StaticRandom.Instance.Next(80, 160);
                    fadingOut = false;
                    return;
                }
            }
        }
    }
}

redpajama_set_name: RedPajamaGithub