Форум программистов, компьютерный форум, киберфорум
Программирование игр
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107

Библиотеки или собственный движок

20.03.2018, 10:01. Показов 3791. Ответов 73
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Раньше, я долго выбирал язык программирования для разработки игр. В итоге, несколько месяцев назад выбрал C++ и Java. Я выбирал долго между этими двумя языками, в итоге, решил учить оба. И сейчас не жалею.
Сейчас я более менее вспомнил основы C++ и изучил основы Java. Хочу что-то начать делать, и столкнулся с проблемой.
Дело в том, что я хочу разрабатывать звуковые игры. Такие же, как видео игры, но без графики. А все движки и библиотеки строятся на графике.
Вопрос:
Существуют ли библиотеки, где реализация игрока не через спрайт, а через объект с параметрами координатами и т.д.
Например класс игрока с координатами. Класс player, поля x, y, z И т.д.
Если нет, что можете посоветовать? То есть писать всё на графике, писать собственный движок или что ещё?
Написать собственный движок не проблема в плане звуковой игры, реализации менюшки. Но, я например хочу реализовать игру как Call Of Duty. Шутер. А игровые движки и библиотеки содержат физику и другие упрощающие элементы. Самостоятельно которые я не реализую по причине отсутствия знаний высшей математики.
Что можете посоветовать?
Заранее благодарен!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.03.2018, 10:01
Ответы с готовыми решениями:

Движок для игр SFML. Не получается подключить библиотеки
watch?v=CVYjVCuPuY4 Всё делаю как в видео. В итоге при попытке сомпилить пример:

DirectX или готовый игровой движок?
Хочу делать игры, поэтому изучаю DirectX. Но большинство говорят, что лучше использовать готовый движок, чтобы не париться. Мне же больше...

Написать свой движок или воспользоваться существующим?
Доброго времени суток, уважаемые форумчане! Работаю в игровом движке Unity3D уже полтора года. Изучил его сверху до низу. Также,...

73
9954 / 2956 / 497
Регистрация: 05.10.2013
Сообщений: 8,081
Записей в блоге: 242
27.03.2018, 11:54
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от 8Observer8 Посмотреть сообщение
В папке "lib" лежат две папки: "jars" и "natives". Их нужно подключить для этого нужно открыть правой кнопкой кликнуть по проекту, в выпадающем меню выбрать "Build Path", в новом выпадающем меню выбрать "Configure Build Path", открыть вкладку "Libraries"
Подключаем файлы из папки "jars". Нужно справа нажать кнопку "Add JARs...". Появится окно, где нужно добраться до папки "lib/jars", выделить все три файла, нажать кнопку "ОК"

Подключаем папку "natives". Для этого на вкладке "Libraries" раскрываем выпадающий список "JRE System Library", выбираем "Native library location", справа нажимаем кнопку "Edit", появляется окно, где нужно выбрать папку "lib/natives"

Нажимаем кнопку "Apply and Close"
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
27.03.2018, 16:51  [ТС]
Pavel_Srgv, угу, никогда, вообще никогда, просто читая первый том Хорстманна пускал всё почему-то через консоль, а так никогда.
0
9954 / 2956 / 497
Регистрация: 05.10.2013
Сообщений: 8,081
Записей в блоге: 242
27.03.2018, 16:55
jonikster, не забудьте отписаться, получилось ли у вас сделать, что я написал, я тогда напишу, что сделать дальше
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
27.03.2018, 17:04  [ТС]
8Observer8, сделал.
0
9954 / 2956 / 497
Регистрация: 05.10.2013
Сообщений: 8,081
Записей в блоге: 242
27.03.2018, 17:23
Нужно кликнуть правой кнопкой по папке "src", выбрать "New", выбрать "Package", ввести имя: audio, нажать кнопку "Finish"

Из архива Audio3D.zip из папки "src/audio" нужно скопировать все файлы: "bounce.wav", "AudioMaster.java", "Source.java", "Test.java" в папку "src/audio" вашего проекта (открыть папку вашего проекта можно правой кнопкой по имени проета, выбрать "Show In", выбрать "System Explorer"). Нажать F5 - для обновления файлов проекта.

Запустить проект. Eclipse предложит выбрать приложение. Нужно выбрать "Test - audio". Нажать ОК
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
27.03.2018, 17:48  [ТС]
Не, ошибка та же:
The selection cannot be launched, and there are no recent launches.
Мой знакомый сказал, что где-то в настройках проекта, нужно выбрать главный класс, но он сказал, что странно, что класс с мейном сам не запустился

Добавлено через 10 минут
Скажите, какой класс главный? Я просто выбиру в параметрах запуска

Добавлено через 4 минуты
Я открыл ваш проект и запустил класс с мейном. Всё сработало. Но переделанный проект я так и не запустил.
Звук идёт с права на лево и уходит.
0
Заблокирован
27.03.2018, 17:50
Цитата Сообщение от jonikster Посмотреть сообщение
но он сказал, что странно, что класс с мейном сам не запустился
Реальный мир-таки победил твоего знакомого Добро пожаловать в мир без IDE и прочих приблуд для домохозяек.
0
9954 / 2956 / 497
Регистрация: 05.10.2013
Сообщений: 8,081
Записей в блоге: 242
27.03.2018, 17:55
Цитата Сообщение от jonikster Посмотреть сообщение
Скажите, какой класс главный? Я просто выбиру в параметрах запуска
Метод main находится в Test.java

Цитата Сообщение от jonikster Посмотреть сообщение
Звук идёт с права на лево и уходит.
Я ещё какой-нибудь пример придумаю и скину для теста
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
27.03.2018, 18:15  [ТС]
Угу, я пока покапаю сам джавовский API, и постепенно буду идти к андроиду
0
136 / 131 / 43
Регистрация: 07.11.2017
Сообщений: 553
27.03.2018, 18:18
Цитата Сообщение от jonikster Посмотреть сообщение
и постепенно буду идти к андроиду
вы джаву освойте уверенно)
а уж потом к андроиду переходите.
а то вы так не научитесь толком ничего делать, сплошные костыли будут.
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
27.03.2018, 18:34  [ТС]
f3hler, без знания алгоритмов и чтения литературы по ним костыли и так будут.
0
9954 / 2956 / 497
Регистрация: 05.10.2013
Сообщений: 8,081
Записей в блоге: 242
28.03.2018, 09:39
Цитата Сообщение от jonikster Посмотреть сообщение
я пока покапаю сам джавовский API
Не лишним будет покопать openal-овский API в спецификации: openal-1.1-specification.pdf

Цитата Сообщение от jonikster Посмотреть сообщение
Звук идёт с права на лево и уходит.
В этом примере есть проблема. Как бы далеко источник звука не улетел бы от слушателя - всегда слышен звук. Это неправильно. Звук должен пропасть полностью при какой-то определённой дистанции между слушателем и источником. А до пропадания он должен затухать.

Нужно добавить в конструктор источника звука (файл Source.java) следующие строки:
Java
1
2
AL10.alSourcef(sourceId, AL10.AL_REFERENCE_DISTANCE, 3);
AL10.alSourcef(sourceId, AL10.AL_MAX_DISTANCE, 20);
Здесь устанавливается радиус 3, на котором звук имеет значение громкости равное 1. И дистанция = 20, до которой громкость звука падает линейно (после дистанции равной 20 звук от источника не слышен). Для задания линейной модели затухания звука нужно в файле Test.java в main добавить строку:
Java
1
AL10.alDistanceModel(AL11.AL_LINEAR_DISTANCE_CLAMPED);
Весь проект: DistanceFromSource.zip

Файлы, в которых были изменения:

Source.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package audio;
 
import org.lwjgl.openal.AL10;
 
public class Source {
    
    private int sourceId;
    
    public Source() {
        sourceId = AL10.alGenSources();
        
        AL10.alSourcef(sourceId, AL10.AL_REFERENCE_DISTANCE, 3);
        AL10.alSourcef(sourceId, AL10.AL_MAX_DISTANCE, 20);
    }
    
    public void play(int buffer) {
        stop();
        AL10.alSourcei(sourceId, AL10.AL_BUFFER, buffer);
        continuePlaying();
    }
 
