Блог компании PVS-Studio
Разработка игр
Комментарии 20
+2
Быть может так сталось, что эту игру для себя (понастальгировать) пишут прожженые бородачи переключаясь на нее в свободное от кернел-хакинга время. Возраст игры тому косвенное подтверждение.
0
В чем связь между «кернел-хакингом» и количеством ошибок?
+12
Высокая культура кода, этапы разработки, обязательный ревью, борода.
0
Скорее связь не с «кернел-хакингом», а с «в свободное время». Нет давления «скорее-скорее, некогда думать про ошибки, дедлайн вчера».
0
Не факт, грубо говоря есть две цели (на самом деле не две, но на этих проще показывать) «написать реально красивый код, чему на работе мешают постоянные делайны» и «получить продукт который давно хотел» и в зависимости от их соотношения количество некритичных ошибок и в целом качество кода могут сильно плавать.
0

Как же так получается, что в коде ошибки, причем иногда довольно серьезные, а программы вполне успешно функционируют?

0
Ошибка #1 — не думаю что логическая ошибка, имхо они хотели сделать вот так:

if (i == 0) {
  Chain.push_back(CoastalPoint(indexx,CVector2D(xx*2,yy*2)));
} else {
  Chain.push_front(CoastalPoint(indexx,CVector2D(xx*2,yy*2)));
  CoastalPointsSet.erase(xx + yy*SideSize);
  found = true;
  break;
}
0

Я посмотрел, что там происходит — обход в глубину для множества прибрежных точек. Соответственно, если мы дошли до точки xx = xx + around[p][0], то мы уже выбрали следующую вершину. Поэтому скобки тут не причём. А наличием if (nbNeighb >= 2), скорее всего, хотелось "почистить" ближайшие точки, как это сделано для стартовой вершины, чтобы много волн не пересекалось рядом.

+4
История игры берёт своё начало с 2000 года. Поэтому в коде встречаются (особенно библиотечного) всякие архаизмы, которые стараемся подчищать. Но в плюсовом коде это происходит медленнее. Небольшая часть этих ошибок уже известна, и патчи ждут конца FF.
0

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

0
Java это очень большая задача. Причём не только в плане реализации, но и продвижения, учёте пожеланий первых пользователей и т.д. Пока рано забегать вперёд и думать дальше.
+1
Думаю, не слишком ошибусь в оценке, если скажу, что коммерческого джава-кода минимум в 1000 раз больше, чем кода на расте.

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

Еще они молодцы, потому что игра классная. Ну это так, мелочи.

0
shared_ptr<u8[]> fileData = shared_ptr<u8>(new u8[fileSize]);

тогда уж

shared_ptr<u8[]> fileData = make_shared<u8[]>(fileSize);

или так
auto fileData{make_shared<u8[]>(fileSize)};
Только полноправные пользователи могут оставлять комментарии. , пожалуйста.