Пятница, 19 Апреля 2024, 16:22

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » afq [893]
Результаты поиска
afqДата: Суббота, 21 Июля 2018, 14:05 | Сообщение # 721 | Тема: Объясните пожалуйста?? :)
Разработчик
Сейчас нет на сайте
Lenar_Asdera, а на сервере у тебя тоже будет на c# программа написана? Может ты лучше сделаешь для игры в локальной сети. Так проблем будет меньше, и можно будет играть по сети.
afqДата: Суббота, 21 Июля 2018, 14:02 | Сообщение # 722 | Тема: воспроизведение игры в окне редактора движка
Разработчик
Сейчас нет на сайте
GC-Vic, martuk, DivES, а что если это не плеер, ну к примеру вот о чём подумал. Но назовём его плеером, чтобы было понятней о чём я пишу. В плеере есть такой код, получить указатель на библиотеку динамическую и выполнить код. А код проекта, если надо проверить как работает игра в игровом редакторе, то вся игра компилируется в библиотеку. Может так получиться?
afqДата: Суббота, 21 Июля 2018, 01:49 | Сообщение # 723 | Тема: воспроизведение игры в окне редактора движка
Разработчик
Сейчас нет на сайте
DivES, ага, а это интересно, может так и есть в других движках. Чтож буду иметь ввиду, спасибо.
afqДата: Суббота, 21 Июля 2018, 00:35 | Сообщение # 724 | Тема: воспроизведение игры в окне редактора движка
Разработчик
Сейчас нет на сайте
GC-Vic, ну моё пока ещё трудно назвать движок, но я бы хотел узнать как вообще такое делают. Как такое возможно вообще, не могу представить. Например я на qt буду делать движок. Но варианты не обязательно должны быть на qt. какие вообще способы есть?
afqДата: Суббота, 21 Июля 2018, 00:05 | Сообщение # 725 | Тема: воспроизведение игры в окне редактора движка
Разработчик
Сейчас нет на сайте
Как так делают? Видел в unity, что в редакторе можно запустить проект игры и играть в самом редакторе, то же самое видел и unreal engine, как такое можно сделать, не пойму?
afqДата: Вторник, 17 Июля 2018, 13:54 | Сообщение # 726 | Тема: Исходники игр для новичка
Разработчик
Сейчас нет на сайте
orkons, делал шахматы на unity3d, там человечки ходили и атаковали. Сделал правила все, кроме этого, пешка когда доходит до края доски ( нужно выбрать на какую фигуру менять пешку ). Хотел же выложить исходники, чтобы кто нибудь другой по желанию закончил проект. Но получилось так, что исходники были удалены.
afqДата: Воскресенье, 15 Июля 2018, 23:06 | Сообщение # 727 | Тема: glDrawArrays завершает программу с ошибкой
Разработчик
Сейчас нет на сайте
DivES, да, y отвечает за вертикаль, x за горизонталь, чтобы в одной строке разместить две координаты x и y, нужно две строки писать. И всё это в один массив наполняется.

Добавлено (15 Июля 2018, 21:11)
---------------------------------------------
DivES, я знаешь что сделал, и получилось, хаха, щас увидишь, только я думал что хоть с этими функциями будет прозрачный фон, ан нет, вместо прозрачности, черный цвет.

Код

    vertices = new int [ 8192 ];
    if ( !vertices ) {
  printf ( "@!@\n" );
    }
#if 1
    for ( int y = 0, i = 0; y < height; y++ ) {
  for ( int x = 0; x < width; i += 2, x++ ) {
   vertices[ i + 0 ] = x;
   vertices[ i + 1 ] = y;
  }
    }

Добавлено (15 Июля 2018, 22:11)
---------------------------------------------
DivES, Всё, получилось, чтобы была прозрачность, нужно дописать две функции, и вот какие.

Код

glEnable ( GL_BLEND );
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

Добавлено (15 Июля 2018, 23:06)
---------------------------------------------
На снимке видно, два изображения головы и квадрат с прозрачностью.

afqДата: Воскресенье, 15 Июля 2018, 20:11 | Сообщение # 728 | Тема: glDrawArrays завершает программу с ошибкой
Разработчик
Сейчас нет на сайте
Вот код, здесь загружается рисунок и создаётся координаты vertex для составления квадрата, на котором каждый пиксель будет своего цвета. Я как начал использовать glColorPointer, так всегда завершается с ошибкой, что не так, вот код.
Код

#include "Sprite.hpp"

Sprite::Sprite ( long pos )
{
    //init_texture ( );
}

Sprite::Sprite ( )
{
}

void Sprite::load ( long pos )
{
    std::FILE *fd = std::fopen ( "data", "r" );
    if ( !fd ) {
  std::perror ( "sprite load" );
  exit ( EXIT_FAILURE );
    }

    int ret;
    ret = std::fseek ( fd, pos, SEEK_SET );
    if ( ret == -1 ) {
  perror ( "fseek\n" );
    }

    ret = std::fread ( &width, sizeof ( unsigned int ), 1, fd );
    if ( ret == -1 ) {
  perror ( "width\n" );
    }
    ret = std::fread ( &height, sizeof ( unsigned int ), 1, fd );
    if ( ret == -1 ) {
  perror ( "heigth\n" );
    }
    ret = std::fread ( &max_pixels, sizeof ( unsigned int ), 1, fd );
    if ( ret == -1 ) {
  perror ( "max_pixels\n" );
    }

    pixels = new unsigned char [ max_pixels ];
    if ( !pixels ) {
  printf (" !@!\n" );
    }

    ret = std::fread ( &pixels[0] , sizeof ( unsigned char ), max_pixels, fd );
    if ( ret == -1 ) {
  perror ( "pixels\n" );
    }

    vertices = new int [ max_pixels ];
    if ( !vertices ) {
  printf ( "@!@\n" );
    }
    for ( int y = 0; y < 64; y++ ) {
  for ( int x = 0, i = 0; x < 64; i += 2, x++ ) {
   vertices[ 0 + ( y * ( 64 - 1 ) + i ) ] = x;
   vertices[ 1 + ( y * ( 64 - 1 ) + i ) ] = y;
  }
    }

    std::fclose ( fd );
}
void Sprite::render ( )
{

    glPushMatrix ( );

#if 0
    glFrontFace ( GL_CCW );
    glEnable ( GL_CULL_FACE );
    glCullFace ( GL_BACK );
#endif

    glEnableClientState ( GL_VERTEX_ARRAY );
    glEnableClientState ( GL_COLOR_ARRAY );

    glVertexPointer ( 2, GL_INT, 0, vertices );
    glColorPointer ( 4, GL_UNSIGNED_BYTE, 0, pixels );
//    glDrawElements ( GL_POINTS, indices.length, GL_UNSIGNED_BYTE, indices.v );
    glDrawArrays ( GL_POINTS, 0, 4096 );

    glDisableClientState ( GL_VERTEX_ARRAY );
    glDisableClientState ( GL_COLOR_ARRAY );

    glDisable ( GL_CULL_FACE );
//    glTranslatef ( 0, 0, -10 );

    glPopMatrix ( );

    glFlush ( );
}
void Sprite::init_texture ( )
{
}



Добавлено (15 Июля 2018, 18:37)
---------------------------------------------
Отредактировал код, щас выводит изображение, но оно не такое, как на картинке. Что же не так. Может неправильно построил вершины. Ну там где
Код

for ( int y = 0; y < 64; y++ ) {
  for ( int x = 0, i = 0; x < 64; i += 2, x++ ) {
   vertices[ 0 + ( y * ( 64 - 1 )  + i ) ] = x;
   vertices[ 1 + ( y * ( 64 - 1 ) + i ) ] = y;
  }
    }

Добавлено (15 Июля 2018, 20:11)
---------------------------------------------
Выводиться какая то билиберда, только не много видны некоторые пиксели, похожие.

Сообщение отредактировал afq - Воскресенье, 15 Июля 2018, 20:10
afqДата: Среда, 11 Июля 2018, 17:58 | Сообщение # 729 | Тема: Вывод спрайта и его прозрачность
Разработчик
Сейчас нет на сайте
Snake174, давай на java. Весь код? Сюда? Или на github?
afqДата: Среда, 11 Июля 2018, 12:14 | Сообщение # 730 | Тема: Вывод спрайта и его прозрачность
Разработчик
Сейчас нет на сайте
Snake174, я так понел ты с gl_Begin делал, у меня так тоже с прозрачностью рисовался. Но на нетбуке тормозило если несколько рисунков надо было нарисовать, потому что пока в цикле все поинты нарисуются, пройдет время.
afqДата: Вторник, 03 Июля 2018, 11:08 | Сообщение # 731 | Тема: Вывод спрайта и его прозрачность
Разработчик
Сейчас нет на сайте
Snake174, можешь снимок предоставить прозрачного спрайта?
afqДата: Вторник, 03 Июля 2018, 08:07 | Сообщение # 732 | Тема: Вывод спрайта и его прозрачность
Разработчик
Сейчас нет на сайте
Snake174, я тоже раньше в int помещал все четыре цвета. А потом понел что можно по одному ( unsigned char ) для каждого цвета писать в массив, а потом за раз записать в data файл весь массив. И также прочесть одним разом без цикла. Я сегодня поменял и теперь за один раз считывает все цвета из data файла. Сначала размеры считываются, потом количество пикселей, а потом за раз требуемая длина, так лучше.

