FooPong или ФууууууууПонг

FooPong
4
Нейтральная
сторона
1
ФууууууууПонг
2
Клон Понга от Дмытра норм, тем более что сделан с 0-я
Прежде чем писать комментарии или выбрать сторону вы должны авторизироваться!
Тю, да такое может сделать любой студент 1 месяца прог. универа!

06-11-2017 21:20 0

Превью клипа

Вот видео, если кто не сможет затестить.
Соурс Код

УПРАВЛЕНИЕ:
W/A - левая бита I/K - правая R - начать заново V - вкл\выкл отображение векторов (видно как игра работает!!)

Я использовал OpenGL и freeglut но только с целью обойти Windows API (оно ужасное) и рендерить графику. Я даже не использовал встроенные функции ОпенДжиЭла для трансформаций, все сам делал, ему просто передаю адреса точек для отрисовки.

Матриц пока не использовал, хотел сначала попробовать чисто на векторах, к тому же в понге не особо нужно вращать объекты, так что он идеально подходил для попытки реализации! Да, линейная алгебра - это вещь! У меня своя мат. библиотека, свой класс вектора со всеми операторами, все как надо! Но над тем как фиксировать столкновения я очень долго сидел... Гуглить нельзя было, какой смысл в челендже тогда? В конце концов разобрался. Было чувство, что переизобрел колесо =)

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

2 комментария
Egor.Leschev 08-11-2017 14:49 0

ScienceDiscoverer, Почему играется только на английской раскладке?

Jotun 08-11-2017 14:54 0

Egor.Leschev, Вангую: потому что он смотрит не на клавиши, а на код символов.

07-11-2017 09:47 +2

Явный прогресс по сравнению с прошлой игрой.

Я вроде тебе уже советовал, но повторюсь еще раз, что стоит почитать этого чувака (от слова "чтение", а не как короля):
gameprogrammingpatterns.com/

Всё равно вся логика же в одном файле (еще и стороннему человеку будет не просто угадать в каком), а должно быть поведение ракетки отдельно, мячика отдельно, примерно как с отрисовкой ты сделал.
Ебучие свичи выкинь, сделай вместо этого классы с общим интерфейсом и разной реализацией внутри. И вообще я не уверен, что для динамичных игр управление надо делать на событиях.
Фраза "своя мат. библиотека" - некоторое преувеличение конечно, ибо кроме метода newtonSqrt там внимания вообще ничего не заслуживает, ибо это тупо врапперы на стандартной библиотекой потому что тебе хотелось работать с градусами (что мне кажется довольно редким явлением в геймдеве), да еще и код перевод в градусы и обратно сто раз скопирован...

Короче, это игра и она работает и в неё можно играть. Это почти полный перечень плюсов, но он не такой уж и плохой.

5 комментариев
ScienceDisco… 08-11-2017 13:52 0

cherepets, Я вроде тебе уже советовал
Да не, вроде не советовал... А книга этого чувака есть где-то бесплатно? Или только покупать?

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

работать с градусами (что мне кажется довольно редким явлением в геймдеве)

А чо так? 0_______0 Оно же более интуитивно, не?

П.С. О кстати, Черепетц, помнишь мы делали игру про танчики пошаговую? Я еще рисовал танчики и домики :Д Забавные были времена... Но я потерял исходники, мож пришлешь мне их если сохранились? Думаю, теперь я мож разберусь как там все работало =\

cherepets 08-11-2017 14:03 0

ScienceDiscoverer, А книга этого чувака есть где-то бесплатно?

Есть. Прямо по той ссылке что я и скинул.
Web
Read Now
Responsive design looks great on your desktop browser, tablet, or phone.
Free!
Absolutely zero cost!
Seriously, did I mention the price, or lack thereof?


Оно же более интуитивно, не?

Мне кажется, самый интуитивный вариант - это float от 0 до 1, но тут хз, вопрос довольно холиварный.

Но я потерял исходники, мож пришлешь мне их если сохранились?

Да я вот тоже по ходу потерял.
Я почему-то так и не приучился соурс-контроллить "короткие" проекты. Еще и из гитхаба сношу через некоторое время всё что на мой взгляд не может быть никому интересно.

ScienceDisco… 08-11-2017 17:10 0

cherepets, Есть. Прямо по той ссылке что я и скинул.
О, как то не дочитал...

ScienceDisco… 08-11-2017 20:14 0

cherepets, Есть. Прямо по той ссылке что я и скинул.

Я все таки нашел на рутрекере EPUB как раз для моей черно-белой читалки!

Да уж, пират я, неисправимый!

cherepets 13-11-2017 12:16 0

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

07-11-2017 21:50 +2

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

Начнем с хороших новостей: ты явно прогрессируешь.

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

Также видно, что ты сделал простенькую структуру проекта вместо того, чтобы писать всё в одном файле, а также попытался разнести логику по классам и методам. Это тоже пока что получилось не очень хорошо (см. весь файл shapes.cpp и конкретно нечитаемую стену if-ов), но за старания плюсик.

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

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

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

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

В-третьих, твоя "мат.библиотека" - это такое днище ебаное, что тебе лучше её удалить и никому никогда не показывать. Честно.
То, что ты написал, называется "велосипедами", причём "велосипеды" эти:
а) бесполезны
б) некрасиво написаны
в) не следуют общепринятым стандартам (работа с градусами, например)
г) моё любимое

В-четвертых, отдельно выделю вот этот зашквар. Не знаю, что здесь хуже: нежелание подключать <string> и <iostream> (хз, зачем они там нужны) или то, что ты не придумал ничего лучше, чем эти switch-и.
Домашнее задание: подумай, как переписать конкретно этот код таким образом, чтобы он не вызывал у ревьюера желание найти твой дом и нассать тебе на дверь.


Резюмирую: по качеству кода напоминает мою игру, которую я написал летом после первого курса, только она была на несколько порядков сложнее и больше.
Я бы оценил это в второй семестр первого курса по знанию C++, первый семестр второго курса по знанию алгоритмов, ноль в плане всяких других полезных штук типа понимания (и разумного применения) принципов того же ООП.

Самый большой плюс твоей игры - ты спалил мне профиль черепца на гитхабе.

22 комментария
cherepets 08-11-2017 04:49 +2

Jotun, вот этот зашквар

И правда конечно пиздец в стиле модных шуток про isEven через switch.
Раз уж у него только цифры, то мне кажется, что можно вообще так сделать и не париться:
Дмытро, не торопись открывать

спалил мне профиль черепца

Да ты конечно детектив -__-

Jotun 08-11-2017 08:28 0

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


Да ты конечно детектив -__-

Буду в три часа ночи по пьяни присылать тебе пулл реквесты

ScienceDisco… 08-11-2017 14:13 0

Jotun, оформлять код консистентно (но у тебя не получается: см. здесь, например).
Ну, у меня такое правило: если у if() for() или тому подобных блоков есть только одна линия кода, то я ее пишу без скобок, просто с отступом, потом после лайна я обязательно делаю отступ (хотя там не сделал, блин) что бы было видно что она относиться только к циклю\условию. Если 2 или больше линий, то уже делаю скобки. Думаю вполне очевидно. Но иногда бывают проколы да. Например, иногда бывает так что я сделал сначала 2 лайна, но потом 1 удалил за ненадобностью, а скобки удалить забываю...

ты таки не научился разносить методы и даже банально ставить пробелы между логическими блоками кода (например, это место тяжело читается).
Да, да, помню это место... Там я просто уже спешил, отрисовка векторов чисто опциональная штука и я просто пытался ее побыстрее сделать и забыть =\

твоя "мат.библиотека" - это такое днище

Не, ну блин =\ Я и не пытался сделать прям все самостоятельно (но делать велосипеды, хоть и некрасивые, приятно), просто не включать в основной файл ненужные функции. А почему работа с гардусами это ужас как плохо я так и не понял =\ Ведь не все же геймдевелоперы учёные которые мыслят радианами? К тому же да, я знаю что стандартный поиск корня будет работать быстрее чем мой (он там вроде в процессоре как-то захардкодден).

В-четвертых, отдельно выделю вот этот зашквар. Не знаю, что здесь хуже: нежелание подключать <string> и <iostream> (хз, зачем они там нужны) или то, что ты не придумал ничего лучше, чем эти switch-и.
Хммм, ну то что не придумал лучше, это потому что спешил и не хотел тратить на это время.
У стринга есть метод to_string() а iostream включает в себя какую-то из С-шных библиотек где есть функция itoa() (инт в чар).

