Стрим Battlerite
Стрим-центр14 в эфире
[16:00] Battlerite в прямом эфире Канобу
stream center intro slide 1

«Канобу» и «ВКонтакте» запускают «Стрим-центр» — сервис для тех, кто любит смотреть и проводить прямые трансляции. Наш сервис поможет делиться стримами с «ВКонтакте», Twitch и YouTube и обеспечит новую аудиторию, которой будет интересен именно ваш контент.

«Стрим-центр» доступен на любой странице «Канобу» — достаточно нажать на стрелку в верхнем правом углу и развернуть сетку с активными стримами. Вы также можете открыть чат, кликнув на иконку сообщения в правом углу.

Кнопка «Добавить стрим» позволит поделиться прямой трансляцией. После нажатия вы увидите три активных поля. В первой строке нужно вписать адрес канала, остальные поля заполнит наш сервис.

stream center intro slide 4

Делиться стримами — это просто! Попробуйте сами. Обратите внимание, что после добавления стрима ваша трансляция сначала отправится на рассмотрение модераторов.

16 14 713
4 мин.

Пост в «Паб» от 10.09.2011

Пост в «Паб» от 10.09.2011 - Изображение 1 Youtube
A Visit to id Software (1993)

Есть одна компания, которую я очень люблю как за ее продукты, так и за то, что в ней работают прекрасные одаренные раздолбаи (думаю, вы поймете, о чем я, когда посмотрите видео :), в самом лучше смысле этого слова. Эта компания - ID Software.
Если, по какой-то случайности, кто-то не в курсе - это та самая компания, которая придумала шутеры от первого лица или FPS, создавшая серии Wolfenstein 3D, Doom, Quake, и т.д.
Ниже представлено видео, выложенное http://ru.wikipedia.org/wiki/%D0%A0%D0%BE%D0%BC%D0%B5%D1%80%D0%BE,_%D0%94%D0%B6%D0%BE%D0%BD#.D0.9E.D1.81.D0.BD.D0.BE.D0.B2.D0.BD.D1.8B.D0.B5_.D0.BF.D1.80.D0.BE.D0.B5.D0.BA.D1.82.D1.8B, о том, как компания выглядела в 1993 году. Оно очень забавное: чего стоит хотя бы то место, где они играют в только что вышедшего Aladdin на Sega Genesis ("Какая графика!"), или интервью с звукорежиссером, который очень артистично показывает озвучку своих проектов.

http://youtube.com/watch?v=Q65xJfVkiaI

По случаю выхода DOOM под iPhone я немного заглянул в его исходные коды и хотел с вами поделиться наиболее интересными комментариями оттуда (их программисты оставляют на тот случай, если кто-то будет читать код - для лучшего понимания). На самом деле это исходные коды не самого оригинального DOOM, а проекта http://prboom.sourceforge.net - где его значительно улучшили и исправили множество багов. Для наших целей это даже лучше, так как там больше комментариев, которые объясняют разные интересные моменты (в основном, это изменения, сделанные в 1998 году). Технические подробности кода я обрисовывать не буду, таких постов итак очень много, да и Канобу не место сбора технических специалистов. Постараюсь написать о забавном.

Когда читаешь этот код, хорошо чувствуется атмосфера тех лет - когда все делали вручную, алгоритмы еще были не очень сложными и вообще весь код теплый и ламповый. Видно, что писали его с любовью и с известной долей веселья - мне, как программисту, даже становится жалко, что не застал те времена.

// Had a "quick hack to fix romero bug"

"Здесь раньше был хак, чтобы починить баг Ромеро" - имеется в виду Джон Ромеро.

// I'm using a scale of 100 since I don't know what's normal -- killough.
#define MOUSE_SENS_MAX 100

"Я использую шкалу чувствительности мыши от 0 до 100, потому что понятия не имею, как правильно должно быть". Как показал опыт, потом так стали делать почти везде, хотя, сейчас от этого уже отошли.

V_FillRect(0, ((x+cursor_start-1)*SCREENWIDTH)/320, (y*SCREENHEIGHT)/200, (char_width*SCREENWIDTH)/320, 9*SCREENHEIGHT/200, PAL_WHITE);

А этот код - пример того, что тогда все было более тяжело и весело одновременно :) Это функция рисования курсора мышки, где координаты высчитываются в зависимости от разрешения экрана.

// key_help and key_escape can no longer be rebound. This keeps the
// player from getting themselves in a bind where they can't remember how
// to get to the menus, and can't remember how to get to the help screen
// to give them a clue as to how to get to the menus. :)

"Теперь кнопки Помощь и Вызова меню (ESC) переопределить нельзя. Это нужно для того, чтобы не дать игроку загнать себя в положение, когда он не может вспомнить, на какую кнопку повесил меню, а также не может вспомнить, где взять помощь по кнопкам, чтобы получить подсказку, как выйти в меню :)".

// not a legal action here (yet)

"Это действие не правильное в данном случае (пока)". Хороший пример, что временные решения часто перерастают в постоянные :) (Комментарий еще из оригинальных исходников 1993 года).

// Fixed crash while trying to read data past array end
// All previous versions worked only by a lucky accident

"Исправлено падение во время чтения за границами массива. Все прошлые версии работали правильно только по счастливой случайности".

// check for corpses to raise

"Проверка, можно ли оживить трупы"

// Call PIT_VileCheck to check
// whether object is a corpse
// that canbe raised.

"Вызов функции PIT_VileCheck" для проверки, является ли объект трупом и можно ли его оживить".

// make sure there is a player alive for victory
...
// no one left alive, so do not end game

(в коде победы над финальным Боссом): "Убедимся, что в игре есть живой игрок, чтобы отпраздновать победу. ... Никого в живых не осталось, игра не будет завершена."

struct brain_s brain; // killough 3/26/98: global state of boss brain

"Глобальный статус мозга босса"

void A_SpawnFly(mobj_t *mo) {
...
if (--mo->reactiontime) return; // still flying
...

(название функции - ОживляющаяМуха): комметарий к коду: "еще летает".

В коде описания врагов есть забавная функция, которая предотвращает попадание врагов друг в друга. На самом деле это суровый хак, который, по сути, заставляет врагов "промахиваться" в таких случаях. Иногда он не срабатывает :)

Да, и еще одна суровая деталь - в коде была поддержка нескольких мониторов, что было очень круто для 1993 года (даже в современных играх такое почти не встречается). Правда, в релиз этого код кажется не вошел, но следы в исходниках есть.

Еще в коде меню для ознакомительной (shareware) версии есть BFG и Plamsa, и комментарий - "в ознакомительной версии их быть не должно, но пофиг, это же всего лишь меню, в игре их не будет". Позже, уже в main.c их немного кривым способом руками убирают перед запуском - видимо, исправляющий то ли не знал как устроен код меню, то ли делал быстрый фикс (простите, что немного ударился в подробности :)

14 комментариев