Comments 120
Читать учебники в интернете это читерство, я буду всё изучать методом тыка
За эту цитату отдельное спасибо, это прекрасно
А сейчас метод тыка — не такой уж и «тык».
Иногда хочется что-нибудь сделать, для тренировки своих скиллов, но как начнешь думать, что ведь там надо реализовывать, например, сохранение игры, а это означает парсер файла и 100500 возможных проблем, которые надо предусмотреть. И это только одна маленькая фича из всей игры.
Не помню как с остальным, но RFPL 2 была написана, кажется, за неделю, и еще пару недель я её тестировал и допиливал. В таком режиме не разделяешь фичи на мелкие и не очень, а просто делаешь всё по заранее заготовленному плану.
Спрашиваю, потому что много раз слышал от своих студентов-питонистов возмущения по поводу рисования GUI в лабораторных.
В геймдеве впрочем это еще часто усложняется тем, что далеко не все игровые движки имеют внутри себя хорошие гуи-библиотеки. Как я в свое время с LWJGL и nifty-gui настрадался.
Весь девятый и десятый класс мы с моим одноклассником были заняты написанием симулятора операционной системыпарни вы крутые, реально!
Грепать я тогда не умел, парсить страницы — тоже, а про xml и csv знал очень обрывочно. Поэтому техническое решение было очень странным:это все фигня. Дорогу осилит идущий, главное что задача была решена и решена за обозримое время. Не надо все знать, надо просто иметь мозги чтобы уметь находить/придумывать решение проблемы. Если бы вам надо было обработать 1000 страниц, я уверен, что вы бы дошли до парсинга.
Спасибо! Всегда интересно читать про свой опыт, про подходы, ошибки и эволюцию. В последнее время слишком много всяких консультантов, которые учат работать по аджайл, обскрамившись, натягивая канбан по книжкам.
Удачи вам!
Вот из тех времен, когда осваивал HTML5 в далеком 2011:
Оффтоп. Там под спойлером "Футбол 4х4" метко так команды названы)
Статья унесла в детство. Я в таком же хардкод-стиле когда-то в восьмом классе писал «Монополию». У меня там фишки по полю двигались смещением координат. А границы поля определялись условиями. И всё это на Visual Basic 6. Восемнадцать лет назад. Всё погибло лет пятнадцать назад вместе с жёстким диском.
Классная статья, спасибо!
Я, помнится, в 10-11 классе писал препроцессор для языка JASS (который был в World Editor'e WarCraft 3). Начинал с Delphi, потом перелез на C#. Код выложил на гитхаб, недавно откопал мануал, который писал для него. Код, конечно, то еще поделие, но вот эта ностальгия при его просмотре… Всю статью на кончиках пальцев прочувствовал :)
Хех, у меня, по-моему, было ещё жёстче. Я был уверен, что лишние переменные сильно расходуют ресурсы. И когда мне нужна была временная переменная, я не объявлял её локально, а старался использовать глобально-доступное свойство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
соответственно… Ооо, вот тогда я почувствовал себя программистом.Если позволите — оффтоп, не относящийся к программированию.
У меня в школе компьютера не было, поэтому я делал футбольный симулятор в виде настольной игры (sic!)
Поле представляло собой три склеенных А4 с нарисованными шестигранниками (допускаю, что увидел поле в Героях 3, уже не помню). У игроков были скиллы — Скорость, Удар, Владение мячом и Выносливость), которые прокачивались с количеством матчей.
А шансы на удачный дриблинг, перехват или удар по воротам определялись по разнице в скилах и паре из обычного и трехгранного кубиков (уже не помню точных формул для расчетов).
Я «нагерерил» (бросками кубиков) штук 50 клубов, в каждом было наверное 12 игроков (на поле в матче было 6), и сыграл наверное 3 или 4 сезона — это были чемпионаты Англии, Испани, Италии, Франции, Германии и Украины (в каждой лиге 6 команд) и плюс были лиги смешанные для команд из Нидерландов, Турции, Португалии и т.д. Ну и конечно Лига Чемпионов. Трансферы тоже были, «деньги» клубы получали из призовых.
Я играл в основном сам с собой, без друзей, т.е. за обе команды по очереди. Один сезон во всех лигах наверное игрался месяца два, не меньше… В тетрадку писались все результаты, авторы голов (для подсчета лучших бомбардиров), игрокам писались карандашом желтые карточки и количество сыгранных матчей (чтобы в конце сезона скилл поднять).
Потом всё забросил, а через года 3 появился компьютер. После переездов все тетрадки, поле и вырезанные квадратики игроков потерялись… А сколько еще нереализованного осталось — увеличение количества скилов, талант (влияющий на скорость прокачки), матчи сборных, кубки, вторая лига.
Я не претендую, если что :) Просто близка тема футбольных менеджеров, поэтому поделился воспоминаниями.
А вообще, я в юности 3 игры сделал — одна была попыткой скопировать Star Craft, мы даже с одноклассниками пробовали поиграть. Но там не было баланса, и выигрывал всегда тот, кто первый делал ядерный взрыв (пешие юниты не добирались до противника).
Две другие спортивные — баскетбол, впервые трехгранный кубик заюзал (правда тогда еще не знал таких слов). Там были тоже клубы, трансферы, евролига и т.д., но не было скилов игроков, все было на кубике.
И вот только в третьей додумался до скилов (в терминах настолок — это как разные карты на руках) и их прокачки в зависимости от количества игр, тут уже были комбинации из трехгранного и шестигранного кубиков. Но там тоже куча орехов была — например некоторые игроки были имбовые, было несколько стратегий, позволявших чаще выигрывать. И это только то, до чего сам додумался — другие люди уверен нашли бы еще кучу несбалансированностей.
В общем, как развлечение для человека с фантазией пойдет, но не как полноценная настолка.
И еще, иногда задумываюсь, что мои действия очень напоминали ОКР — вместо занятия чем-то более продуктивным, уход в свой придуманный нарисованный мирок. Часто в ущерб сну или домашним заданиям. Не очень оно хорошо.
Вот это тяга, вот это креатив, машина чарлза бэбиджа отдыхает :)
Пошел отключать ребенку интерент, хочешь играть — приудмай сам!
Вспомнил самый страшный код в геймдеве
Щи симулятор жестокости
Вспомнил как играл в детстве в Actual Coach...)
Generating emergent team strategies in football simulation videogames via genetic algorithms.
Issues in Soccer Simulation Software Development.
Ищите, в общем, по ключевикам — AI, simulation, soccer strategy, videogames.
Ну и ещё есть RoboCup ru.wikipedia.org/wiki/RoboCup. Здесь я только матчи смотрел.
Кстати, когда не было возможности достать дистрибутив VB, то на помощь приходил VBA из MS Office — вот за это им спасибо! А через меню современного office я так и не смог найти выход в VBA, спасает только alt-F11 :(
Когда-то тоже писал менеджер команды формулы-1 на встроенном в Спектрум Бейсике. Было даже графическое отображение гонки, не только текстовый режим. Помню, у гонщиков были свои параметры мастерства, у трасс — свои параметры сложности. Эх, было время :) Конечно же, те кассеты давно канули в Лету.
Увы, все, что можно было бы восстановить сейчас — 2 спрайта танка, одинаковые и похожие на Sonic Tank артрейдесов, но в разных палитрах: красно-серый и черно-голубой
Правда, мы уже прошли стадию изучения мобильного геймдева и микротранзакций, так что надеемся, игра наконец-то увидит свет уже в 2019 :)
Умнее будут.
Когда-то, я написал интерактивный кроссворд на бекашке с использованием прямых обращений к памяти — peek/poke. И тогда моя работа в 10 классе улетела куда-то в район и я получил первые в своей жизни автоматы по информатике.
При этом дома у меня тогда был нормальный п3, 256 гигов оперативки, виндовс 98 и 40 гб фуджик. А хотелось, понимаете, заставить железку генерить то, что её могли заставить генерить только дядьки из институтов.
Понимать будущие программисты должны всё с самого низа. Недостаточно постичь очередной фреймворк.
Спасибо за такую хорошую статью.
Да и вообще после покупки книжки по бейскику понаваял пачку програм себе.
Жаль из тех времён ни чего не осталось.
и у вас действительно в 2005 году был жесткий диск всего на 2.3Гб? жестковато как-то, такие даже в 2000 уже были невообразимым старьем. как и сборники досовских игрушек с меню
и у вас действительно в 2005 году был жесткий диск всего на 2.3Гб? жестковато как-то, такие даже в 2000 уже были невообразимым старьем. как и сборники досовских игрушек с меню
Как бы не так.
Помнится, в 98 перешел на Cyrix 233 и первое время таскал за собой пару винтов 80+40 МЕГАбайт. Потом купил новый на 1.7
А по поводу диска не знаю, среди моих друзей мало у кого встречались больше. Как правило, те люди ходили к знакомым с ещё большими дисками, выкачивали оттуда всё, до чего дотянутся, а потом я приходил к ним и так поддерживалась пищевая цепочка файлообмена.
Подтверждаю, мой первый комп куплен был в 2003 году и он имел на борту винт на 40гб, 256мб оперативы и видео на 64мб.
Я тоже из небогатой семьи и жил в провинции, т.е. подобная конфигурация была не из ряда вон (хотя и достаточно дорого). Думаю весь комп с монитором 17" обошелся в районе $1000, в кредит. Первый мобильный для сравнения у меня появился в 2005.
Да, у каждого есть свои наброски, попытки сделать что-то без навыков. Спасибо за статью, пробрало до глубины души, потому что все это, хоть и в меньшей степени и в другом виде, тоже проходил...
Возник вопрос по поводу вашей игры в версии от 2013 года. На гифке в матче ЦСКА и Волги во втором тайме мяч влетает сперва в одни ворота, а затем в другие, но голы почему-то засчитываются в пользу ЦСКА. Почему? :)
По факту это была свалка всего что я тогда находил в возможностях языка методом тыкa или по самоучителям. Там была адресная книга, калькулятор, система настроек, текстовый / графический / аудио (!) редакторы. И даже нескучные обои! (Можно было свои картинки из графического редактора на фон ставить) Мышка не поддерживалась.
И все это в одном файле на несколько тысяч строк с кучей GOTО.
Но с модулями. А потом пошел ядро пилить на языке ассемблера под 32 бита… Многие идут параллельными тропами.
Жаль, не посмотреть.
хм… у нас в школе оконный менеджер был одной из задач. Писали на модуле2 )
Монументальный труд :)
У меня не было такой настойчивости, видимо поэтому не стал программистом. Но один законченный продукт в школе все-таки сделал: русское лото на языке basic для zxspectrum. Отец собирал компьютер сам из деталей, доставшихся по большому блату. Когда я тайком попытался включить его первый раз, накосячил с подключением проводов самодельного блока питания и спалил чип. :)
Кассеты с кодом программы не сохранилось, помню только, что номера выпадавших "боченков" генереровались рэндомно и заполняли массив единичками для уже выпавших ранее индексов. Если единичка уже была установлена, то номер боченка все равно генерился рандомно. И так до тех пор, пока не выпадал незанятый индекс. Под конец игры ждать приходилось доооолго. :) но зато играли в такое лото с братьЯми и знакомыми. :)
Из документации и наставников была только копия инструкции к компьютеру со списком команд.
Не могу поставить автору знаки отличия, кармы маловато :-)
Мне вспомнилось, как я в девятом классе делал космическую стрелялку на Дельфи. Понятно, что все спрайты лежали в отдельных Image и двигались изменением .Left и .Top. Но мало этого — лазерный луч, которым выполнялась стрельба, представлял собой Panel толщиной в несколько пикселей. При стрельбе у неё изменялись длина и координаты так, чтобы получилось уместиться между моим кораблем и кораблем противника. Вообще, сначала делал стрельбу летящими пулями, но запутался в куче таймеров (они, ясное дело, были все отдельными объектами, лежащими на форме, поэтому выбор из них следующего свободного был не очень изящен) и переделал всё на мгновенно поражающий цель лазер.
А нет такой готовой программы/игры? Наблюдать за развитием виртуальных существ живущих самим по себе? Не охота изобретать велосипед, если вдруг уже всё написано.
Судя по всему — такое было у всех :) я конечно на много раньше этим занялся, году так в 98ом, и не игры меня приобщали, а разные утили для входящего в жизнь интернета…
Но код и подход очень похожи :)
Прям за живое статья задела. Респект.
И понеслась:
1) чат на DirectPlay для развлечения на уроках информатики с «администрированием» (путем отправки спец-сообщений обычным текстом), включающим в себя кучу ерунды наподобие изменения оформления окна другого пользователя или замену его ника с видимостью для всех и т.п.
2) рулетка на DirectX… работала, но до ума не довел: колесо почему-то представляло собой не что-то цельное, а отдельные спрайты с ячейками, они некоторое время работали нормально, а потом начинали «разлепляться» или, наоборот, накладываться. Причин не удалось выявить.
3) Без сторонних компонентов, моя гордость того времени (думаю, потому что каждое придуманное мной решение для нужной операции над String-ами ощущалось как серьезное открытие) — программа для шифрования текста по алгоритму, который в то же время вычитал в журнале Reader's Digest. Кода, к сожалению не осталось, а хотелось бы сейчас посмотреть, почему же она работала так медленно (10-20 строк в секунду шифровала, что было видно, так как они по одной добавлялись в один из двух TMemo).
Программистом не стал.
за readme.txt — отдельное спасибо
А первый опыт осознанного программирования был на уроках информатики на Паскале и немного AutoLisp (встроенный язык AutoCAD), поскольку учился я на строительном факультете на специальности САПР. Понравилось, было интересно. В качестве дипломной работы была написана программка на Delphi 2007, которая на основе пользовательских данных строила массив грунта, рассчитывала координаты узлов конечных элементов после разбиения на сетку трехмерных конечных элементов а затем экспортировала это в виде текстового файла, размеченного на языке препроцессора Ansys с целью дальнейшего расчета уже в Ansys. Глобальной целью было нелинейное моделирование поведения грунтового массива состоящего из слоев разных пород под нагрузкой от основания здания. Жаль, тогда мне это казалось ничего не стоящими жалкими потугами и сохранением тех результатов я не озаботился.
После успешной защиты еще лет десять работал инженером-конструктором в строительстве, и лишь пару лет назад перебрался полностью в сферу разработки ПО. Перетрогав Php, Ruby on rails, Python в итоге погрузился в мир кровавого энтерпрайза на Java.
Откопал тут в архиве своём, живое, работает.
2003 год, офигеть.
Вот думаю тоже статью чтоль написать ламповую… Там тоже есть чего интересного олдскула, и сурцы сохранились, причём не самого позорного качества. ;)
У меня ещё есть, правда уже 2006 и делался в боольшой спешке за несколько дней, включая карандашом-попиксель-арт в MS Paint для клеточек, флагов, мин и др.
Из-за плохой связности 6-плитки раскрыть поле в обычном стиле просто нереально для аналогичного обычному «эксперту» проценту мин. Но мало мин было не так интересно, и даже тогда сплошь и рядом часты были гадания.
Потому в хексапёре я сделал фичу, что штатная мина убивает не совсем, а 90% хп, и они со временем регенерируются. Не очень быстро. Так что открыть можно любое поле и вопрос в скорости.
И чтоб было более интересно, сделал три типа мин, обычные которых большинство, немного некондиционных, которые били чуть больше 50% хп, и изредка можно было наткнуться на бракованую, которая не взрывалась. :) Прекрасные времена и часы «тестирования».
Из-за сложности переключить мозг на отгадывание такого?
так, вроде как, треугольный наоборот легче должен быть, т.к. соседних клеток меньше — меньше вариантов для перебора, нет?
Как я 13 лет делал футбольный симулятор