Eсли picfight.org не работает

Когда кто-то коннектится на https://picfight.org, веб-сервер пакует запрос от вашего браузера и отправляет его, используя специальный транспорт сообщений, на обработку. Потом он получает обратно сообщение с ответом, распаковывает его и скармливает браузеру.

Транспорт сообщений используется такой же как на биржах где торгуют акциями, называется: Apache ActiveMQ. Работает как молния и вообще охуенен во всех отношениях. Например, сообщения там доставляются ещё до того, как они были сформированы.

По ту сторону сети сообщений, находится мой ноут. На ноуте запущен Eclipse в котором Я пишу код в прямом эфире. То есть когда кто-то топчется по сайту, у меня в консоли сыпятся мессаги. Перезапуск сервера занимает чуть менее двух секунд – ровно столько времени, сколько надо чтоб нажать в Эклипсе мышкой “Stop” и потом “Run”.

Особый лулз возникает, если сидеть с ноутом в самолёте: пользователи ходят по сайту, а сайт в это время летит, например, из Нью-Йорка в Сан Франциско на высоте 10.000 метров со скоростью 900 километров в час.

Так что если picfight.org не работает – значит либо Я его не кодю прям щас, либо просто вайфай на ноуте отвалился.

I like smell of polygons in the morning.

Step 1:
Draw one png-file

input

Step 2.
Read it as RGB-function and print to console in ASCII format:
rgb_function

Step 3.
Each color represents one type of terrain: grass, water, dirt or snow. Process the RGB function to extract material-joints (borders?)

water vs dirt
water-dirt

dirt vs grass
grass-dirt

grass vs snow
snow-grass

Step 4.
Compose results from the step 3:

combo

Step 5. Render it!
world_map3

Check out these polygons!
world_map4

Generated Game Level

