Отправляет email-рассылки с помощью сервиса Sendsay

За 2013-10-12

[prg] Re: Вывод сообщений в аудиоиграх was: не знаю, как сформулировать вопрос.

Приветствую всех.

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

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

> можно также выводить на speech api, но это не особенно радует, когда может
происходить
> несколько событий, которые необходимо воспроизвести, вироятно они будут друг
> друга перебивать.

Не будут, если вы организуете передачу сообщений должным образом. Например,
в MS SAPI поддерживаются уведомления о завершении синтеза очередного фрагмента
текста. Вам нужно будет отслеживать эти уведомления и передавать очередную фразу
для синтеза, а фразы предварительно накапливать в специально организованной очереди
сообщений.
Это наиболее употребительная схема работы с речевым синтезом. Если метод отвечающий
в API за синтез речи синхронный, то реализовывать очередь сообщений придется
вам; а если асинхронный, то, вероятно, такая очередь уже присутствует "внутри"
речевого API.

> на мой взгляд, было бы удобнее выводить эту информацию так, что бы скрин ридер
> мог ее озвучивать, причем, как автоматически, так и по требыванию пользователя,
> ну как редактор для чтения.
> и вот как это можно осуществить, что для этого использовать?
> ориентируясь, на популярные скрин ридеры nvda и jaws.

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

Есть два варианта реализации такого решения: один попроще, другой посложнее.
Вариант попроще основан на использовании специальных API, поддерживаемых JAWS
и NVDA.
При помощи этих API можно через скринридер озвучить любой текст и выполнить еще
несколько интересных действий.
Ссылки по теме:
http://win.tiflocomp.ru/docs/jfwapi.php
http://win.tiflocomp.ru/docs/jfwapi2.php
http://win.tiflocomp.ru/docs/jfwapi3.php

http://win.tiflocomp.ru/docs/free/nvda_api_review.php

Второй вариант -- это написание полноценного сервера MSAA, реализующего поддержку
доступности в вашей игре. Такой вариант будет работать с любым уважающим себя
скринридером.
Однако это требует хорошего знания и опыта разработки COM и OLE-Automation.

Успехов. Анатолий.

   "i_chay" 2013-10-12 18:00:19 (#2845751)

[prg] право на использование в игре музыки, юридический вопрос.

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

С уважением: Максим Calculator.
calculator.***@m*****.ru
http://www.twitter.com/calculatorspb/

   2013-10-12 16:37:04 (#2845683)

[prg] формат файлов с точки зрения ресурсоемкости.

здравствуйте.
планирую использовать в своем проекте звуковые файйлы различного содержания,
возможно их будет достаточно много.
хочется подобрать такой формат, что бы имелось и качество и размер по меньше.
вроди бы я слышал, что ogg подойдет, так ли это?
или всетаки mp3?
заранее благодарю.

С уважением: Максим Calculator.
calculator.***@m*****.ru
http://www.twitter.com/calculatorspb/

   2013-10-12 16:33:08 (#2845679)

[prg] не знаю, как сформулировать вопрос.

здравствуйте.
попытаюсь его сформулировать.
представим такую ситуацию:
есть аудио игра, в ней есть карта, карта может содержать описание объектов, например
покасившееся дерево.
как можно выводить эту информацию пользователю?
конешно можно сделать так, что бы по нажатию клавиши проговаривалось заранее
записанное в файл описание, но это давольно много будет занимать памяти.
можно также выводить на speech api, но это не особенно радует, когда может происходить
несколько событий, которые необходимо воспроизвести, вироятно они будут друг
друга перебивать.
на мой взгляд, было бы удобнее выводить эту информацию так, что бы скрин ридер
мог ее озвучивать, причем, как автоматически, так и по требыванию пользователя,
ну как редактор для чтения.
и вот как это можно осуществить, что для этого использовать?
ориентируясь, на популярные скрин ридеры nvda и jaws.
заранее благодарю за ответ.
С уважением: Максим Calculator.
calculator.***@m*****.ru
http://www.twitter.com/calculatorspb/

   2013-10-12 16:30:58 (#2845678)

[prg] Re: замена строки в фале c++ .

Здравствуйте.
Вопрос пока снимается.
12.10.2013 0:31, дима пишет:
> помогите, пожалуйста.
> Программа должна заменить все вхождения строки в файле на другую строку
> и вывести результат в другой файл.
> При этом для чтения файла пользоваться стандартными средствами си
> (fprintf, fscanf)
> каждая строка должна быть преобразована к std::string.
> для замены пользоваться методами std::string;
>
> #include<string >
> #include<cstring>
> #include<stdio.h>
> void replace_strings(char *what, char *repl, FILE *in, FILE *out)
> {
> char str_1 [256] ={0};
> std::string what_ =what;
> std::string repl_ =repl;
> bool ok =false;
> for (int i =0; str_1[i] !='\n'; i++)
> /* понимаю, что здесь ошибка, но как правильно?*/
>
> {
> fscanf (in, "%c", &str_1[i]);
> }
> std::string str_2 =str_1;
> if (str_2.compare(what_) ==0)
> {
> ok =true;
> }
> if (ok)
> {
> std::string str_3 =repl_;
> swap(str_2, str_3);
> char *p =new char [str_2.length() +1];
> std::strcpy(p, str_2.c_str());
> for (int i =0; i < str_2.length() +1; i++)
> {
> fprintf(out, "%c", p[i]);
> }
> fprintf (out, "\n");
> delete(p);
> }
> else
> {
> char *p =new char [str_2.length() +1];
> std::strcpy(p,str_2.c_str());
> for (int i =0; i < str_2.length() +1; i++)
> {
> fprintf(out, "%c", p[i]);
> }
> fprintf (out, "\n");
> delete(p);
>
> }
>
> fclose(in);
> fclose(out);
>
> }
> Предполагается, что имя входного и выходного файла будут переданы main в
> качестве аргументов командной строки.
> Заранее спасибо за ответ.
>

   2013-10-12 13:06:00 (#2845529)