Самый большой плюс твоей игры - ты спалил мне профиль черепца на гитхабе.
ЛОЛ!!! Я даже не замечал что кто-то меня фолловит 0________0

Simple_Not 08-11-2017 16:09 0

ScienceDiscoverer, учёные которые мыслят радианами
Но ведь радианы - это школьная программа.

ScienceDisco… 08-11-2017 17:13 0

Simple_Not, Но ведь радианы - это школьная программа.
Оно то да... Но не знаю, мне всегда казалось что повседневной жизни люди пользуются градусами =\

ScienceDisco… 08-11-2017 18:00 0

Simple_Not, Ну вот смотри, пример:
Есть ИИ страж в игре. У него есть какое-то поле зрения. Ты не будеш думать: "Так, так, так... У этого стража будет поле зрения - 2,8321 радиан!"

Как-то совсем не очевидно =\

BerkutOi 08-11-2017 18:39 +1

ScienceDiscoverer, попробуй использовать дробную часть PI радиан
например "у этого стража поле зрения будет (1/3)*PI радиан"
по-моему очевидно

а вот так как ты написал с 2,73284 радиан никто не думает, да

Simple_Not 08-11-2017 19:25 0

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

Jotun 08-11-2017 21:41 0

ScienceDiscoverer, Ну, у меня такое правило
Остановись на этом месте и пойди почитай гайдлайны какого-нибудь Страуструпа.

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

BerkutOi 08-11-2017 22:52 +1

Jotun, Остановись на этом месте и пойди почитай гайдлайны какого-нибудь Страуструпа.
не уверен что страуструпа, лучше просто любые современные гайдлайны, или блин в иде нажать кнопку для автоформатирования -_-

Jotun 08-11-2017 23:02 0

BerkutOi, Ну он просто плюсы учит, а у Страуструпа есть статья на гитхабе, насколько я помню, где подробно рассматривается, что и как мы оформляем в коде на C++

ScienceDisco… 09-11-2017 11:28 0

Jotun, Это?

Да уж, мне тут накидали овер 9000 книг и гайдлайнов, когда ж мне их читать все ( ._.) Еще ж надо подтягивать математику, что бы матричные трансформации понять...

cherepets 09-11-2017 11:34 0

ScienceDiscoverer, Ну, а делая по коммиту раз в 3 месяца будешь учить плюсы 5000 лет. Выдели каждый день по паре часов на чтение и по паре на практику - уже лучше будет.

Jotun 09-11-2017 11:42 +1

cherepets, По паре часов в день это не учится.
Если человек хочет научиться не сайты на ASP.Net клепать, а выучить математику и алгоритмы, например, то это нужно часов 20-30 в неделю тратить, чтобы куда-то успеть

ScienceDisco… 09-11-2017 11:45 0

ScienceDiscoverer, Вы можете мне накинуть приблизительно приоритетов?
Вот что в очереди:
- Черепетз сказал мне читать Game Programmers patterns
- Джотун сказал читать Гайдлайны С++
- Надо читать Essencial Math for Game Programmers
- Art of Game Design есть еще книга
- Книгу по алгоритмам я вообще забросил

Вот не могу точно определить что в приоритете...

ScienceDisco… 09-11-2017 11:48 0

cherepets, делая по коммиту раз в 3 месяца будешь учить плюсы 5000 лет
То у меня был период очень печальный... И здоровье подкосило, и вообще все плохо было, депресняк полный. Вот сейчас вроде возобновил желание бороться за свое будущее.

cherepets 09-11-2017 12:32 0

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

cherepets 09-11-2017 12:35 0

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

Jotun 09-11-2017 12:51 0

cherepets, Так подобную хуйню в любом случае придется учить (только в приложении к геймдеву)

cherepets 09-11-2017 13:07 +1

Jotun, Вообще в условиях современного энтри-левел геймдева (тем более на Украине) ему нужно браться за Unity. А это и правда почти как веб по степени изъебистости.

Simple_Not 09-11-2017 21:09 0

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

Jotun 09-11-2017 21:38 +1

Simple_Not, ну в программировании тоже бы так было, если бы была более скромная цель выучить что-то типа модного JSа. Однако, у Дмытра планка стоит выше