Skip to content

Instantly share code, notes, and snippets.


Érico Vieira Porto ericoporto

View GitHub Profile
View terrible_projector.asc
// I can't figure any good way that makes the sprite be properly positioned in place, so I am making a bad way.
// first thing, we are going to find the distance that the sprite is from the camera plane.
// this will give us a z distance
// Then we are going to use this z distance in the renderer algorithm we have for the voxel engine
// which should make it easier to find the point we are interested, in a way that moves just like the renderer we have
// this is wasteful, but we are probably not going to have many sprites anyway...
ScreenPoint* PositionBillboardX(Vec3* cam_pos, float cam_angle, float horizon, float scale_height, Vec3* obj_pos)
int y_on_screen, x_on_screen; // intermediary
View markov.lua
local markov = {}
markov.__index = markov
markov.random = math.random
local final = {}
local function increment_item_count(t, item)
local val = t[item]
t[item] = val and val + 1 or 1
ericoporto /
Created Jan 30, 2021
HTML Help Workshop is not available anymore, can I host it?

Apparently Microsoft just dropped the website that had HTML Help Workshop for download. But it is the only tool that fully properly generates .chm help files and I need it in one of my workflows in a CI system - right now things started to fail because the download vanished.

License wise, would I be violating anything if instead of downloading from Microsoft I downloaded from my own file host to run it? My file host would be exposed in the internet and I would not block people downloading it outside of my CI system if they wanted.

For reference, Microsoft's website download for HTML Help Workshop used to be here:

Other related websites, but the downloads are 404 now:

View glm-amalgamated.h
This file has been truncated, but you can view the full file.
# 1 "glm-amalgamated/glm.h"
# 16 "glm-amalgamated/glm.h"
#include <cassert>
#include <cstddef>
View glm.cpp
#include "glm.h"
/// @ref core
/// @file glm/glm.cpp
#include <glm/gtx/dual_quaternion.hpp>
#include <glm/gtc/vec1.hpp>
#include <glm/gtc/quaternion.hpp>
#include <glm/ext/scalar_int_sized.hpp>
#include <glm/ext/scalar_uint_sized.hpp>
#include <glm/glm.hpp>
View build_ags3_sdl2.bat
set BUILD_CONFIG=Release
set AGS_SDL_SOUND_LIB=C:\Lib\SDL_sound\build\Release
set AGS_SDL_SOUND_INCLUDE=C:\Lib\SDL_sound\src
set AGS_SDL_LIB=C:\Lib\SDL2\lib\x86
set AGS_SDL_INCLUDE=C:\Lib\SDL2\include
set AGS_LIBOGG_LIB=C:\Lib\Xiph
set AGS_DIRECTX_LIB=C:\Lib\DirectX
ericoporto / vcpkg_2020_12_02.log
Last active Dec 2, 2020
build on Windows 10 Home
View vcpkg_2020_12_02.log
cmd /S /C pushd %TEMP% && git clone && pushd vcpkg && if not exist vcpkg.exe call bootstrap-vcpkg.bat && vcpkg install libogg:x86-windows-static libtheora:x86-windows-static libvorbis:x86-windows-static && popd && popd && mkdir Lib\Xiph && copy %TEMP%\vcpkg\installed\x86-windows-static\lib\ogg.lib Lib\Xiph\libogg_static.lib && copy %TEMP%\vcpkg\installed\x86-windows-static\lib\theora.lib Lib\Xiph\libtheora_static.lib && copy %TEMP%\vcpkg\installed\x86-windows-static\lib\vorbis.lib Lib\Xiph\libvorbis_static.lib && copy %TEMP%\vcpkg\installed\x86-windows-static\lib\vorbisfile.lib Lib\Xiph\libvorbisfile_static.lib
Cloning into 'vcpkg'...
remote: Enumerating objects: 65, done.
remote: Counting objects: 100% (65/65), done.
remote: Compressing objects: 100% (61/61), done.
remote: Total 95587 (delta 24), reused 20 (delta 4), pack-reused 95522
Receiving objects: 100% (95587/95587), 28.92 MiB | 5.56 MiB/s, done.
Resolving deltas: 100% (59207/59207), done.
ericoporto /
Last active Nov 21, 2020
Sketch for analysis blogpost in

A quick look at Touch Handling APIs in Game Engines

Since the iPhone happened in 2007, touch input has been at the forefront of human interaction with machines. But Game Engines have existed for a reasonable long life, preceding the mobile boom. Touch as a means of interaction with the game world in engines is provided in many ways. Below, we are going to look at different touch APIs to see how they have been provided to enable gaming on our phones. Tilt, camera, and other sensors are going to be ignored so we can focus on touch.

Browser Touch API

ericoporto /
Created Oct 19, 2020 — forked from WesThorburn/
Linux: Compile C++ to WebAssembly and JavaScript using Emscripten and CMake

Linux: Compile C++ to WebAssembly and JavaScript using Emscripten and CMake

Download and Install Emscripten

  • My preferred installation location is /home/user
  • Get the latest sdk: git clone
  • Enter the cloned directory: cd emsdk
  • Install the lastest sdk tools: ./emsdk install latest
  • Activate the latest sdk tools: ./emsdk activate latest
  • Activate path variables: source ./
  • Configure emsdk in your bash profile by running: echo 'source "/home/user/emsdk/"' >> $HOME/.bash_profile
ericoporto / sdlkey_to_agskey.cpp
Last active Oct 16, 2020
AGS Keycode equivalents in SDL Keycodes
View sdlkey_to_agskey.cpp
SDL_Keysym SDLKeysymFromAgsKey (int key)
SDL_Keysym sk;
sk.sym = SDLK_UNKNOWN;
switch (key) {
// ctrl-[A-Z] keys are numbered 1-26 for A-Z
case eAGSKeyCodeCtrlA: { sk.scancode = SDL_SCANCODE_A; sk.sym = SDLK_a; sk.mod = KMOD_CTRL; } break;
case eAGSKeyCodeCtrlB: { sk.scancode = SDL_SCANCODE_B; sk.sym = SDLK_b; sk.mod = KMOD_CTRL; } break;