Пфф... Какой Ruby? Какой Python? Вы что! Эти языки, в первую очередь, мейнстрим в стартапах(Ruby), крупных компаниях(Python) и научных проеках(Python). Ни в одной из этих областей, человеку написавшему только формочку делать нечего. Его, извините за выражение, даже на порог не пустят. А процент контор, которые готовы брать людей с такими знаниями и использующие эти языки стремится к 0.
Что нужно делать? Учить PHP, JS, HTML, CSS и идти работать куда возьмут. Писать сайты. Через год, когда освоишься в IT, сам выберешь что тебе нужно.
Из математики? Разве что теорию графов.
Остальное относится к Software Engineering и Computer Science. Одна из первых ссылок в гугле по запросу "Теория трансляторов" www.softcraft.ru/translat/lect/t01-03.shtml Там в качестве примера как-раз приводится разбор арифметического выражения.
Вообще это все часть более большой области знаний, которая описывает то, как написать свой язык программирования и компилятор к нему. Построение продвинутого калькулятора - лишь очень малая часть.
На самом деле 60 FPS, это тестовое значение. На 30 происходит примерно тоже самое. Как и на 100.
Проверял флешку на компе с 4-х ядерным процессором, обычным плеером и высоким приоритетом. Эффект тот же.
По второму пункту. Похоже в www.realmofthemadgod.com/ как-раз и используется метод с менее равномерным фоном. Как вариант, хочу попробовать не жестко привязывать камеру к игроку.
Возможно, но во флеше координаты спрайтов имеют тип Number — число с плавающей точкой. По какому принципу он обрабатывает эти числа, при отрисовке объекта мне не известно. Вот как у меня это реализовано:
matrix.translate(getLocalX(j * LevelView.CELL_WIDTH), getLocalY(i * LevelView.CELL_HEIGHT));
camera.draw(_level.getCell(i, j), matrix);
Насчет персонажа. Я пробовал в updateCameraPosition() просто смещать каждый update камеру на 2 пикселя вниз, то есть абсолютно без привязки к персонажу и числам с плавающей точкой. Эффект сохраняется.
Хотя думаю называть меня флешером не совсем корректно. Потому что я занимаюсь только программированием под данную платформу. Больше подходит определение AS 3 программист.
Постараюсь ответить по-порядку. Как я понимаю, речь идет о значений которым инициализируется таймер?
_timer = new Timer(1000 / FPS); Да, в этом месте он его округляет, но делает это один раз, при инициализации. Так что это никаким образом не должно влиять на отображение картинки на экране.
Про синхронизацию сказать ничего не могу. Собственно это и послужило одной из причин возникновения данного вопроса.
Переменная deltaTime во втором пункте как-раз и определяет время вызова таймера. Вот примерный трейс её значений:
0.034
0.016
0.016
0.028
0.016
0.016
0.018
0.016
0.017
0.015
На самом деле, раньше я как-раз всегда и использовал событие входа в кадр, но на каком-то из флешовых форумов, или даже на хабре, в статье про игровые циклы, прочитал, что гораздо лучше использовать таймер и для координат вычислять их новое значение с использованием разницы между двумя вызовами callback'a.
Насчет перерисовки. Скорее всего так и есть, однако если gameLoop вызывать не по таймеру, а по событию входа в кадр, эффект сохраняется.
Каждый апдейт view игры определяет те объекты и элементы текстуры, которые попадают в поле зрения камеры(прямоугольник 800 на 600) и отрисовывает их на битмапе. Каждый апдейт обновляется ВСЯ игровая модель.
Извините, но я не совсем понял, что именно в моём коде отрисовывает объекты которые не попадают в поле зрения?
Насчет прямоугольника. Раньше я именно так и делал. Однако с помощью такого метода достаточно тяжело, без танцев с бубном, держать большие игровые уровни. Выбранный же мной метод позволяет манипулировать уровнями абсолютно любого размера, для этого всего-лишь необходимо реализовать динамическую подгрузку по частям массива, отвечающего за расположение объектов на уровне. Однако, даже без этого, игра спокойно держит уровни 250 000 на 250 000 тысяч пикселй(разумеется это зависит от свободной оперативной памяти)
Насчет прямоугольника. Как я понимаю, вы предлагаете держать один большой прямоугольник с добавленными на него всеми игровыми объектами? В данном случае о больших уровнях не может быть и речи. И в данном случае, как-раз таки, будут перерисовываться абсолютно все объекты, которые на него добавлены.
На самом деле, раньше я всегда и пользовался дефолтным списком отображения, но под влиянием статей в интернете, и тестами сравнения производительности дефолтного метода, по сравнению с битмапами, я решил попробовать битмапы.
В первую очередь я студент, а во-вторую да, флешер. По крайней мере я пишу на нём полтора года. В основном для себя, но реализовывал и коммерческие проекты.
Данной игрой я пытался открыть для себя «новые горизонты» флеша, использовать не совсем стандартные методы. И вот, наткнулся на данную проблему.
P.S. В www.realmofthemadgod.com/ наблюдается тот же эффект. Если сфокусировать взгляд на каком-то элементе покрытия, то при перемещении видно что оно движется не плавно. Я уже начал думать, что проблема в моих глазах, однако у друзей то же самое.
Дело в том, что дело не в fps. Я пробовал выставлять его в диапазоне от 30 до 200, разницы практически не видно.
Насчет лагов. Под ними я понимаю небольшие скачки по 2-3 пикселя которые происходят 2-3 раза за 2 секнуды, и то не всегда. Попробуйте сфокусировать взгляд на камне, к примеру, и проехать по диагонали. Будет заметно, что персонаж перемещается не равномерно. Или я придираюсь и такие эффекты — норма?
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Что нужно делать? Учить PHP, JS, HTML, CSS и идти работать куда возьмут. Писать сайты. Через год, когда освоишься в IT, сам выберешь что тебе нужно.