: 52
unknownColors > []
a_patch_field > 
#########################################################
###┼┌┴┴╩┴┴╩┴┴╩┴┴╩┴┴╩┴┴╩┴┴╩┴┴╩┴┴┐┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼###
###┼╣  ▫  ▫  ▫  ▫  ▫  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼###
###┼╣  ▫  ▫  ▫  ▫  ▫  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼###
###┼└┬┬╤┬┬╗  ▫  ▫  ▫  ▫  ▫  ▫  ╚┴┴┐┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼###
###┼╪┼┼╪┼┼└┬┬╤┬┬╗  ▫  ▫  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼###
###┼╪┼┼╪┼┼╪┼┼╪┼┼└┬┬╗  ▫  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼###
###┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╣  ▫  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼###
###┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼└┬┬╗  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼┼┌┴┴┐┼┼╪┼┼╪┼###
###┼┌┴┴┐┼┼╪┼┼╪┼┼╪┼┼╪┼┼╣  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼┼╣  ╠┼┼╪┼┼╪┼###
###┼╣  ╚┴┴┐┼┼╪┼┼╪┼┼╪┼┼└┬┬╗  ▫  ▫  ╚┴┴╩┴┴╩┴┴╝  ╠┼┼╪┼┼╪┼###
###┼╣  ╔┬┬┘┼┼╪┼┼╪┼┼╪┼┼╪┼┼└┬┬╗  ▫  ▫  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼###
###┼╣  ╠┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╣  ▫  ▫  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼###
###┼└┬┬┘┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼└┬┬╗  ▫  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼###
###┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╣  ▫  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼###
###┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼┌┴┴╩┴┴┐┼┼┌┴┴╝  ▫  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼###
###┼╪┼┼╪┼┼┌┴┴╩┴┴╩┴┴╝  ▫  ╚┴┴╝  ▫  ▫  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼###
###┼╪┼┼╪┼┼╣  ▫  ▫  ▫  ▫  ▫  ▫  ▫  ▫  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼###
###┼┌┴┴╩┴┴╝  ▫  ▫  ▫  ▫  ▫  ▫  ▫  ▫  ╔┬┬╤┬┬╗  ╠┼┼╪┼┼╪┼###
###┼╣  ▫  ╔┬┬╗  ▫  ▫  ▫  ▫  ▫  ╔┬┬╤┬┬┘┼┼┌┴┴╝  ╠┼┼╪┼┼╪┼###
###┼└┬┬╗  ╚┴┴╝  ▫  ▫  ╔┬┬╤┬┬╤┬┬┘┼┼╪┼┼╪┼┼╣  ▫  ╠┼┼╪┼┼╪┼###
###┼╪┼┼└┬┬╤┬┬╤┬┬╤┬┬╤┬┬┘┼┼╪┼┼╪┼┼┌┴┴╩┴┴╩┴┴╝  ▫  ╠┼┼╪┼┼╪┼###
###┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼┌┴┴╩┴┴╝  ▫  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼###
###┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼┌┴┴╩┴┴╝  ▫  ▫  ▫  ▫  ▫  ▫  ╠┼┼╪┼┼╪┼###
###┼╪┼┼╪┼┼╪┼┼╪┼┼┌┴┴╝  ▫  ▫  ╔┬┬╤┬┬╤┬┬╤┬┬╤┬┬╗  ╚┴┴┐┼┼╪┼###
###┼╪┼┼╪┼┼╪┼┼┌┴┴╝  ▫  ▫  ╔┬┬┘┼┼╪┼┼╪┼┼╪┼┼╪┼┼╣  ▫  ╚┴┴┐┼###
###┼┌┴┴╩┴┴╩┴┴╝  ▫  ▫  ╔┬┬┘┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼└┬┬╗  ▫  ╠┼###
###┼╣  ▫  ▫  ▫  ▫  ╔┬┬┘┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╣  ▫  ╠┼###
###┼└┬┬╤┬┬╤┬┬╤┬┬╤┬┬┘┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╣  ▫  ╠┼###
###┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╣  ▫  ╠┼###
###┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼┌┴┴╝  ▫  ╠┼###
###┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╣  ▫  ▫  ╠┼###
###┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼┌┴┴╩┴┴╩┴┴┐┼┼╪┼┼╪┼┼╪┼┼╪┼┼╣  ▫  ▫  ╠┼###
###┼╪┼┼╪┼┼┌┴┴╩┴┴╩┴┴╝  ▫  ▫  ╚┴┴╩┴┴╩┴┴┐┼┼╪┼┼└┬┬╗  ▫  ╠┼###
###┼┌┴┴╩┴┴╝  ▫  ▫  ▫  ▫  ▫  ▫  ╔┬┬╤┬┬┘┼┼╪┼┼╪┼┼└┬┬╗  ╠┼###
###┼╣  ▫  ▫  ╔┬┬╤┬┬╤┬┬╗  ▫  ╔┬┬┘┼┼┌┴┴┐┼┼╪┼┼╪┼┼╪┼┼╣  ╠┼###
###┼╣  ▫  ╔┬┬┘┼┼╪┼┼╪┼┼└┬┬╗  ╚┴┴╩┴┴╝  ╠┼┼╪┼┼╪┼┼┌┴┴╝  ╠┼###
###┼└┬┬╤┬┬┘┼┼╪┼┼╪┼┼╪┼┼╪┼┼└┬┬╤┬┬╤┬┬╤┬┬┘┼┼╪┼┼╪┼┼└┬┬╗  ╠┼###
###┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼└┬┬┘┼###
###┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼┼╪┼###
#########################################################

Let’s reverse-engineer a bit together

Step 1: Start StarEdit and draw random level.

step-001

Step 2: Turn-on grid to see sprites.

step-002

Step 3: Stretch everything 200% vertical.

step-003

Step 4: Rotate 45 degrees.

step-004

Step 5: Let’s see now

step-005

Looks like we have some multi-level 9-patch, but all sprites are rotated 45 degrees and scaled vertically, plus shifted a bit to escape symmetry.
This is genius.

Now we can do the process backwards to create an isometric world.

O_o