Как я 13 лет делал футбольный симулятор

    2_fview_gameplay


    История, которую я расскажу, началась 13 лет назад на уроке информатики. Мы с друзьями-семиклассниками решили все задачи на Паскале и весело играли в первый Quake. Наша учительница увидела это, подошла ко мне и сказала всего одну фразу, которая перекосила мою картину мира: «Если ты хочешь играть в игры на уроке, пиши их сам». С тех пор я эпизодически делаю игры. Одна из них — футбольный симулятор, о котором и пойдёт речь.


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


    Дисклеймер: с момента событий, описанных в этом тексте, я сделал курс по разработке на Unity и выложил несколько своих игр в Google Play и Windows Store. Сейчас я редактор блога Яндекс.Денег и рассказываю эту историю, чтобы поделиться опытом с сообществом.


    В русскоязычном геймдеве тех времён была интересная особенность — MS DOS уже почти закончился и отечественные программисты активно пилили игрушки под Windows. В огромном количестве выходили симуляторы компьютерщика, танчики, разные карточные и «логические» игры. А еще массово продавались диски с этими играми. О том, как составлялись такие сборники, немного написано в «Хрониках тестировщика», но тогда я об этом ещё не знал.


    Наверняка многие из вас помнят это прекрасное меню:


    1250menu
    Жизнь, его, конечно потрепала


    На одном из таких дисков я впервые встретил игру Coach — текстовый футбольный менеджер. Там можно было взять какую-нибудь команду из английской премьер-лиги и попробовать привести её к чемпионству. А еще эта игра распространялась по модели shareware: можно было сыграть два сезона, а дальше — платить. Конечно, платить никак не представлялось возможным, потому что для этого нужно было отправить банковский перевод создателю игры, а в 13 лет в банк не то что не пойдешь, о нём даже не думаешь. Яндекс.Деньги тогда уже существовали, но до появления Кассы оставалось 8 лет, поэтому тоже неудобно. Мы с друзьями играли по два сезона, а потом начинали заново.


    Пришлось искать решение, и в процессе я написал одну из своих первых игр — Coach, с более интересной мне российской лигой, кубком и кучей багов. Название я менять не стал, только изменил двойку на тройку. Получилось так:


    Coach 3 v2.52


    Что нужно любой футбольной команде? Конечно, игроки. Естественно, ни о каких лицензиях на клубы и игроков тогда никто не знал — мы просто собрались с одноклассником и по памяти составляли списки команд. Поэтому, например, в ЦСКА и Спартаке всё-таки набралось по 11 человек (да, это был симулятор без замен), а вот Луч-Энергия из Владивостока остался с пустыми плашками вместо игроков.


    Как сейчас помню: 2005 год, я вооружился учебником по информатике за 9 класс (там как раз было про мой любимый Visual Basic 6) и открыл редактор формы — слово IDE я узнал сильно позже. Перетянул на форму кнопку, кликнул и открыл редактор кода. Полный гордости за себя я впечатал


    Private Sub Command1_Click()
    End
    End Sub

    и нажал «Запустить». Всё сработало и очень порадовало меня. Через некоторое время появился текстовый футбольный симулятор — Coach v2.52.


    2018-11-01_11-03-44
    Юристы из РПЛ, если вы это читаете — эта игра никогда не выходила в свет и не продавалась за деньги


    Тогда мне казалось, что это жемчужина программного кода. Конечно, в тот момент я многого не знал и, например, турнирная таблица хранилась в шести массивах из Label прямо на форме. Никаких сохранений, никаких массивов переменных — только хардкор. Естественно, из-за этого возникали странные баги:


    2018-11-01_11-11-04
    Все команды сыграли по 2 матча, но некоторые из них по 3, а другие по одному


    2018-11-01_11-17-52
    Ещё можно было купить Роя Кина и Андрея Шевченко в Спартак. Не уверен, что такое было хоть в одном футбольном симуляторе того времени


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


    У меня не осталось исходников этой версии, но я уверен, что там было что-то такое:


    m = Form1.Label5(0).Caption
    Form2.Label3(m).Caption = Form2.Label3(m).Caption + 3

    О некоторых возможностях VB6 в учебнике не писали. Поэтому, например, когда я узнал о том, что Shape можно залить разными способами, сделал под это целое окно с выбором газона на клубном стадионе:


    1_coach_stadium
    А вы газон подстричь смогли бы на флейте вэбэсточных труб?


    Важная мораль #1 — изучайте возможности инструментов, которыми пользуетесь каждый день.

    Я ведь был уверен, что однажды отправлю эту игру на какую-нибудь многоигровку — поэтому даже написал справку. Конечно, её тогда увидели два с половиной тестировщика. Но раз уж так вышло — пусть будет опубликована.


    readme.txt

    Coach 3 V2.08 — 2006 Edition




    Здравствуйте! Спасибо что приобрели эту игру.


    1.Установка
    2.Системные требования
    3.Тестовая платформа
    4.Что новенького
    5.Советы
    6.Деинсталляция
    7.Огромное спасибо...


    1.Установка
    Запустите файл Setup.exe и распакуйте файлы в папку с:\Program files\Football Manager 2005
    А потом еще распакуйте файл setup2.exe


    2.Системные требования
    Никаких P4-2500.Все предельно просто.Итак,


    Pentium 1-233 MHz (рекомендуется 300 и выше)
    HDD 5MB
    16 MB RAM (рекомендуется 32 и выше)
    Video 16 MB
    Windows 9x,Me,NT,2003,Longhorn. На XP работает только при наличии файла msvbvm60.dll в корневом каталоге с:\windows\system
    Мышь.


    3.Тестовая платформа
    Celeron 1100 MHz
    160 MB RAM
    Video 16MB
    Windows XP SP2


    4.Что новенького.


    Cделал много нового.
    Например, теперь в чемпионате России участвуют 14(!) команд вместо 8.
    Изменен диалог "Команда«, появилось меню о тренере клуба.
    Теперь игра ЗАВИСИТ от тактики!
    Сильные соперники.
    Впервые со времен Coach 1 вам нормально начаисляются очки.
    Лига Чемпионов.Супер-Кубок России.


    5.Советы.


    Не изменяйте и не удаляйте файлы из папки с:\program files\football manager 2005\clubs\emblems
    После установки скопируйте файл MSVBVM60.DLL в папку c:\windows\system


    6.Деинсталляция


    Деинсталляция не требуется.Просто сотрите папку с игрой.


    7.Огромное спасибо...


    Кушербаеву Данияру за бета-тестирование.
    Карнееву Михаилу, Трофименко Михаилу за бета тестирование и ценные советы.
    Сайту rfpl.org за форму команд Премьер-Лиги.


    27.01.06


    P.S Наши победят!


    Если бы я знал, что я буду возвращаться к этому проекту в течение следующих 13 лет, то, конечно, более ответственно отнесся бы к сохранению всего, что с ним связано. Тем не менее, Coach 2.5 остался в истории и запускается даже сейчас, прямо из папки, которая так и называется:


    E:\prod\dev\My_old_dev_projects\Dev\Старые игрули,но работают

    Наверняка были и более ранние версии, но бэкапить мне тогда было некуда, и исходники до 2005 года вместе с их ранними версиями однажды потерялись при сбое жесткого диска объемом 2.3 гигабайта. ностальгически вздыхает А помните, когда чтобы поставить Blood 2, нужно было стереть Age of Empires 2?


    0__football_champ_nogame
    Скриншот версии 1.62. Если бы Windows 10 1803 вышла в 2004, то у меня бы не осталось и этого экшешника


    Важная мораль #2 — делайте бэкапы.

    Ну и самое главное — геймплей. Случайные события, не зависящие ни от чего — вот, что захватывало внимание на долгие часы разработки и тестирования. А тестировали так — играли, пока что-нибудь смешно не отвалится.


    1_coach_gameplay
    Не спрашивайте, что такое очки атаки. Я не помню


    Видите этот нервный розовый квадратик? Сейчас расскажу и о нём.


    «Шинник» и визуальный симулятор футбола


    Вместе с Coach на тех дисках распространялись еще две игры. Первая — «ФК Шинник» от Евгения Шарова — в ней было посредственное управление командой, но можно было смотреть за ходом матча. Судя по титрам, её тоже делали довольно долго — с 1996 по 2000. Второй игрой был досовский «Футбол 4×4» — там не было совершенно ничего впечатляющего, кроме бегающих человечков, но это так сильно меня очаровало, что я решил сделать такую же игру для себя.


    Футбол 4х4

    2018-11-01_23-53-44


    Сначала из-за недостатка опыта появился розовый квадратик. Он двигался по полю, обозначая, где сейчас идёт игра. И, вроде, даже на что-то влиял. Этого было мало и я сделал второй футбольный проект в своей жизни — Football View.


    2_fview_gameplay
    Да-да, это замазанные баннеры. В прошлом десятилетии с этим было как-то попроще


    Загадка — как двигать игроков по полю постоянно, когда нельзя на каждого повесить отдельный скрипт, который будет учитывать позицию, соседей и расстояние до мяча? Отгадка — использовать таймер и крутить игроков в цикле, случайно смещая их на ширину спрайта. Код прямиком из 2005, поэтому мне сейчас очень стыдно.


    Private Sub Igroki_Timer()
    k = k + 1
    ′ движения игроков
    For i = 1 To 8
    Randomize (x)
    x = Int(Rnd * 4)
    If x = 1 Then Image2(i).Top = Image2(i).Top — 360
    If x = 2 Then Image2(i).Top = Image2(i).Top + 360
    If x = 3 Then Image2(i).Left = Image2(i).Left + 360
    If x = 4 Then Image2(i).Left = Image2(i).Left — 360
    y = Int(Rnd * 4)
    If y = 1 Then Image3(i).Top = Image3(i).Top — 360
    If y = 2 Then Image3(i).Top = Image3(i).Top + 360
    If y = 3 Then Image3(i).Left = Image3(i).Left — 360
    If y = 4 Then Image3(i).Left = Image3(i).Left + 360
    ′ остановка и пас
    If Image2(i).Top = Image1.Top And Image2(i).Left = Image1.Left Then Igroki.Enabled = False: pas_vpravo.Enabled = True
    If Image3(i).Top = Image1.Top And Image3(i).Left = Image1.Left Then Igroki.Enabled = False: pas_vlevo.Enabled = True
    ’ уход за верхнюю линию и нижнюю линию
    If Image2(i).Top <= 1080 Then Image2(i).Top = Image2(i).Top + 720
    If Image3(i).Top <= 1080 Then Image3(i).Top = Image3(i).Top + 720
    If Image2(i).Top >= 4320 Then Image2(i).Top = Image2(i).Top — 720
    If Image3(i).Top >= 4320 Then Image3(i).Top = Image3(i).Top — 720
    ′ Уход игроков за левую линию и правую линию
    If Image2(i).Left <= 480 Then Image2(i).Left = Image2(i).Left + 3720
    If Image3(i).Left <= 480 Then Image3(i).Left = Image3(i).Left + 3720
    If Image2(i).Left >= 6600 Then Image2(i).Left = Image2(i).Left — 3720
    If Image3(i).Left >= 6600 Then Image3(i).Left = Image3(i).Left — 3720
    
    Next i
    End Sub

    Важная мораль #3 — пишите понятные и подробные комментарии.

    Ещё один таймер проверял, что матч закончился:


    If Val(Label5.Caption) = "90" And Val(Label2.Caption) > Val(Label1.Caption) Then MsgBox ("Матч окончен.Победила команда" + Label3.Caption): End

    А сейчас — самое страшное. Мяч двигался по полю аж четырьмя таймерами, которые так и назывались — pas_vverh, pas_vniz, pas_vpravo и pas_vlevo. У некоторых сейчас задергался глаз, другие срочно пошли перечитывать Страуструпа, третьи задают немой вопрос — «Но мы же видим, что на гифке мяч не двигается вверх и вниз». Конечно, ведь я не смог правильно скоординировать четыре таймера между собой.


    Смотрю сейчас в код и понимаю, что там даже предусмотрено непрямое управление мячом, но оно не работает.


    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If (KeyCode = vbKeyLeft) Then pas_vlevo.Enabled = True
    If (KeyCode = vbKeyRight) Then pas_vpravo.Enabled = True
    If (KeyCode = vbKeyUp) Then Pas_verh.Enabled = True
    If (KeyCode = vbKeyDown) Then Pas_vniz.Enabled = True
    End Sub

    Весь девятый и десятый класс мы с моим одноклассником были заняты написанием симулятора операционной системы, поэтому до футбола руки не доходили. «Да это же курам на смех», — подумал я, когда в 2009 году всё-таки откопал старый экзешник, — «Нужно всё переписать с нуля».


    Как я рефакторил нерефакторируемое


    Переписать с нуля — отличная мысль, когда проект небольшой, а в голове появилось с десяток способов сделать лучше и удобнее, чем было. Мне нужен был идеальный текстовый футбольный симулятор, и конечно же, всё снова пошло не так.


    В 2009 с интернетом стало полегче, и я пошёл на сайт РФПЛ и стал думать, как забрать оттуда составы команд, которые хранились в таком виде:


    3_rpfl_players


    Грепать я тогда не умел, парсить страницы — тоже, а про xml и csv знал очень обрывочно. Поэтому техническое решение было очень странным:


    1. Руками скопировать содержимое страницы и вставить его в Excel. Информация по каждому игроку занимала четыре строчки, а где-то рядом висела фотография. Их я не использовал и легко избавлялся.
    2. Все строки из экселя нужно было скопировать в текстовый файл parse.txt
    3. Был написан парсер, который читал файл построчно и раскидывал информацию об игроках по четырем спискам — по номинальной позиции на поле.
    4. Все эти списки сохранялись в текстовый файл определенного формата, который игра легко съедала после запуска.

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


    ’ If Val(List1.List(I)) * 0 = 0 Then MsgBox (List1.List(I))

    Иногда парсер захлебывался и файл с командой выглядел так:


    gk
    71 Бабурин 
    22 Бородин 
    81 Дронов 
    30 Жевнов 
    91 Зайцев 
    16 Малафеев 
    df
    3 Алвеш     Португалия 
    2 Анюков 
    83 Васильев 
    14 Губочан  Словакия 
    96 Зуев 

    Это приводило к странным багам внутри самой игры.


    2018-11-01_13-08-10
    В составе Зенита мог играть полузащитник Португалия с рейтингом 86.


    В этой версии стало больше управления командой и меньше веселья. Тактика снова почти ни на что не влияла, но можно было покупать и продавать игроков, они травмировались и получали карточки. Хранение турнирной таблицы на форме ушло в прошлое, теперь всё лежало в памяти и работать с этим стало гораздо удобнее.


    Оставалась проблема с отрисовкой на форме кучи цифр, но она решилась элегантно:


    3_rfpl_tablefix
    Так себе UX


    Конечно, в коде всё еще встречались куски, на которые без слёз не взглянешь:


    For i = 1 To 15
    If tbl(i) = team2 Then i = i + 1
    k = k + 1
    If k = 1 Then tr = Int(Rnd * 5) + 2: xa = Int(Rnd * tr): ia = i
    If k = 2 Then
    xb = Int(Rnd * tr)
    If xa > xb Then pts(ia) = pts(ia) + 3: gm(2, ia) = gm(2, ia) + 1: gm(4, i) = gm(4, i) + 1: gm(5, ia) = gm(5, ia) + xa: gm(5, i) = gm(5, i) + xb: gm(6, ia) = gm(6, ia) + xb: gm(6, i) = gm(6, i) + xa
    If xa < xb Then pts(i) = pts(i) + 3: gm(2, i) = gm(2, i) + 1: gm(4, ia) = gm(4, ia) + 1: gm(5, ia) = gm(5, ia) + xa: gm(5, i) = gm(5, i) + xb: gm(6, ia) = gm(6, ia) + xb: gm(6, i) = gm(6, i) + xa
    If xa = xb Then pts(i) = pts(i) + 1: pts(ia) = pts(ia) + 1: gm(3, i) = gm(3, i) + 1: gm(3, ia) = gm(3, ia) + 1: gm(5, ia) = gm(5, ia) + xa: gm(5, i) = gm(5, i) + xb: gm(6, ia) = gm(6, ia) + xb: gm(6, i) = gm(6, i) + xa
    Form6.List1(ng).AddItem tbl(ia) + Str(xa) + «:» + Str(xb) + " " + tbl(i)
    k = 0
    End If

    Эта игра была почти идеальной — можно было законно купить Игоря Акинфеева нападающим в Амкар, а потом посмотреть, как нижегородская Волга становится чемпионом России. Да и в целом, всё стало гораздо приличнее — ну, это я сначала так думал. Через четыре года всё оказалось не так радужно.


    RFPL 2 — Resurrection


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


    Важная мораль #4 — иногда лучше переписать с нуля.

    Сайт РФПЛ к тому моменту изменился, поэтому я написал еще один парсер (его код канул в лету), но теперь досадных ошибок со страной уже не было. Для игроков я завёл отдельную структуру, где указывал, в том числе, клубную принадлежность — так стало проще реализовать трансферы и вести статистику. А ещё они все получали очки, в зависимости от «звездности» и позиции на поле.


    Type player
    
    Surname As String
    FirstName As String
    Num As String
    Team As String
    
    Goals As Integer
    Shots As Integer
    Saves As Integer
    
    AttPts As Integer
    DefPts As Integer
    MidPts As Integer
    GoalPts As Integer
    
    Position As String
    Star As Boolean
    Stamina As Integer
    Yellow As Integer
    TeamPts As Integer
    Injured As Integer
    
    fromStart As Boolean
    fromBench As Boolean
    
    End Type

    2018-11-01_13-30-49
    Появилась кнопка «Автосостав» для особо ленивых игроков — она сама заполняла позиции самыми сильными «футболистами». К сожалению, в это всё еще играл только я


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


    2018-11-01_13-34-53


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


    4_rfpl2_gameplay
    Позорный. Мячик. Вместо. Розового. Квадратика.


    Важная мораль #5 — иногда лучше не делать никак, чем сделать розовый квадратик.

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


    Если вы не сделаете бэкапы, то вам будет не о чем рассказывать в этом разделе


    От большого проекта на Unity из 2016 года, в котором были хорошие модели движения агентов, позиционная игра и почти умное движение мяча, осталась маленькая гифка с одного из ранних этапов разработки.


    ezgif-2-358042221c7d


    Поэтому об этом расскажу как-нибудь в другой раз, когда снова перепишу всё с нуля.


    О чём это всё?


    Мне нравится вспоминать эту историю с самого начала. Нравится думать о том, что этот игрушечный «симулятор» принёс больше опыта и веселья, чем некоторые университетские занятия и рабочие задачи. Вспоминать о том, как регистрировал первую почту, на которую благодарные игроки будут присылать письма, и о том, как в 2007 году писал на городском форуме «Читать учебники в интернете это читерство, я буду всё изучать методом тыка». Это прекрасные ощущения, которые, наверное, в разном виде есть и у вас.


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


    «Если ты хочешь играть в игры на уроке, пиши их сам».

    Яндекс.Деньги

    111,00

    Как мы делаем Деньги

    Поделиться публикацией
    Комментарии 120
      +6
      Когда ждать следующую версию? :D
        +3
        Когда разберусь с микросервисами, автотестами, облаками и современным мобильным геймдевом, не раньше :)

        Coach 2020 — звучит же?
          +7
          И микротранзакциями!
            0
            Блокчейн можно добавить на всякмй случай
            +1
            Так и запишем «через год»!
              +3
              Да ладно. Можно центральную менюшку сделать, а остальное — DLC
                0
                Paradox-ы перелогиньтесь!)
            +23
            Читать учебники в интернете это читерство, я буду всё изучать методом тыка


            За эту цитату отдельное спасибо, это прекрасно
              +1
              Это было прекрасно когда не было интернета :)
              А сейчас метод тыка — не такой уж и «тык».
                0
                Или все-таки тык? В 2006 году я связь браузера с сервером реализовывал через скрытый iframe, потому что на тот момент гайдов и рекомендаций именно по такому способу было гораздо больше и в основном натыкался именно на этот способ, несмотря на то, что тогда уже существовал ajax.
                  0
                  Пфф… я «аякс» загрузку файлов реализовывал через скрытый iframe, а еще были костыли для скрытого input[type=«file»] для старой оперы и еще много чего.

                  Хорошее было время. А сейчас что? 20 Мб стороннего кода подключил и все работает :)
              +3
              Замечательно, это сколько же упорства, спасибо за статью.

              Надо отдать должное и другим хорошим учителям информатики (например моему Е.П.) — они все так говорят :)
                +1
                Спасибо за комментарий!

                Поде́литесь еще какой-нибудь жизненной мудростью, которую запомнили на всю жизнь?
                  +1
                  На мудрость это не тянет, но периодически вспоминаю.

                  Строка которую ты только что закоммитил уже стала легаси.

                  UPD: как то пафосно выглядит, да?
                    0
                    Не, в самый раз! Про команду тоже хорошо было.
                      0
                      Там уровень пафоса был еще выше, пришлось убрать :)
                +1
                огонь)
                  +3
                  Как вам это удалось? У меня вот нет столько терпения, чтобы скрупулезно пилить каждую мелкую фичу.

                  Иногда хочется что-нибудь сделать, для тренировки своих скиллов, но как начнешь думать, что ведь там надо реализовывать, например, сохранение игры, а это означает парсер файла и 100500 возможных проблем, которые надо предусмотреть. И это только одна маленькая фича из всей игры.
                    +1
                    У меня это всегда работало так — если я придумал, как должен выглядеть конечный продукт, то просто садился и делал, пока не устану.

                    Не помню как с остальным, но RFPL 2 была написана, кажется, за неделю, и еще пару недель я её тестировал и допиливал. В таком режиме не разделяешь фичи на мелкие и не очень, а просто делаешь всё по заранее заготовленному плану.
                      +1
                      У меня такое обычно с гуем. Терпеть не могу все эти кнопочки перетаскивать туда-сюда, самое скучное и муторное занятие. Как представлю, что чтобы сделать в моей воображаемой игре крутую фичу Х — придется запилить пять окон и десять кнопок, сделать чтобы это все не разъезжалось, локализовывалось и т.п. сразу руки опускаются.
                        0
                        А на чём пишете?
                        Спрашиваю, потому что много раз слышал от своих студентов-питонистов возмущения по поводу рисования GUI в лабораторных.
                          +1
                          Вообще на джаве, но разработка гуя обычно — нудная хрень независимо от языка.
                          В геймдеве впрочем это еще часто усложняется тем, что далеко не все игровые движки имеют внутри себя хорошие гуи-библиотеки. Как я в свое время с LWJGL и nifty-gui настрадался.
                            0
                            Я, кажется, даже таких названий не слышал.
                            Вам хоть денег заплатили за страдания?
                              0
                              Так я для себя делал. Но какие-то деньги в стиме заработал, да.
                                0
                                Это отлично, вы молодец.
                      +7
                      Тепло, лампово, так же писал только на Delphi ))
                        +1
                        Весь девятый и десятый класс мы с моим одноклассником были заняты написанием симулятора операционной системы
                        парни вы крутые, реально!
                        Грепать я тогда не умел, парсить страницы — тоже, а про xml и csv знал очень обрывочно. Поэтому техническое решение было очень странным:
                        это все фигня. Дорогу осилит идущий, главное что задача была решена и решена за обозримое время. Не надо все знать, надо просто иметь мозги чтобы уметь находить/придумывать решение проблемы. Если бы вам надо было обработать 1000 страниц, я уверен, что вы бы дошли до парсинга.

                        Спасибо! Всегда интересно читать про свой опыт, про подходы, ошибки и эволюцию. В последнее время слишком много всяких консультантов, которые учат работать по аджайл, обскрамившись, натягивая канбан по книжкам.
                        Удачи вам!
                          +1
                          Эх. Олдскулы свело. У меня, как и у многих здесь присутствующих, тоже есть маленькое кладбище. Но ничего не закончено хотя бы наполовину.

                          Вот из тех времен, когда осваивал HTML5 в далеком 2011:

                          Гифка на 1.7 мегабайта
                            0
                            Это очень здорово! Спасибо, что поделились!
                            –2

                            Оффтоп. Там под спойлером "Футбол 4х4" метко так команды названы)

                              +2

                              Статья унесла в детство. Я в таком же хардкод-стиле когда-то в восьмом классе писал «Монополию». У меня там фишки по полю двигались смещением координат. А границы поля определялись условиями. И всё это на Visual Basic 6. Восемнадцать лет назад. Всё погибло лет пятнадцать назад вместе с жёстким диском.

                                +2

                                Вы мне смотрите о чём напомнили :)
                                  0

                                  Просто слёзы наворачиваются. )

                                  +3

                                  Вы вот говорите "игры писал 18 лет назад". Я сначала подумал "Опять старики пришли ностальгировать", а потом посчитал, тоже оказывается 18 лет назад :(

                                  +2

                                  Классная статья, спасибо!
                                  Я, помнится, в 10-11 классе писал препроцессор для языка JASS (который был в World Editor'e WarCraft 3). Начинал с Delphi, потом перелез на C#. Код выложил на гитхаб, недавно откопал мануал, который писал для него. Код, конечно, то еще поделие, но вот эта ностальгия при его просмотре… Всю статью на кончиках пальцев прочувствовал :)

                                    +1
                                    Спасибо за историю. Я знал, что не одинок в своих стремлениях и ошибках :)
                                      0

                                      Вот репозиторий со всем этим безобразием, а вот тот самый мануал, если вдруг тоже захотите посмеяться ;) Парсер без AST, лексем и токенов. Только регулярки и indexOf, только хардкор.

                                    +3
                                    m = Form1.Label5(0).Caption
                                    Form2.Label3(m).Caption = Form2.Label3(m).Caption + 3
                                    Хех, у меня, по-моему, было ещё жёстче. Я был уверен, что лишние переменные сильно расходуют ресурсы. И когда мне нужна была временная переменная, я не объявлял её локально, а старался использовать глобально-доступное свойство Tag (если нужен был integer) или Hint (если нужен был string). И ведь работало же! (Иногда, правда, я забывал, установить ShowHint в false и «кишки» программы становились видны пользователю при наведении мышки на что-то).

                                    А когда я где-то между 9 классом и 1 курсом открыл для себя истинную сущность типа boolean… Что вместо
                                    if playerList.Count > 0 then okBtn.Enabled := true else okBtn.Enabled := false
                                    
                                    или
                                    if okBtn.Enabled = true then DoSomething
                                    
                                    можно писать просто okBtn.Enabled := playerList.Count > 0 и if okBtn.Enabled then DoSomething соответственно… Ооо, вот тогда я почувствовал себя программистом.
                                      0
                                      Ох уж эти глобально доступные свойства, сколько они мне нервов испортили!
                                      Но я, кажется, делал ещё и так — заводил отдельную переменную под любые промежуточные вычисления и носился с ней, как со списанной торбой.

                                      А потом однажды забывал, что где-то её не переназначил, и начиналось веселье.
                                      +1
                                      Превосходно, написать игру в 7 классе это здорово! Мое уважение
                                        +3
                                        Ох, круто…

                                        Если позволите — оффтоп, не относящийся к программированию.
                                        У меня в школе компьютера не было, поэтому я делал футбольный симулятор в виде настольной игры (sic!)
                                        Поле представляло собой три склеенных А4 с нарисованными шестигранниками (допускаю, что увидел поле в Героях 3, уже не помню). У игроков были скиллы — Скорость, Удар, Владение мячом и Выносливость), которые прокачивались с количеством матчей.
                                        А шансы на удачный дриблинг, перехват или удар по воротам определялись по разнице в скилах и паре из обычного и трехгранного кубиков (уже не помню точных формул для расчетов).

                                        Я «нагерерил» (бросками кубиков) штук 50 клубов, в каждом было наверное 12 игроков (на поле в матче было 6), и сыграл наверное 3 или 4 сезона — это были чемпионаты Англии, Испани, Италии, Франции, Германии и Украины (в каждой лиге 6 команд) и плюс были лиги смешанные для команд из Нидерландов, Турции, Португалии и т.д. Ну и конечно Лига Чемпионов. Трансферы тоже были, «деньги» клубы получали из призовых.

                                        Я играл в основном сам с собой, без друзей, т.е. за обе команды по очереди. Один сезон во всех лигах наверное игрался месяца два, не меньше… В тетрадку писались все результаты, авторы голов (для подсчета лучших бомбардиров), игрокам писались карандашом желтые карточки и количество сыгранных матчей (чтобы в конце сезона скилл поднять).

                                        Потом всё забросил, а через года 3 появился компьютер. После переездов все тетрадки, поле и вырезанные квадратики игроков потерялись… А сколько еще нереализованного осталось — увеличение количества скилов, талант (влияющий на скорость прокачки), матчи сборных, кубки, вторая лига.
                                          +3
                                          У меня аж дух захватило, пока читал! Спасибо за историю!
                                          И, кажется, вам нужно срочно поговорить с milfgard :)
                                            0
                                            Ну, целый жанр таких игр есть. Мы готовы рассмотреть, но мода сейчас повернула в другое русло, и цикл повторится только года через три минимум.
                                              +1

                                              Я не претендую, если что :) Просто близка тема футбольных менеджеров, поэтому поделился воспоминаниями.
                                              А вообще, я в юности 3 игры сделал — одна была попыткой скопировать Star Craft, мы даже с одноклассниками пробовали поиграть. Но там не было баланса, и выигрывал всегда тот, кто первый делал ядерный взрыв (пешие юниты не добирались до противника).
                                              Две другие спортивные — баскетбол, впервые трехгранный кубик заюзал (правда тогда еще не знал таких слов). Там были тоже клубы, трансферы, евролига и т.д., но не было скилов игроков, все было на кубике.
                                              И вот только в третьей додумался до скилов (в терминах настолок — это как разные карты на руках) и их прокачки в зависимости от количества игр, тут уже были комбинации из трехгранного и шестигранного кубиков. Но там тоже куча орехов была — например некоторые игроки были имбовые, было несколько стратегий, позволявших чаще выигрывать. И это только то, до чего сам додумался — другие люди уверен нашли бы еще кучу несбалансированностей.
                                              В общем, как развлечение для человека с фантазией пойдет, но не как полноценная настолка.
                                              И еще, иногда задумываюсь, что мои действия очень напоминали ОКР — вместо занятия чем-то более продуктивным, уход в свой придуманный нарисованный мирок. Часто в ущерб сну или домашним заданиям. Не очень оно хорошо.

                                                0
                                                Ну, это офигенный навык. Потом надо сгонять на какую-нибудь выставку, увидеть кучу всего странного, понять, что вот ваши наработки внезапно с чем-то вступают в синергию и сделать хит. Я, пожалуй, выложу отчёт с одной из выставок по нашей игровой теме, возможно, будет полезен.
                                            +1
                                            Умиляет, нахожу в этом и себя )
                                              +1
                                              Это просто огонь!
                                              Вот это тяга, вот это креатив, машина чарлза бэбиджа отдыхает :)
                                              Пошел отключать ребенку интерент, хочешь играть — приудмай сам!
                                                +1

                                                Да, это именно оно — отсутствие компьютера и море свободного времени :)

                                                0
                                                Звучит так словно вы решили перенести всё это в программный продукт, а в будущем стали разработчиком Football Tactics :) Думаю, у ребят похожая история проекта была. А вообще жалко что родители нынешних детей редко поддерживают такие начинания, возможностей в разы больше
                                                +2
                                                Блин, походу у любого уважающего программиста есть свои недострои)

                                                Шёл далёкий 2014ый год. Я изучал JavaScript (гифка 2+ метра)
                                                И искренне верил что самописный игровой движок это не сложно
                                                image
                                                  +1
                                                  Это яблоки или помидоры?
                                                    +1
                                                    Помидоры)
                                                      0
                                                      Я проспорил сам себе :/
                                                      А расскажите подробнее, как делали? Неужели там суровая самописная физика?
                                                        +2
                                                        Ну никаких сторонних библиотек там нет (кроме jQuery на кой-то ляд). Просто около 800 строк кода вроде такого. Работало всё на canvas. Тогда я учился на первом курсе, и мне казалось это очень крутым)
                                                        Несколько скриншотов
                                                        image




                                                  +1
                                                  Тоже писал всякие игрули, подобные тем что у автора на Pascal и Delphi. Уфф ностальгия, исходники все потеряны с жесткими дисками (( облачных дисков не было тогда ((. Сейчас работаю 1С разработчиком, не так давно встретил начинающего разработчика 1С который хранил значения в цвете ячеек (ну не придумал больше где хранить), очень эффектно таблица выглядела, особенно когда значения менялись ))
                                                    0
                                                    Тоже писал похожие страшные игры на Дельфи, даже не имея понятия что такое ООП)

                                                    Вспомнил самый страшный код в геймдеве
                                                    Щи симулятор жестокости
                                                      +1
                                                      !medved_trup1_a_bezboshki_tex

                                                      Что-то на уровне pas_vniz, или даже выше!
                                                      0
                                                      Эх, ностальгия, спасибо за статью.
                                                      Вспомнил как играл в детстве в Actual Coach...)
                                                        +1
                                                        Огромное спасибо автору. Безумно интересная тема для меня. Может всезнающий all подскажет ссылки на ресурсы с подобной тематикой? Описание алгоритмов симуляции футбольных матчей, физика, примеры графических реализаций и так далее… Любые идеи этой тематики
                                                        +4
                                                        Все программисты-самоучки (я в том числе) прослезились, вспомнив молодость :)
                                                        Кстати, когда не было возможности достать дистрибутив VB, то на помощь приходил VBA из MS Office — вот за это им спасибо! А через меню современного office я так и не смог найти выход в VBA, спасает только alt-F11 :(
                                                          0
                                                          Да, в те времена с дистрибутивами офиса вообще как-то всё было полегче, чем со штуками для разработки :)
                                                            0
                                                            Сам начинал кодить примерно в вашем возрасте, и тоже выбор пал на VB6. Потому что именно диск с ним я смог купить. Или книгу, не помню, что уже было куплено первым. Но обзавевщись этими двумя, редкими на тот момент, артефактами, я принялся писать свой вариант симулятора «Жизнь» с блеэк-джеком зумом и «бесконечным» пространством. Эх, а уже 19 лет прошло с того времени.
                                                          +1
                                                          А вы не пытались в Valve пособеседоваться? У вас совершенно свежий взгляд, как называть игры.
                                                            +1

                                                            Когда-то тоже писал менеджер команды формулы-1 на встроенном в Спектрум Бейсике. Было даже графическое отображение гонки, не только текстовый режим. Помню, у гонщиков были свои параметры мастерства, у трасс — свои параметры сложности. Эх, было время :) Конечно же, те кассеты давно канули в Лету.

                                                              +1
                                                              В 2013 (мне тогда было 13) пытался делать свою стратегию а-ля Dune II (без рельефа, тумана и изменяемых клеток). Я тогда это делал на Java и Swing. Даже помню, из-за чего прекратил — тогда считал, что для каждой клетки и каждого спрайта обязательно нужно хранить свой экземпляр BufferedImage для отрисовки, программа всегда вылетала из-за нехватки памяти
                                                              Увы, все, что можно было бы восстановить сейчас — 2 спрайта танка, одинаковые и похожие на Sonic Tank артрейдесов, но в разных палитрах: красно-серый и черно-голубой
                                                                +1
                                                                Всплакнул. Недопиленная пошаговая
                                                                Дюна
                                                                .
                                                                image


                                                                Даже работает в вин10.
                                                                  0
                                                                  Меня особенно умилила иконка возле «перехода хода».
                                                                  Спасибо, что поделились!
                                                                0
                                                                Мы таким же макаром уже несколько лет пилим golaso.com :)
                                                                Правда, мы уже прошли стадию изучения мобильного геймдева и микротранзакций, так что надеемся, игра наконец-то увидит свет уже в 2019 :)
                                                                  +1
                                                                  Я тут что подумал — в наши школы нужно ставить не современные компьютеры, а специально втыкать экспонаты ушедшей эпохи. На которых можно «поиграть» в ассемблер — ну и хватит.
                                                                  Умнее будут.

                                                                  Когда-то, я написал интерактивный кроссворд на бекашке с использованием прямых обращений к памяти — peek/poke. И тогда моя работа в 10 классе улетела куда-то в район и я получил первые в своей жизни автоматы по информатике.
                                                                  При этом дома у меня тогда был нормальный п3, 256 гигов оперативки, виндовс 98 и 40 гб фуджик. А хотелось, понимаете, заставить железку генерить то, что её могли заставить генерить только дядьки из институтов.

                                                                  Понимать будущие программисты должны всё с самого низа. Недостаточно постичь очередной фреймворк.
                                                                    0
                                                                    Напомнило мне мои первые потуги в вэб-программировании на jQuery На первом курсе я делал календарь мероприятий, где распихивал мероприятия на календаре по координатам ячеек дней. Какая же это была боль, особенно задавать смещение и изменения размера элмента каждого мероприятия. Прям прошелся по всем «Важным моралям» в этой статье. Такой опыт уже не забыть)))

                                                                    Спасибо за такую хорошую статью.
                                                                      0
                                                                      Я бы послушал, как вы обрабатывали февраль в високосных годах.
                                                                      0
                                                                      Понастольгировал. Я с бейсиком игрался году в 98м — делали с однокласником point&click квест — на форму картику, прозрачные кнопки — области только прямоугольные.
                                                                      Да и вообще после покупки книжки по бейскику понаваял пачку програм себе.
                                                                      Жаль из тех времён ни чего не осталось.
                                                                        0
                                                                        позабавило присутствие Longhorn в списке поддерживаемых ОС, параллельно с комментом что на XP будет работать только при наличии какой-то там библиотеки — а для Longhorn получается библиотеки не требовалось ))
                                                                        и у вас действительно в 2005 году был жесткий диск всего на 2.3Гб? жестковато как-то, такие даже в 2000 уже были невообразимым старьем. как и сборники досовских игрушек с меню
                                                                          0
                                                                          и у вас действительно в 2005 году был жесткий диск всего на 2.3Гб? жестковато как-то, такие даже в 2000 уже были невообразимым старьем. как и сборники досовских игрушек с меню

                                                                          Как бы не так.
                                                                          Помнится, в 98 перешел на Cyrix 233 и первое время таскал за собой пару винтов 80+40 МЕГАбайт. Потом купил новый на 1.7
                                                                            0
                                                                            нет, ну я не спорю, что ими могли ещё пользоваться в 2000 году, но это не меняет того факта, что на то время они уже были весьма устаревшими
                                                                            но тут речь вообще про 2005!
                                                                            0
                                                                            О, столько разговоров было про тот Longhorn, но никто ничего толком не знал.
                                                                            А по поводу диска не знаю, среди моих друзей мало у кого встречались больше. Как правило, те люди ходили к знакомым с ещё большими дисками, выкачивали оттуда всё, до чего дотянутся, а потом я приходил к ним и так поддерживалась пищевая цепочка файлообмена.
                                                                              0
                                                                              нет, ну почему, вроде какие-то бета-версии Longhorn сливали (или, они «утекали»), можно предположить, что вы на них тестили
                                                                              +1
                                                                              Кстати да, присоединяюсь, уже в 2003-2004 годах у меня точно был венч под 40 гигов, хотя семья у меня была обычная, а значит такие диски были не из разряда крутых уже в те времена.
                                                                                0

                                                                                Подтверждаю, мой первый комп куплен был в 2003 году и он имел на борту винт на 40гб, 256мб оперативы и видео на 64мб.


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

                                                                              +1

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

                                                                                0
                                                                                Ох, как знакомо — и Visual Basic 6 в примерно те же годы, и полетевший винт, похоронивший под собой готовую первую версию стратегии реального времени, и «отвлечение» на разработку ОС в седьмом классе…
                                                                                  0
                                                                                  Спасибо за статью :) Как и многим присутствующим, мне очень знакомо то, о чём вы пишете, хотя у меня проекты-недоделки были гораздо проще :)

                                                                                  Возник вопрос по поводу вашей игры в версии от 2013 года. На гифке в матче ЦСКА и Волги во втором тайме мяч влетает сперва в одни ворота, а затем в другие, но голы почему-то засчитываются в пользу ЦСКА. Почему? :)
                                                                                    0
                                                                                    «Потому что сха-а-авают».

                                                                                    Не знаю, честно говоря, кажется там мяч вообще двигался отдельно от голозабивательной логики. Надо будет код посмотреть ещё раз :)
                                                                                    +2
                                                                                    А я мессенджер писал. Изобретал свой протокол поверх TCP, сообщения хранил в Paradox базе, но весь код был в обработчиках кликов по кнопкам. Button1_Click — и пошла простыня кода на пару сотен строчек. В мечтах было чуть ли не потеснить аську, даже название было Юраська.
                                                                                    Скриншот Юраськи
                                                                                    image
                                                                                      0
                                                                                      Я в 7ом классе писал «операционную систему» на QBASIC :)
                                                                                      По факту это была свалка всего что я тогда находил в возможностях языка методом тыкa или по самоучителям. Там была адресная книга, калькулятор, система настроек, текстовый / графический / аудио (!) редакторы. И даже нескучные обои! (Можно было свои картинки из графического редактора на фон ставить) Мышка не поддерживалась.
                                                                                      И все это в одном файле на несколько тысяч строк с кучей GOTО.
                                                                                        +1
                                                                                        Денис, вы? :)
                                                                                          0
                                                                                          Нет, я не Денис. Но передавайте ему мои поздравления что он такой не один, который операционную систему нa qbasic'e писал :)
                                                                                          0
                                                                                          И тут попадание — я писал на нем оконный менеджер. Было вполне неплохо — окна могли перекрываться, перетаскиваться, кнопки-editbox-checkbox-radiobutton-шрифты — все работало.
                                                                                          Но с модулями. А потом пошел ядро пилить на языке ассемблера под 32 бита… Многие идут параллельными тропами.
                                                                                            0
                                                                                            Это всё звучит очень-очень круто.
                                                                                            Жаль, не посмотреть.
                                                                                              0
                                                                                              О не, у меня все было куда проще :) Keyboard-only интерфейс и VGA 320х200 в лучшем случае.
                                                                                                0

                                                                                                хм… у нас в школе оконный менеджер был одной из задач. Писали на модуле2 )

                                                                                                  0
                                                                                                  Сама по себе эта задача — средней паршивости, но работа с графикой там подчас была непростой, начиная от реализации шрифтов и заканчивая отрисовками при перетаскивании, буферизацией и пр.
                                                                                              0

                                                                                              Монументальный труд :)
                                                                                              У меня не было такой настойчивости, видимо поэтому не стал программистом. Но один законченный продукт в школе все-таки сделал: русское лото на языке basic для zxspectrum. Отец собирал компьютер сам из деталей, доставшихся по большому блату. Когда я тайком попытался включить его первый раз, накосячил с подключением проводов самодельного блока питания и спалил чип. :)
                                                                                              Кассеты с кодом программы не сохранилось, помню только, что номера выпадавших "боченков" генереровались рэндомно и заполняли массив единичками для уже выпавших ранее индексов. Если единичка уже была установлена, то номер боченка все равно генерился рандомно. И так до тех пор, пока не выпадал незанятый индекс. Под конец игры ждать приходилось доооолго. :) но зато играли в такое лото с братьЯми и знакомыми. :)

                                                                                                0

                                                                                                Из документации и наставников была только копия инструкции к компьютеру со списком команд.
                                                                                                Не могу поставить автору знаки отличия, кармы маловато :-)

                                                                                                  0
                                                                                                  Теперь можете :)
                                                                                                  +1
                                                                                                  А я думал, это я в школе фигней страдал… Не, я пришел в ИТ примерно так же — захотелось писать игры. И да, такую фигню тоже когда-то делал. Хорошо, это прошло очень быстро — классе в восьмом я решил, что надо бы что-то действительно крутое делать. Старшие товарищи показали сети, юниксы, Си и ассемблер и пообещали взять в Фидо. Вообще, у меня классная компания была тогда… Написать какой-нибудь эксплойт и потестировать на школьной сетке было в порядке вещей. Ну или разослать решение для контрольной по информатике прямо в VNC менее шарящим одноклассникам… А когда таки подобрали пароли к админским учеткам… Ох, тяжело, наверное, с нами было…
                                                                                                    0
                                                                                                    Когда у меня появился VB6, мне было уже за 20, написал на нем красивое домино, в которое с удовольствием играла мама, а в 15 лет на БК-0010 в досе на бейсике писал симулятор текстовой онлайн трансляции матчей. Играли две команды, например в баскетбол, мы с другом поочередно произвольно нажимали энтер и в зависимости от времени нажатия(там кажется INPUT ставился внутрь цикла), команда забрасывала мяч в корзину -2очковый или 3х-очковый, или не забрасывала. И это было так захватывающе в том возрасте. После 4х лет, убитых на онлайн соревнования по Heroes 3, интерес к любым играм пропал, но автор напомнил эти милые детские воспоминания.
                                                                                                      +1
                                                                                                      Ох, хреново учиться делать игры по книжками, описывающим накидывание кнопочек на форму.

                                                                                                      Мне вспомнилось, как я в девятом классе делал космическую стрелялку на Дельфи. Понятно, что все спрайты лежали в отдельных Image и двигались изменением .Left и .Top. Но мало этого — лазерный луч, которым выполнялась стрельба, представлял собой Panel толщиной в несколько пикселей. При стрельбе у неё изменялись длина и координаты так, чтобы получилось уместиться между моим кораблем и кораблем противника. Вообще, сначала делал стрельбу летящими пулями, но запутался в куче таймеров (они, ясное дело, были все отдельными объектами, лежащими на форме, поэтому выбор из них следующего свободного был не очень изящен) и переделал всё на мгновенно поражающий цель лазер.
                                                                                                        0
                                                                                                        Виртуальным футболистам бы нейронную сеть небольшую в качестве искусственного интеллекта, и наблюдать за самообучением. Можно потом обмениваться футболистами, кто круче прокачает ))
                                                                                                        А нет такой готовой программы/игры? Наблюдать за развитием виртуальных существ живущих самим по себе? Не охота изобретать велосипед, если вдруг уже всё написано.
                                                                                                          +1
                                                                                                          вот чтобы прям такого как у вас — нет, но похожая концепция была в Black&White печально известного Питера Молинье: там в ходе игры надо было воспитывать и обучать собственного «питомца» (животное), утверждалось, что благодаря «алогритмам» каждый из питомцев будет уникальным, индвидуальным и т.п. уж не знаю, насколько это на самом деле правда и сделаны ли питомцы были реально на основе нейронной сети, а не просто на какой-нибудь имитации. но, если верно помню, ими можно было действительно обмениваться через интернет.
                                                                                                            +1
                                                                                                            +1

                                                                                                            Судя по всему — такое было у всех :) я конечно на много раньше этим занялся, году так в 98ом, и не игры меня приобщали, а разные утили для входящего в жизнь интернета…
                                                                                                            Но код и подход очень похожи :)
                                                                                                            Прям за живое статья задела. Респект.

                                                                                                              0
                                                                                                              Я поступил на инфобез, кажется, только из-за диска «всё, что нужно хакеру», который у меня появился примерно в то же время :) очень затягивало разбирать игры с первого диска утилитами со второго
                                                                                                              0
                                                                                                              Да, ностальгия. 2002 год, 8 класс, первый ПК Celeron 300A, Visual Basic 6, какие-то простейшие игры и приложения. На память сохранил установочный диск. Только что вставил, как и 16 лет назад все так же предлагает установить эти легендарные IDE прошлого.
                                                                                                              CD-ROM



                                                                                                                0
                                                                                                                Вдохновился и пошел делать симулятор квиддича
                                                                                                                  0

                                                                                                                  Покажите потом :)

                                                                                                                  +2
                                                                                                                  1998-й, 9-й класс, интернета нет, попался мне диск очередной, на котором помимо прочего был Delphi. Нарисовал кнопку, скопил денег и купил книгу, к книге прилагался диск, на котором, помимо прочего, подборка Delphi Magazine в pdf и компоненты, включая DelphiX (для работы с DX) с примерами кода.

                                                                                                                  И понеслась:

                                                                                                                  1) чат на DirectPlay для развлечения на уроках информатики с «администрированием» (путем отправки спец-сообщений обычным текстом), включающим в себя кучу ерунды наподобие изменения оформления окна другого пользователя или замену его ника с видимостью для всех и т.п.

                                                                                                                  2) рулетка на DirectX… работала, но до ума не довел: колесо почему-то представляло собой не что-то цельное, а отдельные спрайты с ячейками, они некоторое время работали нормально, а потом начинали «разлепляться» или, наоборот, накладываться. Причин не удалось выявить.

                                                                                                                  3) Без сторонних компонентов, моя гордость того времени (думаю, потому что каждое придуманное мной решение для нужной операции над String-ами ощущалось как серьезное открытие) — программа для шифрования текста по алгоритму, который в то же время вычитал в журнале Reader's Digest. Кода, к сожалению не осталось, а хотелось бы сейчас посмотреть, почему же она работала так медленно (10-20 строк в секунду шифровала, что было видно, так как они по одной добавлялись в один из двух TMemo).

                                                                                                                  Программистом не стал.
                                                                                                                    +2
                                                                                                                    просто огонь! спасибо, смешно и поучительно :-)
                                                                                                                    за readme.txt — отдельное спасибо
                                                                                                                      +1
                                                                                                                      Чтение ностальгических постов породило желание поделиться своими воспоминаниями. Хотя никакого подобно хардкора у меня не было совсем. Первый комп появился в 2003 году, на первом курсе. Это был Celeron 2,7 (или 2,3)ГГц, 512 Мб ОЗУ, 128 Мб GeForce какой-то, уже и не вспомнить. Странно, что увлечение играми как быстро нахлынуло, так же быстро и прошло. Помню, что проходил первую Мафию сутки напролет после первой успешно сданной сессии. И, вроде, еще первый FarCry. Точно был первый NFS Underground. Остальное не вспомнить, хотя точно что-то было еще.

                                                                                                                      А первый опыт осознанного программирования был на уроках информатики на Паскале и немного AutoLisp (встроенный язык AutoCAD), поскольку учился я на строительном факультете на специальности САПР. Понравилось, было интересно. В качестве дипломной работы была написана программка на Delphi 2007, которая на основе пользовательских данных строила массив грунта, рассчитывала координаты узлов конечных элементов после разбиения на сетку трехмерных конечных элементов а затем экспортировала это в виде текстового файла, размеченного на языке препроцессора Ansys с целью дальнейшего расчета уже в Ansys. Глобальной целью было нелинейное моделирование поведения грунтового массива состоящего из слоев разных пород под нагрузкой от основания здания. Жаль, тогда мне это казалось ничего не стоящими жалкими потугами и сохранением тех результатов я не озаботился.

                                                                                                                      После успешной защиты еще лет десять работал инженером-конструктором в строительстве, и лишь пару лет назад перебрался полностью в сферу разработки ПО. Перетрогав Php, Ruby on rails, Python в итоге погрузился в мир кровавого энтерпрайза на Java.
                                                                                                                        +3
                                                                                                                        Что самое печальное — читая все комментарии выше и вспоминая свои аналогичные эксперименты — я вспоминаю, как же здорово, весело, интересно было это делать. И насколько скучными бывают подчас нынешние повседневные задачи при профессиональном занятии программированием.
                                                                                                                          0
                                                                                                                          Любопытно, что у тех, кто в итоге настоящим программистом не стал (как я, например, не сложилось), нередко сохраняется представление о том, что программирование — это обязательно так же увлекательно и интересно, как это было в подростковые годы и в юности. Я лично до сих пор жалею, что не пошёл по пути программирования. Всё время к нему возвращаюсь, но уже в качестве одного из хобби, в котором я всё больше и больше отстаю и никак не могу нагнать.
                                                                                                                          –1
                                                                                                                          а текстуры кто рисовал? и на сколько ты продвинулся как программист за лет? насколько сложную задачу можешь решить? можешь написать мне например программку которая по значку будет вызывать код? а сделать из этого рабочий модуль? что бы не нужно было писать каждый раз для часто повторяемой процедуры?
                                                                                                                            +1
                                                                                                                            Спасибо что поделились минутками тепла и ламповости.
                                                                                                                            Откопал тут в архиве своём, живое, работает.
                                                                                                                            2003 год, офигеть.
                                                                                                                            Вот думаю тоже статью чтоль написать ламповую… Там тоже есть чего интересного олдскула, и сурцы сохранились, причём не самого позорного качества. ;)

                                                                                                                              0
                                                                                                                              У меня от этого скриншота голова закружилась %)
                                                                                                                                0
                                                                                                                                Из-за сложности переключить мозг на отгадывание такого? :) Есть такой эффект поначалу, но там есть фишка упрощающая жизнь — при зажатом Ctrl показывается бордер-рамка соседей клетки под мышой, и не только.

                                                                                                                                У меня ещё есть, правда уже 2006 и делался в боольшой спешке за несколько дней, включая карандашом-попиксель-арт в MS Paint для клеточек, флагов, мин и др.



                                                                                                                                Из-за плохой связности 6-плитки раскрыть поле в обычном стиле просто нереально для аналогичного обычному «эксперту» проценту мин. Но мало мин было не так интересно, и даже тогда сплошь и рядом часты были гадания.

                                                                                                                                Потому в хексапёре я сделал фичу, что штатная мина убивает не совсем, а 90% хп, и они со временем регенерируются. Не очень быстро. Так что открыть можно любое поле и вопрос в скорости.

                                                                                                                                И чтоб было более интересно, сделал три типа мин, обычные которых большинство, немного некондиционных, которые били чуть больше 50% хп, и изредка можно было наткнуться на бракованую, которая не взрывалась. :) Прекрасные времена и часы «тестирования».
                                                                                                                                  0
                                                                                                                                  Из-за сложности переключить мозг на отгадывание такого?


                                                                                                                                  так, вроде как, треугольный наоборот легче должен быть, т.к. соседних клеток меньше — меньше вариантов для перебора, нет?
                                                                                                                                    0
                                                                                                                                    Как и в квадратном сапёре, угловое касание в счёт. 12 соседей.
                                                                                                                                    Впрочем, повышенная связность с другой стороны и помогает, хотя слово «лёгкий» я бы точно не стал брать )

                                                                                                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                                                            Самое читаемое