Добавлено (03 Июля 2018, 08:07)
---------------------------------------------
Snake174, а почему ты показываешь старый проект? Как там рисунок отображается, с прозрачностью?

afqДата: Вторник, 03 Июля 2018, 07:12 | Сообщение # 733 | Тема: Вывод спрайта и его прозрачность
Разработчик
Сейчас нет на сайте
Snake174, да ты совершенно прав. Я это поменял в последний момент, подумал что в конструкторе лучше не создавать ничего, потому как если выясниться что файл отсутствует или другая ошибка, то освободить память я не смогу, потому что конструктор не выполнится до конца, а отсюда и то, что деструктор тогда не вызовется. Я init_texture перенес без задней мысли из конструктора в начало фунцкии и забыл о приоритетах, но если поместить эту функцию в конец, то будет работать, но так как я написал в начале темы, то есть без прозрачности и glOrtho.
afqДата: Вторник, 03 Июля 2018, 06:18 | Сообщение # 734 | Тема: Вывод спрайта и его прозрачность
Разработчик
Сейчас нет на сайте
Никак не могу понять, можно ли сделать прозрачность спрайта без шейдеров, а то я никак не могу понять как шейдеры использовать, почему нужно то и то писать и где вся инфа по шейдерам есть, раз уж на то пошло.

Проблема вот в чем. Далее будет предоставлен код, это для 2d. Если я не устанавливаю glOrtho, то спрайт рисуется, но большого размера. Если установлю glOrtho, то рисуется только черный квадрат. Ещё была функция какая то, уже не помню как называется, он ещё двигается с помощью glRasterpos, она тоже рисует там где должно быть прозрачно, черным цветом. Из-за того, что не устанавливаю glortho, приходится координаты ставить в 0, 1 и тому подобное. Вот код.
Код

#include "Sprite.hpp"

Sprite::Sprite ( )
{
}

void Sprite::load ( long pos )
{
    init_texture ( );
    std::FILE *fd = std::fopen ( "data", "r" );
    if ( !fd ) {
  std::perror ( "sprite load" );
  exit ( EXIT_FAILURE );
    }

    std::fseek ( fd, pos, SEEK_SET );

    std::fread ( &width, sizeof ( unsigned int ), 1, fd );
    std::fread ( &height, sizeof ( unsigned int ), 1, fd );
    std::fread ( &max_pixels, sizeof ( unsigned int ), 1, fd );

    pixels = new unsigned char [ max_pixels ];

//    for ( int i = 0; i < max_pixels; i++ ) {
  std::fread ( &pixels[0] , sizeof ( unsigned char ), max_pixels, fd );
//    }

#if 0
    vertices = new float [ 8 ] {
  0, 64,
  0, 0,
  64, 0,
  64, 64
    };
    texture = new float [ 8 ] {
  64, 0,
  0, 0,
  0, 64,
  64, 64
    };
#endif
#if 1
    vertices = new float [ 8 ] {
  0, 1,
  0, 0,
  1, 0,
  1, 1
    };
    texture = new float [ 8 ] {
  1, 0,
  0, 0,
  0, 1,
  1, 1
    };
#endif

    indices.length = 6;
    indices.v = new unsigned char [ indices.length ] {
  0, 1, 2,
  0, 2, 3
    };

    std::fclose ( fd );
}
void Sprite::render ( )
{
#if 1
    glEnable ( GL_TEXTURE_2D );
    glBindTexture ( GL_TEXTURE_2D, tex );

    glPushMatrix ( );

#if 0
    glFrontFace ( GL_CCW );
    glEnable ( GL_CULL_FACE );
    glCullFace ( GL_BACK );
#endif

    glEnableClientState ( GL_VERTEX_ARRAY );
    glEnableClientState ( GL_TEXTURE_COORD_ARRAY );

    glVertexPointer ( 2, GL_FLOAT, 0, vertices );
    glTexCoordPointer ( 2, GL_FLOAT, 0, texture );
    glDrawElements ( GL_TRIANGLES, indices.length, GL_UNSIGNED_BYTE, indices.v );

    glDisableClientState ( GL_VERTEX_ARRAY );
    glDisableClientState ( GL_TEXTURE_COORD_ARRAY );

    glDisable ( GL_CULL_FACE );
    glTranslatef ( 0, 0, 2 );

    glPopMatrix ( );

    glFlush ( );
    glDisable ( GL_TEXTURE_2D );
#endif
}
void Sprite::init_texture ( )
{
    glGenTextures ( 1, &tex );
    glBindTexture ( GL_TEXTURE_2D, tex );

    glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
    glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
    glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER );
    glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER );
    glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_BORDER );

    glTexImage2D ( GL_TEXTURE_2D,
   0,
   GL_RGBA,
   width,
   height,
   0,
   GL_RGBA,
   GL_UNSIGNED_BYTE,
   pixels );

    glEnable ( GL_TEXTURE_2D );

}
afqДата: Вторник, 26 Июня 2018, 19:17 | Сообщение # 735 | Тема: Композитор, друг, зайди на минутку:)
Разработчик
Сейчас нет на сайте
Kzunec, как так рисовать научиться, хотя бы похоже на это?
afqДата: Вторник, 26 Июня 2018, 13:11 | Сообщение # 736 | Тема: [3D] Ранний доступ Fated Kingdom - [цифровая настольная игр]
Разработчик
Сейчас нет на сайте
drcrack, а что разве unity для windows на dx? Разве не всё на opengl? Откуда тебе знать что они использовали для разработки, шейдеры или либы?

Добавлено (26 Июня 2018, 13:11)
---------------------------------------------
drcrack, у него же в проекте написано, что api opengl, ты явно гонишь.

afqДата: Вторник, 26 Июня 2018, 12:02 | Сообщение # 737 | Тема: [3D] Ранний доступ Fated Kingdom - [цифровая настольная игр]
Разработчик
Сейчас нет на сайте
drcrack, так движок unity3d, чё там адаптировать?

Добавлено (26 Июня 2018, 12:02)
---------------------------------------------
GameLiberty, видел обзор одного пользователя, и он вроде бы пишет что нет серверов онлайн, они будут или пользователь сам создаёт сервер, но тогда вроде всё равно должен быть сервер внешний, не пользовательский.

afqДата: Суббота, 23 Июня 2018, 23:51 | Сообщение # 738 | Тема: [3D] Ранний доступ Fated Kingdom - [цифровая настольная игр]
Разработчик
Сейчас нет на сайте
GameLiberty, а почему только для windows? Unity же для windows, linux, macos.
afqДата: Понедельник, 18 Июня 2018, 06:48 | Сообщение # 739 | Тема: Посчитать хеш
Разработчик
Сейчас нет на сайте
drcrack, если файлы будут небольших размеров, то можно один раз функцией считать размер файла, и указатель установить на середину буфера, и передать этот указатель в поточную функцию. Не помню как точно, но на поток тоже нужно время, чтобы его создать. А так, в двух потока можно будет быстрее буфер обработать. Но надо дождаться окончания завершения потока, а так как фунции для ожидания потока нет, то либо писать так,
Код

while ( thread ) continue;

либо создать процесс, тогда можно будет ожидать его waitpid. Глобальная переменная будет глобальной для двух процессов же? Я помню что при создании процесса происходит копирование при записи, что означает что данные( переменные тоже ) считаются общими, пока не произвелась запись, в таком случае произойдёт копия всех данных для процесса. И вот я не помню, пробывал или нет, останется ли глобальная переменная для двух процессов?
afqДата: Понедельник, 18 Июня 2018, 04:22 | Сообщение # 740 | Тема: Посчитать хеш
Разработчик
Сейчас нет на сайте
maksim1221232, возможно время ещё занимает выделение памяти, попробуй получить размер файла, и от этого уже знать сколько нужно выделить. Так у тебя проблем не будет с любым размеров файла.

Добавлено (18 Июня 2018, 04:19)
---------------------------------------------
Но если размеры файлов очень большие могут быть, то циклическое считывание файла по 512 мб хватит.

Добавлено (18 Июня 2018, 04:22)
---------------------------------------------
falcoware, а точно нужен таймер, можно же использовать поточную функцию. Посчитал размер файла, один поток одну часть обрабатывает, другой поток другую.

Форум игроделов » Записи участника » afq [893]
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг