Вы читаете topright

topright
06 Ноябрь 2020 @ 16:47
Познакомлюсь с творческими кипучими умами, для обсуждения игровых концепций. Необходимы насыщенное интеллектуальное общение на любимые темы, брейншторм, 100% творческая атмосфера!

Сообщение без срока давности.

Немного о моих взглядах: интересуюсь сюжетными играми, преимущественно адвенчурами, "игры - искусство". Я профессиональный программист и игровой дизайнер.

ICQ: 605273045
E-mail: topright.gamedev [at] gmail.com
 
 
 
topright
14 Январь 2013 @ 16:10
Увидел в одном коде С++, позабавило:
http://ru.wikipedia.org/wiki/Hexspeak
 
 
 
topright
08 Февраль 2011 @ 19:16
1. Взялся скомпилировать boost 1.45. Делал всё по инструкции. (Год назад уже делал это, всё шло как по маслу, но со временем детали подвига забылись.) Добавил путь к gcc в переменную окружения %PATH%, добавил "using gcc ;" в user-config.jam, запустил компиляцию bjam.... не сработало.

2. Взял готовый bjam (the ntx86) отсюда.
Включил компиляцию и получил следующий вывод:
<path> > bjam --build-dir="E:\Boost" --build-type=complete toolset=gcc stage

<path>/tools/build/v2/build\configure.jam:145: in builds-raw
*** argument error
* rule UPDATE_NOW ( targets * : log ? : ignore-minus-n ? )
* called with: ( <pbin.v2\libs\regex\build\gcc-mingw-4.4.1\debug>has_icu.exe : : ignore-minus-n : ignore-minus-q )
* extra argument ignore-minus-q
(builtin):see definition of rule 'UPDATE_NOW' being called
<path>/tools/build/v2/build\configure.jam:179: in configure.builds
<path>/tools/build/v2/build\configure.jam:216: in object(check-target-builds-worker)@409.check

Компиляция управляется какими-то хитрыми скриптами на неземном языке, в которых надо специально разбираться. Перечитал уйму форумов, накатал вопрос на stackoverflow, который за час upvoted двое. Я сразу понял, что не одинок, и где-то в мире каждый час какие-то трое программеров мучаются с компиляцией вредной библиотеки. Потратил вечер, плюнул и

3. Скачал boost предыдущей версии 1.44 и повторил всё с ним. Компиляция с тем же bjam и теми же конфигами прекрасно сработала!
Написал на мыло одному из программистов, который отвечает за сборку boost и почапал наконец спать с чистой совестью.

4. На следующий день подключаю статическую либу serialization к проекту, и новый облом:
Cannot export _ZN5boost13serialization9singletonINS_7archive6detail12_GLOBAL__N_116guid_initializerI7derivedEEE12get_instanceEv: symbol not found
Cannot export _ZN5boost13serialization9singletonINS_7archive6detail12_GLOBAL__N_116guid_initializerI7derivedEEE20get_mutable_instanceEv: symbol not found
Cannot export _ZN5boost13serialization9singletonINS_7archive6detail12_GLOBAL__N_13mapINS2_13text_iarchiveEEEE12get_instanceEv: symbol not found
....

Что за ...?

Нашел такой тред:

Вопрос
boost 1.43 works fine...
boost 1.44 with staticly linked boost_serialization
{{{
Cannot export
_ZN5boost13serialization9singletonINS_7archive6detail12_GLOBAL__N_13mapINS2_15binary_iarchiveEEEE12get_instanceEv:
symbol not found
.....
Ответ

I've tracked this down to a bug in the serialization library, so I'm
reassigning the issue.

Robert, here's the problem: When basic_iarchive.cpp is compiled the class
"extened_type_info" is declared dllimport, as a result the linker is
looking for the member functions of that class in a dll... except they're
not present in an external dll, they're present in *this* dll and marked
dllexport.

Here's what gcc is doing here: dllexport just marks the symbol as visible,
but doesn't change it's mangled name. dllimport changes the mangled name
instructs the linker to create stub code for that symbol with the __imp__
prefix that looks for the unmangled name in an external dll. Hense you
can't mix import and export of the same symbol in the same dll. The same
code compiles with msvc and gcc on linux due to chance really - they just
happen to treat import and export as largely the same thing.

In other words in the serialization sources - since each .cpp file appears
in only one library, there should be just 2 source macros, lets say
BOOST_SERIALIZATION_SOURCE and BOOST_WSERIALIZATION_SOURCE that control
what gets built with import or export. BOOST_ARCHIVE_SOURCE can
presumably be replaced by BOOST_SERIALIZATION_SOURCE and associated macros
since all the archive sources are really just part of the narrow character
serialization lib, and not a separate lib in their own right? Further
these macros should be defined *before any serialization or archive
headers are included*, otherwise you run the risk of inconsistent settings
again.


Теперь думаю, вернуться ли ещё в прошлое и скомпилировать 1.43??
Метки: ,
 
 
 
topright
18 Октябрь 2010 @ 20:44
Онлайн-парсер: http://cdecl.org/
int **(*f)(int**,int**(*)(int **,int **));
declare f as pointer to function (pointer to pointer to int, pointer to function (pointer to pointer to int, pointer to pointer to int) returning pointer to pointer to int) returning pointer to pointer to int
Метки:
 
 
 
topright
Список 15 самых оскорбительных компьютерных игр в истории человечества опубликовала The Washington Post. Так, Raid Gaza! предлагает сносить дома в секторе Газа, играя за Израиль. По мнению автора, игра претендует на роль антиизраильской сатиры под маской стандартной стрелялки.

Цель Virtual Jihadi - привлечь внимание к бедам иракцев в условиях нынешней войны. Автор, иракец Вафаа Билал, преподаватель чикагской Школы искусств, взломал игру исламистов "Погоня за Бушем" и вставил в нее себя в роли террориста-смертника.

"Modern Warfare 2" оказалась в перечне из-за миссии "Ни слова по-русски". В Bonetown - игре, где геймерам обещают возможность потрахаться, - нужно победить чопорного святошу с помощью Иисуса и Рона Джереми, а также кулаков, алкоголя, наркотиков и своего либидо. Custer's Revenge - "Месть генерала Кастера" предполагает скачку по прерии под обстрелом и приз - возможность изнасиловать индейскую девушку. Исключительно в Японии распространяется игра Rapelay, где мужчина выслеживает и насилует мать и ее двух дочерей. Из той же серии Battle Raper - вариант бойцовской игры, где нужно срывать одежду с пышно сложенных женщин, чтобы в итоге силой заставить их себя ублажать.
V-Tech Rampage основана на реальных событиях: студент Вирджинского технологического университета открыл стрельбу и убил 32 человека. Сходная по теме игра - Super Columbine Massacre RPG! по мотивам бойни в школе Колумбайн.

Resistance: Ethnic Cleansing – по мнению автора, игра для неонацистов, где геймеру заявляют: "От тебя зависит существование белой расы". "JFK Reloaded" - симулятор убийства Кеннеди, геймер играет за Ли Харви Освальда.

Operation Pedopriest – в распоряжении геймера батальоны евнухов, чтобы запугивать жертв и свидетелей сексуальных преступлений, задача - защищать похотливых священников от полиции и журналистов.

The Torture Game 2 позволяет пытать и прикончить человекоподобную тряпичную куклу. Muslim Massacre: The Game of Modern Religious Genocide позволяет, согласно аннотации, "управлять американским героем и уничтожать мусульманскую расу (!) с помощью арсенала самого смертоносного оружия в мире". Manhunt 2 дает возможность геймеру казнить людей подручными средствами.

Источник: http://k2kapital.com/news/367069/
 
 
 
topright
30 Сентябрь 2010 @ 03:33


Источник: Design Patterns 15 Years Later: An Interview with Erich Gamma, Richard Helm, and Ralph Johnson

В статье упоминается альманах паттернов Linda Rising - Patterns Almanac 2000. Собраны издания 1992 - 2000 (учитывая, что Design Patterns: Elements of Reusable Object-Oriented Software банды четырех вышла в свет в 1994 году).
 
 
 
topright
28 Сентябрь 2010 @ 23:46
Офигенно:

http://www.xs4all.nl/~weegen/eelis/analogliterals.xhtml

Выдержка для затравки:

(The following is all standard-conforming C++, this is not a hypothetical language extension.)

 assert( ( o-------------o
            |L             \
            | L             \
            |  L             \
            |   o-------------o
            |   !             !
            !   !             !
            o   |             !
             L  |             !
              L |             !
               L|             !
                o-------------o ).volume == ( o-------------o
                                              |             !
                                              !             !
                                              !             !
                                              o-------------o ).area * int(I-------------I) );


И ещё много таких "скрытых фич" C++:
http://stackoverflow.com/questions/75538/hidden-features-of-c-closed
Метки:
 
 
 
topright
28 Сентябрь 2010 @ 22:48
All the world's a scene stage
Shakespeare

Появилась хулиганская идея свести весь game scene management к единому scene graph. То есть Game State - это Node. Игровой объект - это Node. Компоненты игрового объекта - тоже Node. И можно ваять из этого Лего сцены любой топологии.

Вводится концепция фокуса. В каждый момент времени только один узел графа находится в фокусе. Узел в фокусе считаем за корневой узел дерева. На каждой итерации игрового цикла происходит обход графа - относительно этого временного корня. Переход из одного Game State в другое - это смена фокуса. Пока мы в одной ветви дерева, параллельно может догружаться и достраиваться (или, наоборот, высвобождаться) другая ветвь.

В результате весь scene management свелся к минимальному числу рядоположных сущностей и операций над ними. Мы можем создавать иерархические Game States, объекты-агрегаты и столь же лихо навороченные компоненты. Вообще говоря, фокус может быть стеком...

Конечно, для языка с идеологией строгой типизации такой подход покажется чересчур вольным и небезопасным. Однако что-то в этой идее мне нравится, и хочется на неё полюбоваться, словно на причудливый кристалл из параллельной вселенной.
 
 
 
topright
06 Сентябрь 2010 @ 17:55
Мой ICQ специально для Gamedev общения: 605273045
E-mail: topright.gamedev [at] gmail.com