- Wikipedia: Noctis (Web page)
- Noctis - Official site (Web page)
- Proteus - early prototype screenshots (Blog post)
- Gamasutra: The Making of Elite (Video)
- The Brilliance of Dwarf Fortress
- Interview with Tarn Adams (creator of Dwarf Fortress) (Slides) (Video)
Instructions are modified from emacs-w64 Wiki page by zklhp. Many thanks for sharing!
-
Download the latest MSYS2 from this download page.
-
Install MSYS2 to, for example,
C:\msys2
(make sure no space in path to avoid unwanted problems). -
Optionally prettify the MSYS2 console
mintty
with~/.minttyrc
to make it more pleasing to eyes. Thanks to this awesome theme!
/* | |
Basic Sprite Shader for aligning pixel art to the same grid, based on the Unity Sprite Shader. | |
Create one Material where you assign the same Pixels Per Unit value you use on your imported Sprites, | |
then reuse this Material on all appropriate Sprite Renderers. | |
(You can use Shader.SetGlobalFloat to set that Pixels Per Unit value for all your shaders: | |
https://docs.unity3d.com/ScriptReference/Shader.SetGlobalFloat.html) | |
This is not for scaled or rotated artwork. If you need those features, look at low res render textures. | |
Use this however you want. |
Wave Function Collapse (WFC) by @exutumno is a new algorithm that can generate procedural patterns from a sample image. It's especially exciting for game designers, letting us draw our ideas instead of hand coding them. We'll take a look at the kinds of output WFC can produce and the meaning of the algorithm's parameters. Then we'll walk through setting up WFC in javascript and the Unity game engine.
The traditional approach to this sort of output is to hand code algorithms that generate features, and combine them to alter your game map. For example you could sprinkle some trees at random coordinates, draw roads with a brownian motion, and add rooms with a Binary Space Partition. This is powerful but time consuming, and your original vision can someti
#!/usr/bin/env bash | |
# | |
# Bootstrap script for setting up a new OSX machine | |
# | |
# This should be idempotent so it can be run multiple times. | |
# | |
# Some apps don't have a cask and so still need to be installed by hand. These | |
# include: | |
# | |
# - Twitter (app store) |
Here's a list of mildly interesting things about the C language that I learned mostly by consuming Clang's ASTs. Although surprises are getting sparser, I might continue to update this document over time.
There are many more mildly interesting features of C++, but the language is literally known for being weird, whereas C is usually considered smaller and simpler, so this is (almost) only about C.
1. Combined type and variable/field declaration, inside a struct scope [https://godbolt.org/g/Rh94Go]
struct foo {
struct bar {
int x;
using Cinemachine; | |
using UnityEngine; | |
using UnityEngine.U2D; | |
using System.Reflection; | |
/// <summary> | |
/// Add this component to a camera that has PixelPerfectCamera and CinemachineBrain | |
/// components to prevent the active CinemachineVirtualCamera from overwriting the | |
/// correct orthographic size as calculated by the PixelPerfectCamera. | |
/// </summary> |
This is my desktop setup scripts for Windows. It installs a number of apps using scoops (in preference) and failing that, via chocolatey. It also makes a number of customisations and streamlining operations to Windows itself via registry changes and various powershell scripts, the most notable of which is the [Windows 10 Debloater][3] script.
After that, It sets up my [WSL][4] environment, and uses my [linux dotfiles repo][5] to customise that. The aim of this setup is to be a reasonably dev-friendly, secure windows environment with a ready-to-go linux environment setup via WSL. More customisations will be made as things like 'controlled folder access exceptions' and other things get discovered through usage.
const { execSync } = require('child_process') | |
const { createHash } = require('crypto') | |
const invertColor = require('invert-color') | |
const branchName = execSync('git rev-parse --abbrev-ref HEAD') | |
const hash = createHash('sha256') | |
hash.update(branchName) | |
const color = '#' + hash.digest().toString('hex').substring(0, 6) | |
const invertedColor = invertColor(color, true) |