26 января 2009 г.

Дескридитация со стороны родственников.

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

Я программист самоучка, но по мнению старшего поколения, я тот кто:

  • Протирает сутками штаны в компе, нет чтобы делом заняться - копать участок например.

  • Страдает фигней, всё что ты пишешь уже написано либо устарело, не парься.

  • Не может написать круто как штат из 100 сотрудников включая дизайнеров: "Ох, у тебя коробочки сталкиваются? А я вот в ралли играл, там намного лучше, так что никакой ты не программист..."

  • Не уделяет должного внимания: "Зай, я пришла с учёбы, а ты пялишся в малопонятный текст, ну сколько можно, давай лучше фильм посмотрим!"



Ну и как спрашивается выжить в такой обстановке?
Ведь смотря фильмы и занимаясь "делом"
Я совершенно не могу полностью развить свои навыки,
выучить наконец банальный MFC, QT.

Основы программинга на платформах Solaris, Ubuntu, Mac OS X, IPhone.

Ну и наверное самое главное: ASM 80x86 и 80x87 для начала.

Решение у меня конечно есть, сидеть в компе ночью когда все спят, только это чревато
синяками под глазами, вечной усталостью и прострацией.

+ Накопленный стресс от горячей поддержки:
"Ну вот, что ты сидишь ночами и только деньги тратишь, на инет и электроэнергию? - Выспался бы, да и на нормальную работу устроился, а то не окупается твоё творчество!"

Но как может окупиться опыт который ещё не получен целиком?

Но я буду верить в светлое будущее :)

Заводы

Вот думал тут над тем, чтобы реализовать завод по производству игровых сущностей entity, т.е все игровые обьекты наследуются от некого предка Entity который обладает базовой функциональностью применимой к большей части игровых объектов и заведует логикой. завод должен уметь:
регистрировать название объекта в игре, создавать объект по игровому названию, названию класса создавать какой-либо другой объект с начальными установками из своего нутра.
Сразу оговорюсь, что это всего лишь мысли в слух и надо срочно покурить кинигу паттернов C++ на предмет паттерна завод/фабрика, дабы избежать велосипедизма с многократными имплементациями различных фабрик.

т.е есть завод с конвеерами по производству данного типа обьекта, например:






  1. // пример приведён псевдо кодом,

  2. // семантика 'L' это мой ник: Lolmen

  3. // во избежании пересечений с неоговоренными

  4. // в сообщении деталями.


  5. // создаём конвеер таким вот образом:

  6. Factory.Register( CLASS_NAME, gameName );


  7. // например в классе бомбы сделаем след:

  8. // в bomb.cpp перед непосредственной имплементацией класса LBomb


  9. RegisterFactory( LBomb, "fake_bomb" ); 


  10. // Добавит конвеер для рождения бомб, сделает ссылку на бомбу

  11. при создании оной в список игровых Entities.


  12. // теперь нам нужно допустим,

  13. // родить обьект в мире при каком-то дейтвии,

  14. // например при вводе в консоль entity_create "entity_name" "position[x y]"

  15. // например entity_create 512.0 286.0 spawn


  16. void LWorld::OnConsoleCmdCreateEnt( const LString &name, const LVec2D &position, bool_t bShouldSpawn )

  17. {

  18.    LEntity *pSomeObj = CreateEntityByName( name, bShouldSpawn );

  19.    

  20.    if ( pSomeObj ) // убедимся что такой конвеер есть!

  21.       pSomeObj->SetPosition( position );

  22. }


  23. // или в классе гранатомёта родить гранату:


  24. void LGrenadeLauncher::PrimaryAttack( void )

  25. {

  26.    LGrenade *pGrenade = 0; 

  27.    // метод Create рождает энитю указывая начальные положения в мире

  28.    // и флаг рождать или просто создать

  29.    if ( Create( pGrenade, "projectile_grenade", GetShootPos(), GetAngles(), true ) )

  30.    {

  31.       pGrenade->SetMoveType( MT_FLY ); // тип перемещения

  32.       pGrenade->SetLifeTime( 10.0f  ); // время жизни 10 секунд

  33.    }

  34. }


  35. // удалять тоже просто:


  36. void RemoveEntity( LString &name, LEntity *pEntity );




Удаление и создание работает через список конвееров завода и список созданных в мире игровых сущностей.
Удобно также осуществлять поиск какого-то класса, например поиск в сфере указанного радиуса всех Entity с именами "projectile_detonation_bomb"

24 января 2009 г.

Контейнеростроение

Строя контейнеры под свой гейм проект,
установил некоторые правила, которые распростроняются и на STL контейнеры
1. Не передавайте в контейнер обьект по оператору new если не собираетесь его удалять через delete
2. Старайтесь не использовать контейнер обьектов, если добавляете обьекты на стёке, перфоманс падает на конструкции и деструкции на стёке + конструкции или копировании в самом контейнере. Используйте контейнер указателей на обьекты.

21 января 2009 г.

Сертифицирование полным ходом.

Вот сижу набиваю сертификаты в intuit, некоторые зачёты по лекциям сдаю на собственных знаниях, обычно оценки идут отлично или хорошо.
Если где-то пишет зачёт, раскуриваю письменность, сча решил догнаться по C++ и теории операционок, ох уж эти потоки с их семафорами :D

По ходу дела, всё больше начинаю переосмысливать устоявшиеся понятия, заодно решил накуриться видео из Академии Управления, аж 10 лекций по 2 часа, ну дабы раскрыть тему сисек с пирамидами знаний, мол массоны там знают всё, а мы просто ячейки общества которые не обладают должными знаниями и мировоззрением.

Постоянная образоваловка всё больше тянет на продолжение доморощенного игрового проекта, хочется прикрутить к нему мультипотоки дописать ещё несколько паттернов и контейнеров, с целью обогнать STL по скорости и управлению оными, а также приобрести чёткое понимание архитектуры.

Интересно чего там админы gdru мутят с БД, невозможно покурить форумы.

17 января 2009 г.

Закошу от армии.

Серьёзно нацелен косить от армии, есть какие-то дополнительные хорды в сердце,
изучил свод законов и болячек для призывной комиссии.
Теперь пройду независимое тщательное обследование:


  • сердца ( УЗИ/ЭКГ/Давление )

  • позвоночника (степень искривления)

  • зрение (тщательная вымерка линейкой в отклонения в диоптриях)

  • лимфа (щитовидная железка и мендальки)

Ну и далее выясню по списку, что подпадает под НГМ.

16 января 2009 г.

Сессия, не люблю тебя.

Ну вот опять, уже близится сессия, и снова нужно покидать родной город и ехать в недоразвитый, две недели без инета и макдака это просто ужость, прибавить к этому сьём квартиры, отсутствие любимой девушки под боком и отсутствие данных по предметам, получим отличный депресняк.
Эх если бы не поганая армия, я бы спокойно доучился бы себе на intuit'e да и устроился уже сис админом на Unix платформы.

15 января 2009 г.

Помощь E32K3 Mod для Hl2

Для проекта E3 совершенно не хватает времени ни теперь ни в перспективе, а мод доделать надо.

А поскольку мод ждёт не малая публика, то нужно как-то публике отдать мод, вопрос как?

Мод надо залить на FileSpace.ru при договорённости с админами bbs.nashalife.ru
Но интернет у нас в белораше дорогой, один пров монопольнег типо beltelecom.by
Поэтому скажу прямо без всяких умных фраз - нуна бабла на инет!

И так, собственно к делу, это не является целью рекламы и наживы, если вам интересен мод, то думаю стоит помочь.

Помощь заключается вот в чём:

Перечислить некоторую сумму (хоть 2 WMZ) в фонд поддержки E32k3
на яндекс кошелёк: 4100196765946

Естественно вы этого делать не обязаны, и мод у вас будет, но если вам хочется получить его быстрее чем выход EP3, то можно это организовать...

Какие условия:
По предварительным оценкам для отлива мода в просторы интернет пространства потребуется порядка 2100 рублей, заметьте если бы 21 человек скинулся по 100 рублей (символическая сумма) то мод можно было бы отгружать хоть сейчас.
Формула такой суммы простая
1RUR = 90BYR; 1mb price = 48 BYR, ~4GB = (1mb price*4000times) / 90 RUR = ~ 2100 RUR.


Но этого будет достаточно только на выкладку мода, который в данный момент не портирован целиком.

На доводку требуется две недели полного рабочего времени, т.к я один.
Как выкроить время обсудим после, сейчас главное иметь под рукой возможность захостить мод.

При отказе от своих слов ручаюсь вернуть вам ваши средства.

Доработки везде и всегда.

Ну вот и мой первый пост в блог!
Переписал шаблон блога немного, как всегда он не растягивался, виджеты боковой панели перекрывают мои кодовые вставки, тегов для вставки кода нету...
Ну что ж, теперь для них хотя бы стили есть, подсвечивать самопальной прогой буду...
Ещё бы дизайн более менее придумать...

Тест подсветки C++ кода:



  1. void printData( LSList<int> &intList )

  2. {

  3.    for ( intList.GetLast(); !intList.BadIter(); intList.GetPrev() )

  4.       printf("%d ", intList.GetNode() );


  5.    printf("\ntotalcount:%u\n", intList.Count() );

  6. }


  7. class testObj

  8. {

  9. public:

  10.    testObj(){ printf("%s", "ctor\n"); }

  11.    ~testObj(){ printf("%s", "dtor\n"); }

  12.    testObj( float i ){ printf("%s %f\n", "cCtor", i); value = i; }


  13.    float value;

  14. };


  15. void StackInit()

  16. {

  17.    testObj a(4), b(5);

  18.    printf("objects constructed\n");



  19.    printf("beginning putting in stack:\n");


  20.    tStack.Put( a );

  21.    tStack.Put( b );


  22.    sStack.push( a );

  23.    sStack.push( b );

  24. }