Ответы пользователя по тегу Программирование
  • В каком типе переменной хранить (м\ж) пол?

    Для гибкости (и по идеологии шарпа) можно сделать структурой, инкапсулирующей этот Int32/Nullable/Enum и т.д., умеющий в конвертирование из разных представлений, выдачу локализованных названий полов, сериализацию и прочие полезные вещи.
    Ответ написан
    Комментировать
  • Каким образом в играх сохраняются данные?

    Стоит сейчас похожая задача, есть pet project по типу КР и других подобных игр. В процессе решения данного вопроса, делаю примерно так:
    1. В игре, разумеется, есть некая модель вселенной. В моем случае это звездные системы, которые являются контейнерами для SpaceObject'ов, в которые уже входят планеты/корабли и другие объекты.
    2. Таким образом, состояние игры можно сохранить как звездные системы и их содержимое, ну и не забыть сериализовать вспомогательные коллекции, типа капитанов кораблей и другой глобальной информации.
    3. Сериализация вселенной происходит в json. Я пишу игру на unity3d, поэтому мне кажется удобным использовать местный JSONUtility, умеющий проводить сериализацию простых классов (т.е. публичные поля и простые коллекции). Процесс таков: для всего, что я хочу (де)сериализовать, создаю класс-прокси, отражающий в простой форме (без всяких конструкторов, свойств, приватных членов и всего такого) содержимое нужного мне класса, с которым я уже и работаю.

    Цикл сохранения/загрузки, к примеру, звездной системы, такой:
    1. Создаем прокси для StarSystem, он в себя копирует информацию о системе.
    2. Когда доходим до списка объектов, для каждого из них создаем уже класс-прокси объекта и результирующий экземпляр уже заносится в прокси StarSystem.
    3. И т.д., пока сложные объекты не закончатся.
    4. В итоге, имеем матрешку из прокси-классов. С помощью JSONUtility она одной строчкой может быть переведена в json или восстановлена из него.
    5. Ну а сами сериализуемые классы должны уметь получать информацию из своих проксей при загрузке из сохранения.


    Собственно, недавно начал это дело реализовывать, т.ч. пока не знаю, насколько оно окажется удобным в использовании. Вполне возможно, многих подводных камней я не вижу, или они всплывут при усложнении игры (например, когда добавятся больше логичесих связей, придется проверять, чтобы не сериализовать одно и тоже по нескольку раз, получая при загрузке разные объекты. Поэтому у всего должны быть некие ID, для предупрежления дублирования).

    Раз уж написал, буду благодарен, если более опытные разработчики укажут на крупные грабли в таком подходе, если они есть.
    Ответ написан
    3 комментария
  • Как выучить английский начинающему программисту?

    Я просто начал смотреть фильмы на английском, с английскими же субтитрами. После нескольких сезонов какого-нибудь более менее нагруженного смыслом/диалогами сериала обращения к translate.google.com стали происходить значительно реже. Синтаксических/грамматических ошибок стало чуть меньше - нейросеть обучается, но все таки пока хуже, чем с лексическим запасом. В игры тоже стараюсь на английском играть. Документацию к технологиям тоже на английском. Полезно вслушиваться в тексты песен - улучшается распознавание речи.

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

    Пытаюсь (уже второй заход) осилить CLR via C#, J. Richter - это, надо сказать, посложнее просмотра фильмов будет. Но полезно в любом случае.
    Ответ написан
    Комментировать
  • Что делает этот код?

    Я так понял из какого-то примера взято. Все нормально, подразумевается, что и a и n объявлены.
    Ответ написан
    Комментировать
  • Люблю физику(механику) и математику - стоит ли попробовать себя в game dev и как?

    И в чем проблема? Придумываешь игру мечты (или модифицируешь понравившуюся идею), создаешь репозиторий на bitbucket.org, там есть вики - можешь заюзать в качестве диздока, начинаешь писать (unity3d или unreal engine 4). Я так уже пол года живу, не надоедает, конца-края не видно. Очень интересно, т.к. пока еще только на первый курс поступаю - все в новинку. Главное - не браться за что-то простое и казуальное, вроде flappy bird, арканоидов, карт, шариков - сразу за долгострой, по хардкору, чтоб ничего не понятно было и мозги закипели (поначалу). Сразу скука пройдет.
    P.S. тут нужно программирование любить, а не физику/математику. Вся физика/математика уже создателями движка написана.
    Ответ написан
  • Что можно делать с помощью терминала linux`a (или OS X)?

    Все. Чтобы это понять рекомендую поставить Arch Linux. Самое частое использование: конфигурирование всего и вся (начиная от настройки интернета, заканчивая настройкой каких-нибудь серверов, кластеров и т.д.), компиляция, установка программ, облачные хранилища (например зайти в папку гуглодиска и набрать grive - 10 секунд), системы контроля версий, включение всяких разных системных утилит и небольших программ (например калькулятор, есть даже консольный, в терминал выражение вбил, получил ответ) и т.д. Если есть сервер, стоящий, скажем, у тебя дома и есть слабенький мобильный интернет, и сервер внезапно начинает барахлить. Можно удаленно подключиться к нему работать с ним через терминал. Вообще, у всего, у чего нет экрана, терминал - единственный способ взаимодействия.
    Ответ написан
    Комментировать
  • На каких ЯП можно быстро начать писать интересные программы?

    С# + Unity3D = профит. Это про игры, ничего путного на сях без многолетнего обучения не написать.
    Ответ написан
  • Какие есть хорошие курсы или видеоуроки по С++?

    Обязательно книгу. Я сам еще только изучаю, могу порекомендовать "Лаптев... C++. Экспресс курс". Во всех видеокурсах учат только базовуму синтаксису, а в книге (даже экспресс курс, он на 400 страниц, а еще есть у этого же автора двухтомник по 1000 страниц, а еще есть Страуступ, да) учат намного большему. В видеокурсах рассказывают примерно так: есть такой вот оператор/функция..., он делает ... . А в книге рассказываются все нюансы, вариации и особенности работы, книга лучше структурирована, а еще ее можно читать где угодно и т.д. Например учат не только обращаться с двумерными массивами, но и что это такое и чем двумерные массивы в
    С++ отличаются от их реализациях в других языках и что из этого вытекает. Хотя, возможно, в платных курсах ситуация другая.
    Ответ написан
    Комментировать