Занимаюсь геймдевом полтора года, но так ни чего и не добился. Начинаю делать что-нибудь новое, по началу всё получается, но через 1-2 недели код превращается в какой-то непонятный ужас. Прогресс (в плане качества кода) почти не ощущается, топчусь на одних и тех же идеях. Это меня злит.
Не понятно как писать игровую логику на C++. ООП требует соблюдение понятно каких трёх правил и ещё нескольких, но при программирование игровой логики я их не могу соблюдать.
Почти любой игровой объект используется почти во всей программе. Поэтому использовать такую логику:
> контейнер-то что лежит в нём(контейнер-то что лежит в нём(. ))
> обратная связь как при программировании GUI не получается.
Да, C++ богат возможностями величайшими, но вот всё ни как не соображу, как их на деле применить.
> далее идут вопросы, на которые хочу получить ответы
1. Как отделить игровые объекты от игровой логики?
2. Как не запутать огромнейшие очереди игровых сценариев, которые у меня в разных объектах лежат?
Логика. Основы Логики. Логическое Мышление
3. Какие термины гуглить, чтобы разобраться?
4. Все книги по программированию игр, судя по названию, рассказывают о том как программировать графику.
Что толку, если я их прочитаю, мои проблема в игровой логике, а не в графике (хотя и в ней тоже, но пока 2D без спецэффектов хватает)
Есть книга по игровой логике?
#1
0:24, 20 авг 2012
Слишком много «если», игровая логика пока слишком сложна для тебя, начинай писать более простые приложения, со временем может и до логики дорастешь.
#2
0:29, 20 авг 2012
nes
> Слишком много «если», игровая логика пока слишком сложна для тебя, начинай
> писать более простые приложения, со временем может и до логики дорастешь.
Может быть вы и правы. Если не считать программок из упражнений к книге, (и 4-х недоигр) то ни чего больше я не писал.
Почему-то у меня есть ощущение, что то, что я не понимаю лежит на поверхности. Но каждый раз, как я начинаю об этом думать, оно ускользает.
М.б. ответ кроется в названии игровая логика. логика. игровая. Её можно как то описать одним модулем или вообще текстовым документом? Так чтобы вся она была в одном месте и не с чем другим не мешалась, как это сделать.
#3
0:34, 20 авг 2012
Не понятно как писать игровую логику на C++.
Не нужно этого делать вообще. С++ слишком тяжелый для этого. На нем можно написать абстракции для движка, а дальше в дело вступают скрипты — простые, понятные, легковесные.
Чтобы писать игровую логику на С++ нужно отделить мух от котлет. Вывести абстрации, можно даже интерфейсную модель. Дальше можно на объекты навешивать компоненты(например как это сделано в Unity3d), которые определяют поведение.
У вас видно архитектурная проблема. Вы не знаете как построить свое приложение, чтобы его можно было легко масштабировать. Гуглите книги по проектированию приложений, есть много книг по этой теме, и не важно что нет книг по проектированию игровых приложений. Смотрите на основы проектирования, паттерны, приемы и т.д. пробуйте применять паттерны в своем приложений и все получится 🙂
Не смотри обучающие ролики!
Книги:
— Приемы объектно-ориентированного программирования. — не для с++, но понятно все расписано, что как и почему. есть справочник по паттернам и как они организованы.
— Андрей Александреску. Современное проектирование на С++: Обобщенное программирование и прикладные шаблоны проектирования — если хотите применять шаблоны в своем приложении.
ну и все в таком духе.
>>2. Как не запутать огромнейшие очереди игровых сценариев, которые у меня в разных объектах лежат?
сценарий,наверно, состоит из множества кусочков логики. Выполните декомпозицию, найдите одинаковые части, вынесите их отдельно, используйте повторно код. Не нужно городить тонны кода и писать методы по 1500 стр. кода. А также копипастить.
#4
0:35, 20 авг 2012
Morhoom
Забей на правила и красоту, напиши что-нибудь законченное (пусть и очень уродливое), отрефактори, постигни истину.
Источник: gamedev.ru
Как улучшить свои навыки построения логики программы
Перевод статьи «How to Improve Your Logic Building Skills in Programming».
Построение логики это фундаментальная часть программирования. Если вы знаете много языков программирования, но у вас нет навыков построения логики, больших высот вы не достигнете. Чтобы иметь возможность придумывать различные решения для каждой отдельной проблемы, нужно изучать алгоритмы и практиковаться в написании кода. Сегодня я поделюсь с вами несколькими советами относительно того, как улучшить свои навыки построения логики и логического мышления.
1. Просматривайте код других программистов
Просто подписаться на лучших программистов на разных сайтах будет недостаточно. Чтобы понять, как они мыслят, нужно читать их код. Каждая задача имеет разные решения, и эти решения можно найти в интернете. Попробуйте проанализировать найденные решения и понять, как применяется разная логика для решения одной задачи. Когда разберетесь, найдите способы улучшить логику или реализацию решения различных задач.
2. Разбивайте сложные задачи до базовых
То, что задача сложная, не означает, что ее можно решить только при помощи тысячи строк кода. Способность с умом подходить к решению сложных задач – вот, что отличает опытного программиста от новичка.
Когда вам попадается сложная задача, сначала попробуйте визуализировать ее сложность. Затем разбейте ее на несколько задач или модулей. А после этого начинайте реализовывать логику и решать каждую часть задачи. Это поможет улучшить ваши навыки построения логики.
3. Решайте реальные задачи
Записывать шаги алгоритмов и делать сухие запуски кода это очень полезно на начальных стадиях, но ваше умение строить логику улучшится, только когда вы начнете писать код систематически.
Выберите свой любимый язык программирования и начинайте решать задачи. Сначала простые и средней сложности, затем переходите к более сложным.
Только не надо, увидев задачу, сразу бросаться писать код. Сначала постарайтесь понять ее, подумайте обо всех возможных вариантах решения, выделите основные элементы задачи, а затем приступайте к реализации. Со временем ваши навыки построения логики улучшатся.
4. Думайте условиями
Программирование это условия и циклы. Вам нужно тоже начать думать условиями в стиле «если условие А истинно, сделай В, а иначе – С».
Здесь есть существенный «плюс»: условия повторяются и могут встречаться снова и снова. Старайтесь больше практиковаться в if-else, switch и других простых условиях, чем изучать гипотезы и теории об условном и логическом мышлении.
5. Изучайте парадигмы программирования
Изучение парадигм программирования может очень сильно помочь улучшить ваши навыки построения логики. Это своего рода план создания наших проектов. Есть три основные и часто встречающиеся парадигмы программирования: императивная, функциональная и объектно-ориентированная.
Императивное программирование предполагает наличие последовательности операторов, которые изменяют состояние программы. Парадигма функционального программирования в основном используется для выполнения математических функций без изменения состояния. Наконец, в основе самой популярной – объектно-ориентированной – лежит идея, что все может быть представлено как объект. Возьмите, к примеру, стул, и посмотрите на него как на объект. Все стулья имеют почти одинаковые свойства, но их значения не всегда одинаковы.
Это простые советы, следуя которым, вы сможете улучшить свои навыки построения логики. Если бы мне нужно было выбрать самый дельный совет, я бы выбрал как можно более частое написание кода. Углублять знания и изучать разные языки это здорово, но это вам поможет, только если у вас есть хорошие навыки построения логики.
Источник: techrocks.ru
Бизнес-логика в no-code: что это и как ее построить
Бизнес-логика приложения – это, по сути, описание схем, по которым приложение взаимодействует с пользователем. Когда пользователь оформляет подписку, или заполняет форму заказа, или просто авторизуется – все эти действия обрабатываются «под капотом» приложения в определенном порядке.
3957 просмотров
Какие данные нужно запросить? Соответствуют ли введенные данные заданному формату? Что произойдет после того, как пользователь нажмет кнопку «Подтвердить»? А есть ли вообще у него права доступа к данной операции? На все эти и многие другие вопросы можно ответить, изучив, как построена бизнес-логика конкретного приложения.
Простейший пример: администратор авиакомпании (пользователь) регистрирует пассажира на рейс (вносит информацию в базу данных).
Что делает пользователь:
1.Открывает информацию о выбранном рейсе, переходит к списку уже зарегистрированных пассажиров, нажимает «Зарегистрировать пассажира».
2.Заполняет форму регистрации: вводит номер рейса, выбирает пассажира, указывает место и статус регистрации.
3.Нажимает кнопку «Подтвердить»
4.Видит нового пассажира в общем списке.
Как это выглядит с точки зрения бизнес-логики приложения:
1.Приложение проверяет, авторизован ли пользователь и имеет ли права доступа к выбранной странице, а также операции регистрации.
2.Ждет, пока пользователь заполнит форму.
3.Обрабатывает введенные данные:
a. Проверяет, соответствуют ли введенные данные требованиям приложения (эти требования заранее прописаны программистом): например, в поле «Номер рейса» должно быть целое число.
b. Получает из базы данных информацию: например, о рейсе и связанных с ним регистрациях (чтобы внести изменения), пассажире (чтобы проверить, действительно ли этот пассажир есть в базе данных).
c. Выдает сообщения об ошибках, если поля заполнены неверно.
d. Отправляет информацию в базу данных, отдавая команды на создание в ней новых записей или обновлении существующих.
4.Выводит обновленную информацию на экран.
Общая логика приложения строится из бизнес-процессов – схем, описывающих конкретные операции в системе: создание записи о пассажире, добавление в систему нового рейса, редактирование информации о регистрации.
Когда речь идет о классическом программировании, то для описания всех процессов используются блоки кода. Многие из них пишутся по шаблонам – просто используются в разной последовательности и для работы с разными данными.
Именно благодаря этой «шаблонности» в no-code разработке появилась возможность использовать инструменты визуального программирования – так называемые дизайнеры бизнес-логики. Они помогают выбрать нужные блоки, скомпоновать в нужной последовательности, настроить. И даже создать некоторые блоки автоматически, в зависимости от настроек других компонентов приложения. Итог – готовая бизнес-логика без необходимости проводить многие часы над строками кода.
О том, как настраивать бизнес-логику на платформе Appmaster.io, вы можете узнать из видео о бизнес-процессах.
Источник: vc.ru