    public void delete() {
        stop();
        AL10.alDeleteSources(sourceId);
    }
    
    public void pause() {
        AL10.alSourcePause(sourceId);
    }
    
    public void continuePlaying() {
        AL10.alSourcePlay(sourceId);
    }
    
    public void stop() {
        AL10.alSourceStop(sourceId);
    }
    
    public void setVelocity(float x, float y, float z) {
        AL10.alSource3f(sourceId, AL10.AL_VELOCITY, x, y, z);
    }
    
    public void setLooping(boolean loop) {
        AL10.alSourcei(sourceId, AL10.AL_LOOPING, loop ? AL10.AL_TRUE : AL10.AL_FALSE);
    }
    
    public boolean isPlaying() {
        return AL10.alGetSourcei(sourceId, AL10.AL_SOURCE_STATE) == AL10.AL_PLAYING;
    }
 
    public void setVolume(float volume) {
        AL10.alSourcef(sourceId, AL10.AL_GAIN, volume);
    }
    
    public void setPitch(float pitch) {
        AL10.alSourcef(sourceId, AL10.AL_PITCH, pitch);
    }
    
    public void setPosition(float x, float y, float z) {
        AL10.alSource3f(sourceId, AL10.AL_POSITION, x, y, z);
    }
}
Test.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package audio;
 
import java.io.IOException;
 
import org.lwjgl.openal.AL10;
import org.lwjgl.openal.AL11;
 
public class Test {
 
    public static void main(String[] args) throws IOException, InterruptedException {
 
        AudioMaster.init();
        AudioMaster.setListenerData(0, 0, 0);
        AL10.alDistanceModel(AL11.AL_LINEAR_DISTANCE_CLAMPED);
 
        int buffer = AudioMaster.loadSound("audio/bounce.wav");
        Source source = new Source();
        source.setLooping(true);
        source.play(buffer);
 
        float xPos = 8;
        source.setPosition(xPos, 0, 2);
 
        char c = ' ';
        while (c != 'q') {
 
            xPos -= 0.03f;
            source.setPosition(xPos, 0, 2);
            System.out.println(xPos);
            Thread.sleep(10);
        }
 
        source.delete();
        AudioMaster.cleanUp();
 
    }
 
}
0
 Аватар для COKPOWEHEU
4139 / 2717 / 433
Регистрация: 09.09.2017
Сообщений: 12,050
28.03.2018, 11:27
Цитата Сообщение от 8Observer8 Посмотреть сообщение
И дистанция = 20, до которой громкость звука падает линейно
Почему линейно а не обратно-квадратично? Быть не может чтобы это было сложно для машины, зато ближе к реальности.
0
9954 / 2956 / 497
Регистрация: 05.10.2013
Сообщений: 8,081
Записей в блоге: 242
28.03.2018, 12:42
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Почему линейно а не обратно-квадратично? Быть не может чтобы это было сложно для машины, зато ближе к реальности.
Чтобы в OpenAL сменить модель затухания c линейной на обратно-квадратичную, нужно вместо этой строки:
Java
1
AL10.alDistanceModel(AL11.AL_LINEAR_DISTANCE_CLAMPED);
Написать:
Java
1
AL10.alDistanceModel(AL10.AL_INVERSE_DISTANCE_CLAMPED);
Если нужно экспонинциальное затухание, то:
Java
1
AL10.alDistanceModel(AL11.AL_EXPONENT_DISTANCE_CLAMPED);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2018, 12:42

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

Собственный движок браузера
Подскажите,как написать собственный движок для браузера? т.е. в стандартных средствах vs,можно найти webbrowser,использующий технологию...

Собственный движок для форума
Мужики =) Хочу написать собственный движок для форума.Подскажите что нужно изучать и вообще с чего начинается разработка движка ? P.S...

Нужно ли писать собственный движок?
Здравствуйте, меня интересует вопрос, писать ли свой сайт вручную на пхп, или же все таки лучше ипользовать готовые cms типо joomla или...

Хочу написать собственный простенький 3d движок с генерацией карты
Я студент 4-го курса. Для защиты диплома нужно написать простенький, но свой 3d движок с генерацией карты. думаю написать на плюсах и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
74
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru