Часто слышны разговоры о том, что раньше порог вхождения был ниже, а трава - зеленее.
In fact, I think it would be an interesting environment for beginning programmers to learn on. I started programming on an Apple II a long time ago, when you could just do an "hgr" and start drawing to the screen, which was rewarding. For years, I've had misgivings about people learning programming on Win32 (unix / X would be even worse), where it takes a lot of arcane crap just to get to the point of drawing something on the screen and responding to input. I assume most beginners wind up with a lot of block copied code that they don't really understand.
Знакомая атмосфера. Исходный код pong на gw-basic вполне умещался на экран (25 строк).
Мысль о, том что игру (законченную в смысле основного геймплея) можно сделать с за вечер и силами экрана кода - считаю ценной.
Pong мне кажется удачным примером, т. к. сам геймплей для видеоигры реального времени - близок к теоретическому (нижнему) пределу. Как частное следствие - замеряется почти вчистую оверхед инициализации.
В этой теме всем желающим предлагается написать минималистичный pong. Язык и инфраструктура (API/фреймворк/т. д.) - по вкусу.
Конкретный вид pong - по вкусу.
Ожидается, что совсем в IOCCC вы ударяться не будете, т. е. код - хоть сколько-то похожий на тот, что встречается в жизни.
Ориентировки: если уложитесь в 100 строк кода - хорошо. Если напишете за час - тоже хорошо.
Я начинаю.
gw-basic, 18 строк:
Скорость - рассчитана на DosBox, Cpu Speed: 3000 cycles.
C++ & WinAPI, 93 строки:
Собирается незатейливо:
g++ -mwindows main.cpp -o pong.exe
Размер бинарника: 36072 байта.
прочитал как Минималистичный phong, и чуть мозг себе не сломал, пытаясь его там найти:))
Ваши бы усилия да в мирное русло...
program ponggame; uses pong; begin pong.start; end.
5 строк :trollface:
FordPerfect
> Часто слышны разговоры о том, что раньше порог вхождения был ниже
Порог вхождения во что?
Игры на бейсике всегда были шлаковым отстоем, без классных спрайтов и попиксельного скроллинга.
С другой стороны не вижу особых проблем сейчас взять Visual Basic и поводить LineTo по канвасу...
wawe
> минималистичный понг 133 строки
а если всё это в одну строку записать?
Synthetic
Это невозможно. Необходимо как минимум три строки.
=A=L=X=
>Порог вхождения во что?
В частности в программирование игр.
>Игры на бейсике всегда были шлаковым отстоем, без классных спрайтов и попиксельного скроллинга.
>С другой стороны не вижу особых проблем сейчас взять Visual Basic и поводить LineTo по канвасу...
Уровень в данном контексте почти не важен. Тема во многом о том, что исходник не обязательно занимает мегабайты, и о том, качественная ли разница, или количественная.
О умении (и осмысленности) программистами лаконично кодить, если нет поводов для обратного. О том, что я видел игры с исходниками в 5 КБ и 500 КБ, но почти не видел - в 70 КБ.
И о возможности малыми усилиями сделать что-то на коленке и взаимодействовать с ним. И быстрой отдаче при обучении.
Не говоря уж о том, что для ценителей в бейсике есть вставки в машинном коде (USR/CALL).
Бейсик был как пример - 2 строки инициализации, 16 строк собственно игры. И с ним как раз более-менее понятно.
Что со старым (gw-basic), что с новым (Visual Basic).
Мне интересно, чему равна аддитивная константа для других платформ?
Java? Python? Lua (LÖVE?)? D? Go? Unity (серьёзно интересно)? UE4 (а чё?)?
На HTML5/javascript представляю (константа маленькая).
Выше примеры на C++/WinAPI и C++/ncurses показывают, что даже в C++ не настолько плохи дела (правду сказать, здесь скорее о константе, а не о пороге вхождения, по крайней мере о WinAPI).
FordPerfect
> C++ & WinAPI, 93 строки:
> + Показать
>
> Собирается незатейливо:
> g++ -mwindows main.cpp -o pong.exe
У меня не собирается. Из-за вот этого: StretchDIBits();
ЗЫ: gdi32 линковать надо.
ruby, gosu, реализация в лоб на основе туториала, примерно полчаса заняла.
На экран не влезает, 56 строк. Ну если заморочиться можно впихнуть, но будет нечитаемо. Вообще 63 строки, константы тоже не стоило упаковывать.
FordPerfect
> Выше примеры на C++/WinAPI и C++/ncurses показывают, что даже в C++ не
> настолько плохи дела
Не, в WinAPI и C++ игровые дела как раз плохи. Чтобы сделать даже пасьянс без мерцания карт, в WinAPI надо урыться с головой.
Но тут очень разные вещи сравниваются.
Даже какой нибудь SDL может быть и требует больше времени для изучения, чем какой нибудь LaserBasic (это с поддержкой спрайтов), но он же и может в десятки раз намного более интересные вещи...
А редакторы, а утилиты и тулчейны? Это же всё тоже очень важно. И сейчас дела в сотни раз более интереснее обстоят.
В целом я бы так сказал:
Много лет назад требовалось гораздо меньше человекочасов, чтобы сделать то, что тогда считалось бы игрой определенного уровня.
Но сейчас такие игры никому не интересны, уровень подобного интереса представляет заметно больше человекочасов.
programina
Версия компилятора?
У меня g++ (tdm-1) 4.9.2 дословно этой строкой компилирует и собирает, видимо считая, что -mwindows подразумевает gdi32 (или ещё чего); но да - небрежность с моей стороны.
Тема в архиве.