Gamedev Антон Самитов
10 286

Автор Braid и The Witness планирует начать бета-тест собственного языка программирования до конца 2018 года

Он создаёт на нём как минимум две собственных игры.

В закладки

По словам геймдизайнера Джонатана Блоу, один из главных факторов, сдерживающих развитие игровой индустрии — это распространённость C++, языка программирования, который зародился ещё в 1970-х.

Создатель Braid и The Witness уверен, что его экосистема необоснованно сложна, и с годами становилась всё труднее для понимания, пока его создатели пытались найти решение разных задач.

Поэтому в 2014 году разработчик начал работу над заменой «поистине ужасного» C++ под названием JAI. Его цель — упростить устройство языка, повысить эффективность и «облегчить жизнь» программистам.

Люди почему-то уверены, что язык программирования обязательно должен быть некой очень сложной системой. Но мне не хочется знакомиться с экосистемой языка в течение года — я просто хочу перенести туда 3D-графику. […]

Многие из нас, программистов, — несчастные люди, а ведь так быть не должно.

Джонатан Блоу
геймдизайнер, программист

Блоу утверждает, что на данный момент с помощью JAI ему удалось увеличить продуктивность на 15%. Со временем он хочет довести этот показатель до 50 или даже 80 процентов, избавившись от необходимости постоянно «совершать ненужную работу».

Разработчик признаёт, что C++ — очень мощный инструмент, иначе бы его не использовали повсеместно. Но за долгие годы многие слишком свыклись с недостатками языка.

Вокруг подобных вещей сформировалось очень сильное предубеждение, иллюзия «статуса кво». Мы создаём игры определённым образом. Люди придумали множество новых языков программирования, но мы ими не пользуемся.

У компаний есть огромные игровые движки, менять которые слишком дорого. Я слышал пару лет назад, что игра вроде Assassin's Creed состоит из десяти миллионов строк исходного кода. Сейчас, наверное, и того больше.

Джонатан Блоу
геймдизайнер, программист

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

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

Прежде всего, я стараюсь всё упрощать. Но даже когда я начинаю вводить более сложные вещи, необходимые для работы, я каждый раз задумываюсь: «Какая именно от этого польза?»

Мы постоянно думаем о том, насколько наши игры просты в понимании для пользователей. «Как они поймут, что происходит, когда зайдут в эту комнату? Как мы можем помочь им разобраться в этом?» […]

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

Джонатан Блоу
геймдизайнер, программист

Разработчик надеется, что JAI будет достаточно мощным, чтобы на нём могли работать над AAA-играми, но в настоящее время он работает над двумя проектами, один из которых будет «промежуточным шагом» в этом направлении.

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

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

Закрытое бета-тестирование JAI собираются начать до конца 2018 года

#технологии

{ "author_name": "Антон Самитов", "author_type": "editor", "tags": ["\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438"], "comments": 234, "likes": 136, "favorites": 36, "is_advertisement": false, "subsite_label": "gamedev", "id": 22648, "is_wide": false }
{ "id": 22648, "author_id": 24538, "diff_limit": 1000, "urls": {"diff":"\/comments\/22648\/get","add":"\/comments\/22648\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/22648"}, "attach_limit": 2, "max_comment_text_length": 5000 }

234 комментария 234 комм.

Популярные

По порядку

Написать комментарий...

Lemony Ruy

Dmitriy
21

Вот тут как раз картинка не работает. Блоу не "универсальный" язык делает, а для узкого круга задач - для геймдева.

Ответить

Сергей Клабуков

Lemony
8

Он делает универсальный язык для геймдева))

Ответить

Kondr1

Сергей
2

Вот здесь утверждается, что это будет язык общего применения.

Ответить

Александр Соколенко

Lemony
3

А какие уникальные фичи ожидаются в JAI "для геймдева"?

Ответить

FinlandCoder FinlandCoder

Lemony
–1

По меркам геимдева - Блоу не сделал ничего. То есть он мог все свои игры делать и на Java. Ничего не поменялось бы.
Самое дорогое в геимдеве :
вызовы GPU
вызовы Lua-С-Lua-С
криворукие дизайнеры

Как он будет это решать? Похоже, что он сделал очередной D. Не более.

Ответить

Andrew Vasilyev

FinlandCoder
5

Наверное все же стоит почитать что именно он сделал и почему.

Ответить

Sergey Ryabenko

Dmitriy
–6

Вы хоть понимаете разницу между стандартом и опцией? Никто не заставляет вас пользоваться всеми языками, достаточно выбрать один. При этом в некоторых случаях продукты написанные на разных языках можно будет использовать совместно.

Ответить

Andrew Vasilyev

34

Вот тут много подробностей - https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md
И, да, Блоу очень умный и адекватный.

Ответить

Antony Sumin

Andrew
5

Почитал: действительно, весьма адекватный и ориентированный на результат (ускорение написания кода и улучшение производительности кода) язык. Весьма актуально в эпоху мультиплатформ, когда код надо оптимизировать под разные устройства. А тут сразу будет производительность "из коробки", тем более, что акцент на прямом управлении памятью.

Ответить

Сергей Зарницкий

32

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

Ответить

Donovan

Сергей
–43

Ещё один язык программирования, ага, умный и адекватный, ага :)...

Ответить

Сергей Зарницкий

Donovan
40

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

Так можно эскалировать и вешать ярлыки неадекватности на студии, которые пишут собственные движки по сей день, а не довольствуются Unity / Unreal.

Ответить

Donovan

Сергей
2

Он крутой и очень продуктивный мужик, очень сильный технический специалист и геймдизайн у него на высоте (Braid одна из любимых игр). Но его подход... Уже пройден миллион раз, миллон DSL вокруг C++ и движков, он пытается просто заимлементить свое видение (слава богу благодаря LLVM языки можно плодить очень просто), но позиционирует это как будто он боженька всемогущий. Я верю, что с его опытом и его ресурсами (он уже заработал себе на жизнь) можно попробовать дать толчок в каком-то направлении, в худшем случае снова написать движок под себя, ничего плохого в этом нету. Но не надо себя вести как мессия и открывать всем глаза.

Ответить

Max Yankov

Donovan
9

Но не надо себя вести как мессия и открывать всем глаза.

Может, вы бы видео посмотрели, где он рассказывает о своей затее, прежде чем комментарии писать? Ну или приведите конкретные примеры, как он "ведёт себя, как мессия" - я очень удивлюсь, если у вас получится.

Ответить

glimpse unthinkable

Donovan
3

Открывать глаза на то, что в плюсах гора костылей, хаков и просто идиотских решений? Это вроде и так все знают.

Ответить

Donovan

glimpse
1

В том то и дело, что все знают и тут появляется Блоу и говорит, что он все изменит (про свой JAI он еще во время разработки Witness говорил). Просто для него игры это жизнь, он хочет делать из них культурное наследие, он ругает фермы и ммо, но правда в том, что мы не все мы сильные и мотивированные личности как Блоу, а геймдевелоперам нужен просто стабильный инструмент не зависящий от рук гениев и экспериментаторов, поэтому и С++ прижился в совокупности с производительностью и возможностями нативно взаимодействовать с любыми платформами. А игрокам нужны и фермы и кликеры, и пыщ-пыщ кинцо с предсказуемым геймплеем. Короче, он человек, который нагнул Валвов (которые не хотели продавать брейд) и в целом индустрию, он показал каким может быть инди, но это не значит, что индустрия ждет перемен, которые хочет Блоу.

Ответить

glimpse unthinkable

Donovan
2

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

Ответить

Donovan

glimpse
0

Так никто и не говорит, что это идеальный вариант для геймдева, шок, но C++ вообще не идеальный, как и любое другое популярное решение вынужденное быть в каком-то роде универсальным в которое вложены миллионы часов инжереного труда, изменений и стандартизаций, но лучше ничего нету (и пока не предвидится). Да и не бывает так, что игра пишется прямо вот на С++ и всё. Если мы говорим про любой ААА проект, те кто не должны увидеть С++ его не увидят, всегда будет уровень абстракции, а то и несколько.

Ответить

FinlandCoder FinlandCoder

Donovan
–8

Он крутой и очень продуктивный мужик, очень сильный технический специалист и геймдизайн у него на высоте

Но его игры полный шлак. Там вообще ничего нет... Вы видимо очень недалекий и забитый человек, мне вас жаль.

Ответить

Donovan

FinlandCoder
10

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

Ответить

Alex Dorg

Сергей
–34

Зачем что-то придумывать, если уже есть Юнити и Unreal...

Ответить

Денис Файзулин

Alex
14

Ты бы это сказал ребятам из Юнити 10 лет назад. Пацаны харе херней страдать, есть Анриловский движок все остальное нифиг не нужно.

Ответить

Donovan

Денис
5

Как раз таки юнити выстрелило на том, что предлагал бесплатную лицензию для начала + подъем инди + простые языки типа UnityScript(EcmaScript по сути, что упростило переход ребят с флеша)/C# + смерть флеша и подъем мобилок. Анреал тогда не мог предложить ничего из этого.

Ответить

Денис Файзулин

Donovan
0

анрилу этого и не надо было. он сидел с крупными студиями и предлагал им софт по очень жирным ценам.

Ответить

YamiE

Денис
0

А потом они чуть не проебали рынок, когда эти студии начали массово сбегать с ue3 на другие движки, например на id Tech. Но ход конём с опенсорсом и открытостью получения лицензии вроде выправил ситуацию.

Ответить

Денис Файзулин

YamiE
0

а потом они сделали Фортнайт

Ответить

glimpse unthinkable

Alex
17

Зачем ты родился, когда уже есть я?

Ответить

Александр Лисовой

Alex
12

Зачем покупать какие-то ещё ножи, если есть швейцарский нож 15 в 1?

Ответить

zzokide

Alex
1

это не то что бы не одно и тоже... это вообще не одно и тоже.

Ответить

Алексей Горчичников

20

в 2014 году разработчик начал работу над заменой «поистине ужасного» C++...

Как у C++ программиста, у меня начался нервный тик. «Я смотрю на это и у меня огресия кокаята и зубы скрепят».

Ответить

Patrick

Алексей
18

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

Ответить

Валентин

Алексей
10

Чувак, C++ офигенный с точки зрения всеобъемлющести и скорости работы, но в остальном он монструознен (следствие первого плюса) и ужасен.
В большинстве случаев вместо поддержки кода на плюсах мне было легче и быстрее переписать все с нуля, благо программы были небольшие.

Ответить

Алексей Горчичников

Валентин
1

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

Ответить

Марат Сафин

Алексей
9

Вообще-то он делает язык который будет лучше c++ конкретно для геймдевелопмента. Никто ваш c++ в очередной раз убивать не собирается

Ответить

Алексей Горчичников

Марат
0

Посмотрим на бета-тест. Но скепсис мой никуда не денется до бета-теста. И я почему-то практически уверен, что этот язык будет очень сырой и большого спроса он не найдет, в конечном итоге Джонатан просто забьет на него. В то время, как тот же самый C++ уже привился и чувствует себя нормально. Если у него удасться, то я только похлопаю. Но все же... сомневаюсь.

Ответить

Antony Sumin

Алексей
2

Вы почитайте про назначение и особенности языка. Может и зубы сбережете и скепсиса поубавится :). Он же не для убийства с++ его разрабатывает, а чтобы взять из языка самое лучшее, а ненужное - отсечь, заточив язык под производительность. Если взлетит, то, имхо, как дополнение для Unity будет самое оно для разработчиков мультиплатформенных проектов.

Ответить

Patrick

Алексей
0

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

Ответить

Mind

Алексей
9

Господи, что же с тобой будет если кто-то упонянет Rust?

Ответить

Stanislav

Mind
0

А что такого ужасающего в Растике? о.о

Ответить

дедушка Ленин

Stanislav
6

F E A R L E S S C O N C U R R E N C Y
E
A
R
L
E
S
S

C
O
N
C
U
R
R
E
N
C
Y

Ответить

_ d00h

Stanislav
1

Концепция в языке мощная.
но от попробывать меня отпугивает perl стайл синтаксис.
разработчики языка зачем то экономят буковки.

Ответить

Марат Сафин

_
0

Где в расте буковки экономят? Разве что с макросом try!, который превратился в вопросительный знак

Ответить

Andrey Apanasik

Stanislav
1

Rust > C++

Ответить

Mind

Stanislav
0

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

Ответить

Солнечный олень

Mind
2

не плюсам, сишечке по сути и духу

Ответить

Andrey Apanasik

Алексей
6

Часто такое слышу от людей, которые не программировали на удобных языка.

Ответить

Сергей Гринёв

Andrey
–1

Тут был комментарий, который я заменил на фразу, которая ничего не значит, и за это я получаю минусы, довольно справедливо, спасибо всем

Ответить

Max Yankov

Алексей
0

У C++ есть отдельные вполне прекрасные подмножества-диалекты, но взятый целиком, это совершенно ужасный монстр. Кроме разработки игровых движков (именно движков, а не игр) и, пожалуй, операционных систем, я не знаю ни один тип продукта, где когнитивная нагрузка от C++ стоила бы свеч. Вся парадигма языка, который «может всё», от работы с «голой памятью» уровня C, до шаблонов, множественного наследования (при том, что наследование само по себе уже сомнительное достоинство) и замыканий, уже обрекает его на судьбу монстра Франкенштейна.

Ответить

Mind

Max
1

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

Ответить

Max Yankov

Mind
1

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

Ответить

Mind

Max
0

Чую дух Сишника. Вот где, точно ничего лишнего

Ответить

Max Yankov

Mind
1

Полно лишнего. UB по всем углам, идиотские строки, арифметика указателей - всегда предпочитал Pascal.

Ответить

Mind

Max
0

Ну, блин. Указатели то конечно эзотерическая дичь ( https://stefansf.de/post/pointers-are-more-abstract-than-you-might-expect/ ), но эта дичь позволяет творить некоторую магию, за что его ребята умеющие этот язык готовить и любят. А что такого идиотского в строках?

Ответить

Max Yankov

Mind
1

О, как раз на днях эту же статью на HN увидел. Да, про примерно такое поведение и речь.

А идиотизм строк в C в том, что их контракт очень легко случайно (или умышленно) не соблюсти. Мне кажется, чуть ли не большая часть низкоуровневых уязвимостей и багов, выловленных в последние лет тридцать, это следствие именно этих null-terminated строк и strcpy.

А ребята, которые любят магию, в 97% случаев маятся ненужной хуйнёй, которая только прибавляет технического долга. Тем более что в 80% они просто копируют эту ненужную хуйню со Stack Overflow. Очень простой тест: если вы не можете (без заглядывания в интернет) хотя бы примерно на пальцах объяснить, как работает fast inv square root (тот самый алгоритм быстрого взятия квадратного корня из quake), то вам не нужно заниматься магией на C.

Ответить

Mind

Max
0

ну это да. Врожденная проблема. Как и выход за пределы массива, например. Ну, это плата за возможность напрямую общаться с памятью. Не нравится - можно попробовать Rust.
P.S. даааааа. Этот легендарный код в Quake и это легендарное "//what the fuck?". Именно тогда я и понял что программирование это не что-то архи-сложное и им занимаются простые смертные люди

Ответить

Max Yankov

Mind
0

Врожденная проблема. Как и выход за пределы массива, например.

И тем не менее, в Pascal и то, и другое сделано нормально. Не идеально, конечно же (ограничение в 256 символов, серьёзно) - но уже намного лучше.

Ответить

Mind

Max
0

ну, молодцы ребята, которые работалю\работали над Pascal/Delphi. Но к сожалению, они почти померли. Видимо, своих недостатков, помимо того просто ступора в разработке, когда все языки шли вперед, а эти стояли на месте, в них не мало

Ответить

Max Yankov

Mind
0

Потому что автора Pascal и Delphi схантил Microsoft – после чего он сделал гениальные в своей практичности и «обычности» C# и Typescript.

Ответить

Andrey Apanasik

Mind
0

Если накосячить с замыканием, то мусор генерит и замедляет gc. Это если про тот же Unity3d говорить.

Ответить

Wilsom Sanders

Max
–10

Вообще где-то я слышал, что в разработке этих ваших движков участвует С, но никак не С++. А все потому, что С все-таки побыстрее.

Ответить

Max Yankov

Wilsom
3

Очень любопытно, что же конкретно вы имеете в виду под словами "побыстрее". Обычно при обсуждении разницы между C и C++ всплывают другие важные моменты, кроме производительности.

Ответить

njunkie

Wilsom
0

Неа, С больше для системного программирования юзается, там где необходимы прямое управление памятью. Ну а C++ юзается больше по традиции. Насколько знаю (глубоко не копал, читал скорее в описании платформы от кого-то), Sony сейчас все больше С#-подобный язык для платформы юзает

Ответить

_ d00h

Max
0

Какие диалекты? С++ вроде не lisp или вы о с-подобных языках?
Как то читал мнение, что несовершенство языка хорошо ложиться на особенности человечество мозга.
А с учетом zero cost абстракций в c++, чисто теоретически привнесение новых концепций для разработки не должно быть проблемой.

Ответить

Max Yankov

_
1

Я вроде специально уточнил выше, что говорю о подмножествах C++. В любой команде, использующей C++, есть собственный список фич, которые не используются на проекте по тем или иным причинам. Очень часто это исключения, практически всегда не используется GС, в зависимости от возраста проекта запрещается new/delete или, наоборот, более свежие функциональные дополнения, замыкания, и так далее...

В одной команде C++ по паттернам использования может быть очень похож на C with classes, в другой - быть современным функциональным языком. Два разных разработчика с "1-2 годами опыта с C++" могут по факту иметь опыт работы с совершенно разными, по сути, языками.

А с учетом zero cost абстракций в c++, чисто теоретически привнесение новых концепций для разработки не должно быть проблемой.

Огромная ошибка. Любая новая концепция - это когнитивная нагрузка. И в первую очередь не на того, кто пишет и "привносит": писать код всегда легко. А вот поддерживать чужой код, написанный человеком с собственными привычками и закидонами, когда он уже давно ушёл с проекта - вот тут уже все прелести новых концепций наконец раскрываются на полную.

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

Ответить

_ d00h

Max
0

В одной команде C++ по паттернам использования может быть очень похож на C with classes, в другой - быть современным функциональным языком. Два разных разработчика с "1-2 годами опыта с C++" могут по факту иметь опыт работы с совершенно разными, по сути, языками.

а в чем проблема? Это ж везде.
В csharp await, аспекты, yield, runtime generation
В javascript вообще много фрайворков.
В python 2 vs 3.
Приходя на новый проект ты всегда сталкиваешься с “новым” даже в старых областях.

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

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

Свобода “творчества” и так ограниченна интерфейсами и код ревью.

Иногда языковые красивости позволяют писать код короче и быстрее.

Ответить

Max Yankov

_
0

а в чем проблема? Это ж везде.

Это встречается в очень разных размерах. Как раз go это прекрасный пример противоложенной ситуации.

Проблема, в том что расплачиваться за усредненную низкую квалификацию разработчиков приходится пользователям и вообщем то не работает.

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

Иногда языковые красивости позволяют писать код короче и быстрее.

Это абсолютно верно, как я уже заметил выше. Но (как я тоже уже заметил выше) писать код - это меньшая часть работы программиста, и то, что оптимизирует её, очень часто негативно влияет на общую эффективность.

Ответить

Stanislav

Max
0

при том, что наследование само по себе уже сомнительное достоинство

Ну эй :(

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

Ответить

Max Yankov

Stanislav
0

"Наследование" от абстрактных классов и/или интерфейсов (тут все термины надо заключать в кавычки, потому что очень похожие вещи могут называться совершенно по-разному в разных языках) это нормально. А вот переопределение не-абстрактных методов это практически всегда бомба замедленного действия.

Ответить

Mind

Max
2

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

Ответить

Max Yankov

Mind
1

В том, в каком именно месте вызывается базовая версия метода, какая ответственность остаётся на базовом методе, а какая на переопределённом.

И вообще, по моим наблюдениям, стремление к максимальной универсальности - тоже один из признаков хорошего, но джуна. Очень часто в результате вижу "универсальные" методы, которые вызываются во всём проекте из 3-4 мест, с 3 параметрами, каждый из которых используется только для одного из вызовов, как и половина кода внутри.

Делать что-то действительно универсальным нужно только в тот момент, когда оно используется в проекте минимум 3 раза. И то, внимательно продумывать этот универсальный контракт и не городить монстра, который умеет всё.

Ответить

Mind

Max
1

вызывается та версия метода, которая определена в классе, экземпляо которого программист и использует.
Это что получается, дженерики - зло?

Ответить

Max Yankov

Mind
0

Как работает виртуальная таблица методов (на классе или объекте, в зависимости от типа наследования) я в курсе, спасибо. Речь о том, где именно и как в коде написать вызов base.MethodName() и как потом читать и понимать эту лапшу.

Ответить

Andrey Apanasik

Алексей
0

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

Ответить

Иван Ефимов

10

Ты короче пишешь игру на этом языке пару лет, потом как-то с отходишь от монитора за кофейком, смотришь на него из далека, а там:

Ответить

sancho pancho

Иван
2

А там javascript?

Ответить

Иван Ефимов

sancho
3

Отсылка к The Witness же, ну)

Ответить

Antony Sumin

Иван
4

Не играл, но то, что на скриншоте - осуждаю! :D

Ответить

Demian

sancho
1

В полночь весь твой код превратился в javascript xD

Ответить

Илюхер XXIII

6

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

Ответить

Patrick

Илюхер
26

Ты не поверишь, это реально работает. С++ появился точно так же, хотя был же C. А на момент выхода C был Фортран.
Так что повтори это в глаза C# (есть же Java), Python (есть же Perl), Swift (есть же такой замечательный и удобный Objective-C) и так далее.

Ответить

Stanislav

Patrick
2

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

Ответить

Patrick

Stanislav
14

Это что, аргумент не создавать что-то новое? Тогда и людям размножаться надо запретить, ведь не все в Леонардо да Винчи вырастают.
Только вот если не пробовать, то не понять, получается что-то хорошее сделать или нет.

Ответить

Stanislav

Patrick
0

Я просто к тому, что аргумент "каждый раз кто-то решает, что в мире наплодилось херни и вот именно он эту проблему решит, добавляя к херне в мире" не является бессмысленным и априори ложным :)

Ответить

ЖирныйМинус

Stanislav
0

Нет, но он пессимистичен и предвзят.

Ответить

Wilsom Sanders

Patrick
–6

С# не нужен, Java сделана для того чтобы было легко выгонять сотрудников и нагонять новых (т.е. ее славят топ. менеджеры), perl почему-то не смог заменить менее совершенный php, назвать objective-c удобным - расписаться в аутизме. На все ответил?

Ответить

Patrick

Wilsom
5

С# не нужен

Ничто не нужно, кроме подачи сигналов на шину АЛУ, и что теперь?
perl почему-то не смог заменить менее совершенный php

Причём тут перл к пыху? Я перл могу вообще под веб не юзать.
назвать objective-c удобным - расписаться в аутизме

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

Ответить

Илюхер XXIII

Patrick
0

А с чего ты взял, что в исходном комментарии я как-то сарказмирую или гиперболизирую?

Ответить

Patrick

Илюхер
1

Потому что хорошие языки выходят всё же не каждый год :) Хотя в прошлом вышел как минимум достойный внимания Kotlin.

Ответить

Илюхер XXIII

Patrick
0

так я и не про хорошие, а про любые

Ответить

Patrick

Илюхер
0

Мир, дружба, жвачка? :)

Ответить

njunkie

Patrick
–1

Вы путаете тёплое с мягким. В каждом из перечисленных вами языков (кроме Perl, пожалуй) есть возможность вызова 3D API или использования multimedia-функций сторонней библиотеки (к примеру OGL в SDL). Этого достаточно для написания игр на вашем любимом языке. Учить другой не нужно

Ответить

Patrick

njunkie
0

Не путаю.
Простого вызова 3D API не всегда достаточно. Это может быть закрытая платформа, под которую нет реализации компилятора-интерпретатора, это может быть фреймворк от разработчика железа, это может быть лизензируемый движок и так далее.

Да, можно под веб написать игру на C++, но это же будет чудовищное переизобретание велосипеда с созданием с нуля веб-сервера.

Ответить

njunkie

Patrick
0

Под Web давно есть WebGL, с биндингами на C#, nodejs, python, java (как javafx так и webgl4j). Снова же, этсамое, а новый язык-то зачем?

Закрытая платформа же просто не пустит новый язык на свою территорию. А вот абстракция 3D API как раз и есть тот интерфейс (способ) которым вы взаимодействуете с железными функциями 3D Акселератора. Следовательно биндингов для разных языков вполне достаточно, все равно глубже железки вы не копнете

Ответить

Patrick

njunkie
1

Ну так я же прямо в лоб ваш пример использую: вот я знаю C++ и мне надо написать игру под веб. Какие ваши предложения?

Ответить

Марат Сафин

Patrick
0

Webasm с webgl

Ответить

Patrick

Марат
1

Webasm

В данный момент находится на стадии разработки.

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

Ответить

Max Yankov

njunkie
0

По такой логике, языки высокого уровня вовсе не нужны, есть же ассемблер и C.

Ответить

njunkie

Max
0

По какой логике? Внимание, по словам, В КАЖДОМ из языков, перечисленных выше (кроме перла, потому что в случае перла папа не для того повесился,чтобы на нем катались), есть возможность вызова 3D API (OGL к примеру)инструментами самого языка (его классами, методами, переменными). Тойсть берете к примеру свой любимый пайтон, и юзаете его онли (пайтон, возможно не самый хороший пример, но даже он умеет в 3D). Зачем еще одна ненужная сущность, лично мне непонятно

Ответить

Max Yankov

njunkie
0

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

Вы всерьёз это, что ли?

Ответить

njunkie

Max
0

Да, я всерьез. Любого языка, умеющего оперировать 3D API железа (дальше вам лезть незачем, а многие, например nVidia, вам просто этого не позволят) хватает для написания игр. Даже С#. Отдельный язык для написания игр будет, всего лишь оберткой вокруг них (ну и других железных API, OpenCL или Physix. Такие дела.

Ответить

Max Yankov

njunkie
0

А почему вы вообще оперируете понятиями "хватает", "достаточно", "нужно" в этой дискуссии? Почему такой странный критерий? Если уже можно хоть как-то сделать, то улучшать это уже не нужно?

Ответить

njunkie

Max
–1

Потому что я - инженер и прекрасно понимаю как взаимодействуют между собой аппаратно-программные компоненты компьютерной системы,

Ответить

Max Yankov

njunkie
5

я - инженер и прекрасно понимаю

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

Основная вещь, которую я понял, работая инженером - что я ни хрена не понимаю. Что я всё время что-то путаю, забываю, туплю, торможу и ошибаюсь. И что одна из основных частей моей работы - это забота о собственной тупости и ограниченном мозге. Именно поэтому для меня основное достоинство инженерных систем - устойчивость к человеческим ошибкам, верификация на максимально ранней стадии, юзабилити и прочие факторы, которые создают для кожаного мешка яму успеха (https://blog.codinghorror.com/falling-into-the-pit-of-success/).

Но вы-то наверное "настоящий программист", как из комикса xkcd, да?

Ответить

njunkie

Max
–2

Нет, я думаю так потому что у меня инженерный подход к изучению вопроса, я его сначала изучаю, потом пишу комментарии. Исходя из полученной информации, а не с точки зрения - новый язык для игр? А почему бы и нет? Это же круто. Нет, не круто, если другие языки умеют то же самое с помощью своих же библиотек работы с 3D API(вы же помните что конечной точкой у нас есть 3D API, вмурованные в железо). И они есть почти для каждого популярного ЯП. Для некрутости есть куча предпосылок - начиная с экономической неэффективности, заканчивая сегментированностью платформ и реализации ненужной сущности в виде обертки вокруг функций 3D API

Ответить

Max Yankov

njunkie
1

Нет, не круто, если другие языки умеют то же самое с помощью своих же библиотек работы с 3D API

Почему вы постоянно упираетесь в 3d API? Вы действительно не понимаете, что между языками есть и другие отличия, кроме их "итога работы"?

Ответить

njunkie

Max
0

Я постоянно упираю на то, что уже есть куча библиотек вызова 3D функций в почти всех существующих языках (за исключением предметных, и специализированных типа ERLANG), так вот yet another language специально для чего-то там - колесопридумывание и велосипедостроение. И разработчик их придумывает просто обертку над 3D API, API просчета физики, плюс реализацию простых типов данных. В простом же случае уже готовые библиотеки для уже готовых языков, пишите. Деградации производительности разработчика и траты времени на изучение yet another непонятно чего в первом случае относительно немного (новые классы-методы-переменные) во втором - 6 месяцев+. Как вы думаете, что более удобно и менее затратно для индустрии? Как вы думаете, что более удобно разработчику с точки зрения производительности - изучать с нуля yet another язык программирования или писать код на чем ему удобно? Как вы думаете, согласится ли индустрия принять стандартом непонятно что, написанное интузиастом, при том что они найти консенсуса по поводу использования 3D API не могут? С точки зрения же инженерного подхода - классический принцип Оккама - не стоит плодить сущности без надобности. Потому очередной мертворожденный проект от фриковатого гика

Ответить

njunkie

Max
0

Да, JFYI я понимаю разницу между разными ЯП. Но вот ярчайшим примером изобретения такого вот велосипеда, могу привести Cuda и диалект C в SDK для него, который никто не юзает. Все юзают или библиотеки для C++, или wrapper для OpenCL, или биндинги для разных языков, реализующие доступ к функционалу CUDA через аппаратные функции API

Ответить

Max Yankov

Илюхер
3

Но никто же не говорит об универсальности, откуда вы это взяли?

Ответить

_ d00h

Илюхер
0

Какие новые языки появились за последние два-три года? Хотя бы описание синтаксиса?
Мантра, о велосипедах каждый раз радует.
Какие есть новые альтернативы системным языкам? Кроме rust .
Вы действительно считаете что у c++ нет проблем?

Ответить

Wilsom Sanders

_
0

Наличие у С++ проблем никак не решает вопрос необходимости еще одного языка. Как минимум, надо доказать, что проблемы языка касаются геймдева и в свете геймдева новый язык их решает. Так если аффтар просто добавил два макроса на foreach в кресты, то это не решение проблем и язык не нужен. А у нас инфы нит.

Ответить

_ d00h

Wilsom
2

Gamedev наименее консервативная область внедрения нового системного языка.
Кажется , что это по сути одна из последний областей программирования, где гиперкритично быстродействие и жадность к памяти.
Так что возможно, ниша для языка и есть,
С другой стороны если уж управляемый csharp востребован.

Ответить

FinlandCoder FinlandCoder

_
–4

Вы настолько не знаете геимдев, что готовы утверждать про его НЕКОНСЕРВАТИЗМ??? DTF пробило очередное дно. Геимдев и есть синоним консерватизма. Покажите свои игры. Только не нужно показывать инди-гавно на Юнити. ААА хотябы.

Ответить

_ d00h

FinlandCoder
0

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

Ответить

ЖирныйМинус

Wilsom
0

На ютуб канале разраба есть много инфы, но она вся в форме видео. Есть и в текстовом виде, кто-то тут в комментах кидал ссылку.
https://www.youtube.com/channel/UCCuoqzrsHlwv1YyPKLuMDUQ

Ответить

Sergey Ryabenko

_
0

Kotlin - меньше года назад
Swift - 4 года назад
Go - 6 лет назад

Первые два стали стандартом для Android и iOS соответственно.

Ответить

_ d00h

Sergey
0

Kotlin мягко говоря не год, на моей памяти ему уже лет 5-6. Зарелизился да недавно.

Вопрос был про системные языки.

Скриптовые языки развиваются. всякие TypeScript и иже сними
Управляемые Kotlin, Go

Одни системные застыли на уровне с++.
Сами то с++ развиваются. но альтернатив им по сути нет.

P.S.: На счет стандарта по крайней мере на android можно поспорить

Ответить

गुरू

_
2

Есть Nim.

Ответить

Patrick

गुरू
0

Кстати, как оно уже? Юзабельно? Стандартная библиотека хорошо наполнена? А то не хочется какие-то низкоуровневые велосипеды писать если что.

Ответить

गुरू

Patrick
1

Вполне юзабельно, но не мачурно. По факту релиза ещё не было.

Ответить

Jack Cade

3

Очередная нишевая хрень которая будет использоваться 1.5 гиками.

Ответить

drza

Jack
18

Мнение анимешников не интересует!

Ответить

FinlandCoder FinlandCoder

drza
0

Ждем твои проекты на этом языке.

Ответить

Никита Елсуков

5

Умный мужик этот Джонатан Блоу. Голова.

Ответить

Demian

1

Jai will not have:

Smart pointers
Garbage collection
Automatic memory management of any kind
Templates or template metaprogramming
RAII
Subtype polymorphism
Exceptions
References
A virtual machine (at least, not usually—see below)
A preprocessor (at least, not one resembling C’s—see below)
Header files

Я даже не знаю, как это может быть лучше c++

Ответить

Марат Сафин

Demian
12

Отсутствие header files, preprocessor и templates уже делает его лучше c++

Ответить

Rudolf Cunningham

Марат
–1

Отсутствие templates

делает лучше

Да не гони.

Ответить

Patrick

Demian
5

Отсутствие
Garbage collection

Automatic memory management of any kind

Важно в играх для предсказуемой производительности. А то у нас обсчёт 100500 коллизий и тут сборщик мусора решил память почистить вдогонку.
Exceptions

Игровой процесс в принципе не должен вызывать исключения. Если вызвалось исключение - где-то провтык в логике.

Ответить

Demian

Patrick
5

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

Ответить

glimpse unthinkable

Demian
3

Ексепшен в риал тайм логике в 90% случаев делает игру неиграбельной, зачем он тогда нужен?

Ответить

Alexander Kuzevanov

glimpse
1

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

Ответить

Andrey Apanasik

Patrick
0

"А то у нас обсчёт 100500 коллизий и тут сборщик мусора решил память почистить вдогонку"
А зачем вы при обсчёте коллизий плодите объекты?

Ответить

Patrick

Andrey
0

А с чего это я пложу объекты? Это игроки бегают, строят, стреляют, бросают, толкают...

Ответить

Andrey Apanasik

Patrick
0

Пулы для объектов, не?

Ответить

Max Yankov

Andrey
0

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

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

Ответить

Павел Сотников

Patrick
0

Согласен со всем кроме исключений, идеального кода не бывает, что-нибудь всё равно обязательно сломается

Ответить

Мимокрокодил

Demian
0

Да, странную вещь задумал. Такое "уже не C++, но еще не C#"

Ответить

Max Yankov

Demian
0

Отсутствие многих из этих вещей уже делает его лучше. Особенно subtype polymorphism (под которым, я так понимаю, он имеет в виду наследование от не абстрактных типов).

Ну и уж конечно лучше никакого препроцессора, чем препроцессор C.

Ответить

Mihail Romantsov

4

А в чём особенность этого его JAI?

Ответить

Игорь Жилин

Mihail
1

"я просто хочу перенести туда 3D-графику"

Я так понял он пишет язык, чтобы было быстро и удобно с 3D в играх работать.

Ответить

Марк Черкишев

Mihail
0

В комментариях ссылки

Ответить

Líkið Geimfari

1

Столько языков создано исправить косяки C++, но лишь один из них может сравниться с C++ по скорости выполнения. По крайней мере я знаю лишь один такой язык - это Rust.

Ответить

Max Yankov

Líkið
2

Скорость выполнения это, строго говоря, свойство не языка, а имплементации. Лисп-машины тому примером.

Ответить

Líkið Geimfari

Max
0

Строго говоря да, но я имел в виду язык с такими же низкоуровневыми возможностями как C++, но без потери в производительности. Разумеется, производительность не самое главное.

Ответить

Александр Мирошников

Líkið
1

С с++ может сравнится только с++

Ответить

Александр Яненко

Líkið
1

Разные языки пытаются исправить разные косяки. Из популярного только Rust и D пытались соревноваться с C++ в категории AOT-компилируемых языков по оптимальности выводимого машинного кода -- чтобы с ручным менеджментом памяти и все прочее.

Ответить

Антон Антонов

3

Глубоко копнул. Я предлагаю пойти дальше и начать разработку игры с изобретения своей консоли.

Ответить

Eugen Dubovik

3

ну что он на гите показал имхо хуже с#, как по синтаксису так и по функционалу.

Ответить

Александр Мирошников

3

Ну ок, одним больше языком одним меньше вообще без разницы. Но за := прям АААх как больно (не переношу).

Ответить

Сергей Веселый

2

Непонятное поделие вроде и не плюсы, а выглядит страшно. Есть ведь отличный Haxe, в котором дохрена плюшек, синтаксис джавы и трансляция в плюсы.

Ответить

IHaveNoMouthSoIMustWrite

Сергей
2

Я нашел тебя, человек, знающий хакс.

Осталось 150 из 152

Ответить

Maxim Nuriev

1

Авторы и там и сям как будто соревнуются, кто найдет фотку подурковатее.

Ответить

Maxim Nuriev

Maxim
3

Нате вот, может для следующего раза подойдет

Ответить

Dmitry Namynnuz

Maxim
2

Синдром Пелевина какой-то...

Ответить

Bogdan Sevryukov

Dmitry
0

Матрица сбоит

Ответить

Wilsom Sanders

2

Кто-нибудь, расскажите этому товарищу про D. Нет, это не смайлик.

Ответить

Alex Polepchuk

Wilsom
1

Ужасно недооцененный язык. После раскопок их JavaScript движка который в интерпретаторе работал быстрее JIT зауважал разработчика(ов)

Ответить

Nikita Savyolov

Alex
0

Уважение разработчикам, что до сих пор занимаются языком, хоть он и не популярен. Как говорил Уолтер
It's like the music business - you don't have to be the Beatles to have a very good career

Смог написать(на самом деле переписать с Си, но подводных камней хватало) на нём плагин для DeaDBeeF практически ничего не зная о Си, крестах и самом D. Надеюсь, что язык когда-нибудь стрельнет также, как JS, Go и Rust и тогда заживём

Ответить

Александр Яненко

Nikita
4

JS всё-таки "стрельнул" из необходимости, а не потому что такой классный язык. Язык-то сам по себе отвратительный, его только TypeScript и исправит.

Ответить

Wilsom Sanders

Alex
0

Может быть. Только нафига нам второй D?

Ответить

Wilsom Sanders

Wilsom
0

PS причем от человека, чьи игры не слышали слова оптимизация вообще.

Ответить

Alex Polepchuk

Wilsom
0

Скорее согласен чем нет, ну не хватает человеку чего-то, в юнити тоже свой яваскрипт запилили.

Ответить

Александр Яненко

Wilsom
0

А он знает про него и упоминал в своей аргументации по созданию Jai, как и Golang кстати. Чето не понравилось ему.

Ответить

Rayknow Red

2

Вот уж точно, легких путей не ищет

Ответить

Vitalij

2

один из главных факторов, сдерживающих развитие игровой индустрии — это распространённость C++

Посмотрел на календарь и там вроде бы не 2002 год.

Ответить

ЖирныйМинус

1

Прочитал одну из целей создания языка:
designed for good programmers

А есть что-то для любителей ваять спагетти

Ответить

Demian

ЖирныйМинус
0

Юнити
Вчера ты писал говносайты на javascript, а сегодня уже гордый геймдевелопер на юнити

Ответить

Евгений Абрамовских

Demian
0

Но... Я же... (Ну говно сайты на js это сильно. Все-таки на ноде CMS-ок я не видел адекватных. Это больше к пхп. Ну а фронт это фронт)

Ответить

Demian

Евгений
0

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

Ответить

Евгений Абрамовских

Demian
0

Скажем так. ECS и job systemбудут пользоваться не только лишь все... Ну и все-таки это не так уж и сложно при ТАКОМ колличестве обучающего материала.

Ответить

_ d00h

ЖирныйМинус
0

похожая цель была у DigitalMars D

Ответить

Роман Кучма

ЖирныйМинус
0

Unreal Blueprints. Есть даже отдельный топик про различные сорта спагетти, созданные на нём.
https://blueprintsfromhell.tumblr.com

Ответить

Роман Романов

1

Создаю свой язык программирования уже лет 5, и вот испугался, что вдруг кто-то понял каким он должен быть. Ан нет, оказался всё так же текстовым как и все остальные.
Поэтому сюда подходит картинка группы людей и надпись "Здравствуй, Джонатан!".

Тоже планирую представить до конца года, сейчас пытаюсь на нём сделать Тетрис и Змейку.
Человек рисует на экране курсором, а подобие нейросети пытается угадать что он хочет получить. На скриншоте я нарисовал несколько пикселей, и серым появилась подсказка автодополнения, остаётся только подтвердить:

Ответить

Demian

Роман
1

А как это вообще позволяет хоть что-то запрограммировать? Или это только рисования? Как реализовать игровую логику?

Ответить

Роман Романов

Demian
0

Это режим создания, есть режим перемещения. Допустим, рисуем препятствие и объект. Перемещаем объект в сторону препятствия, программа предложит перемещать её в том же направлении. Соглашаемся, и когда объект достигает препятствия - мы перехватываем её, не давая пройти далее. Тем самым "разрываем шаблон" программе. Повторяем, и программа запоминает, что на этой линии объект останавливается.

Ответить

Роман Романов

Роман
0

Попроще - двигаем персонажа в сторону и нажимаем кнопку направления, или приподнимаем персонажа и нажимаем пробел. Система видит связь и вот уже персонаж двигается или прыгает при нажатии.

Ответить

Александр Яненко

Роман
0

Хоспаде, визуальное программирование делаешь что ли? Никогда это серьезным инженерам не зайдет, имхо.

Ответить

Роман Романов

Александр
0

Ожидаю, что все будут делать на высоком уровне, а производительность будут улучшать эти "серьёзные" инженеры, имея возможность опускаться на нижние уровни, вплоть до машинных команд (LLVM).

Ответить

Александр Яненко

Роман
1

Да я даже не о производительности. Выражать какие-либо серьезные абстракции на визуальном языке -- так себе удовольствие.

Ответить

Роман Романов

Александр
1

Блок-схемы неудобны?

Ответить

Мимокрокодил

Роман
0

Ну, если у тебя будет несколько уровней детализации своих "схем", да еще и их разные виды - тогда удобно.

Одним видом блок-схем описать что-то серьезное часто невозможно, не то что трудно

Ответить

Роман Романов

Мимокрокодил
1

Вот есть блок-схема Ромова, улучшенный вариант ДРАКОНа. Код стремится завершиться пройдя до низа, но этому "мешают" условные переходы направо. И вот пока не нашёл алгоритм, который не ложился бы на него. Есть идеи?