Выбирай OpenGL ) если кто говорит что DX лучше, не верь, id software все свои игры на OpenGL делает (хотя собираются на DX переходить), а это такие игры как Doom III, Rage... ну и для мобильных устройств тоже не плохо. кстати где-то про языки говорилось, я вот когда-то давно тоже учил С++ и думал что я его хорошо уже знаю, но потом начал учить системное программирование на Си и понял что нифига не знал )) да и потом когда что-то выучил, желание писать используя всякие новые штуки от С++ (что-то вроде ostream и их новые операторы >>, <<) вообще отпало, сейчас программирую на С++ но в Си стиле и только от С++ там осталось классы и иногда шаблоны использую), ну это чисто мой выбор и мне так больше нравится
вот кстати интересно, а много сейчас компьютеров поддерживают геометрические шейдеры, можно ли уже их активно применять? кстати на счет того что такое SDL - это кроссплатформенный API для всякого I/O, создание окон, есть еще много чего там, но я только это использую, вообще советую, удобно и производительность никак не падает.
Сообщение отредактировал Xakep - Вторник, 19 Февраля 2013, 21:48
Решил назвать язык прогарммирования vit - это древний славянский бог хранения информации ) недавно осенило как сделать возможность писать под мобильные платформы (Android, iOS), так что в скором времени может выйдет IDE с этим языком, выглядит сейчас IDE так: http://s001.radikal.ru/i196/1302/68/cf93b2b62454.png
IDE делаю на Lazarus.
Сообщение отредактировал Xakep - Вторник, 19 Февраля 2013, 21:11
в общем узнал что интересовало, если кому интересно: Пишите письмо на steamworks@valvesoftware.com вместе с ссылкой на скачивание игры, описанием, предполагаемой стоимостью. Игрушку оценивают и решают продавать или нет. Вскоре вы получите ответное письмо. Если Steamworks согласится, ваша игра вскоре появится на steam.
не совсем понятно это: "Это и всё, если ваша игра, проходит, то есть большинство пользователей "ЗА", то с вами связывается Steam и уже обсуждается цена и другие нюансы." и еще инересно, возможно ли публиковать не в Greenlight приложение, и если да, то как? P.S. естественно если полекь серьезный
ооп хоть как влияет на производительность, она снижается при использовании всяких там классов, хотя с нынешним прогрессом даже и не заметишь, особенно в php ) вообще классы выделаются в куче а не в стэке, поэтому и менее эффективное использование памяти идет. Да и вообще не понимаю нафиг ооп нужно в php?
2AGENTX001, может для оптимизации, ну Image - это что-то вроде текстуры, и это просто массив который не рендерится, а Sprite это статический объект без какой-либо анимации, а Animation уже с анмацией, естественное с анимацией будет жрать больше памяти и выполнять лишнии команды. Хотя название странное, лучше бы AnimSprite ну или как-то так, хотя может я не правильно понимаю назначение этого объекта))
Я пробовал ставить под AMD и даже поставил, но смысла нету, ничего на нем не работает, самое главное не заработал xCode и Clang, сейчас скоро буду пробовать ставить на Intel.
вот как раз этим сейчас заниматься буду, только скорее больше буду портировать OpenGL, SDL и прочее, WindowsAPI больше для написание приложений нужен, хотя в принципе его можно содрать с Delphi, dglOpenGL так заработал, с небольшими корректировками ) OpenGL уже есть, и сейчас еще пишу математическую библиотку
Сообщение отредактировал Xakep - Среда, 06 Февраля 2013, 17:05
2AGENTX001, спасибо, вот не знаю выкладывать его потом в общий доступ или что дальше с ним делать, или дальше продолжать работать и написать среду разработки для языка
ну можно использовать тип string использовать sprintf можнт замедлить программу, из-за парсинга формата строки, хотя исопльзовать string тоже может, скажем там не самя лушая реализация строки ))
Всем привет, в начале 2012го года начал писать свой язык программирования just for fun :). Собственное сейчас уже почти закончил работу над ним, и в скором времени приступлю к написанию всяких библиотек и попробую написать на нем игру ) Некоторые особенности нового яп: массивы определяются таким образом: [2 x int]; [2 x [5 x float]], убрал возможность писать в диапазоне (3..5) потому-что для таких массивов нужно высчитывать отдельно индекс и следовательно падает производительность. Так же есть новый тип данных для работы с SIMD - векторы, определяются таким образом: <4 x int>; <16 x float>; двумерных векторов не бывает. Так например намного легче раюотать с SIMD ежели в C++, к примеру сложение 2х векторов:
Код
def main() a, b : <4 x int>; a += b; // выполняется сложение через SIMD end;
для инициализации массивов можно использовать вот такую шляпу: arr = [2, 4, 6]; или arr = [2, 4, ...]; или arr = [..., 4, 6]; там где стоит ... автоматичеcки подставит значения из массива, бывает удобно в некоторых случаях, так же и с векторами только вместо квадратных скобок нужно использовать угловатые. Из особенностей так же можно выделить возможность создавать перегрузку операторов. Пример перегрузки для массивов:
def main() a, b : vec3i; a += b; // в данном случае ошибки не будет, а вызовется перегруженный оператор, который сложит по элементно массивы end.
с унарными так же, также есть оператор [], assign и assign[]; так к примеру можно сделать хэштаблицу с обращением к элементам по строке к примеру map['test'] := 10; так например тип string - это просто структура такого вида:
Код
struct string data : [char]; length : int; end;
Сам язык программирования писал специально для разработки игр. Для генерации и оптимизации исполняемого файла генерируется LLVMIR (промежуточное представление кода LLVM) и с помощью LLVM оптимизируется и генерируется ASM и исполняемый файлы.
С удовольствием послушаю ваши пожелания и предложения ) На данный момент осталось исправить пару багов, и оптимизировать модульность.
P.S. Забыл упомянуть, язык кроссплатформенный и работает на Windows, Linux, Mac OS. Компилятор пишу на C++ в G++ и MinGW (порт g++ на Windows) P.P.S. Возможно будет компиляция под мобильные платформы iOS, Android;
Update: портировал модуль OpenGL версии 4.2. и попробовал написать простенькое приложение, результат можно увидеть на скриншоте:
Несколько примеров кода:
перемножение 2х матриц 4x4 с SIMD векторизацией:
Код
def mmul (const m1, m2: mat4f): mat4 inline // res : mat4; for i : int = 0, 3 do ci : <4 x float> = m1[i][0]*m2[0];
for j : int = 0, 3 do ci += m[i][j]*m2[j] end;
res[i] = ci; end;
return res; end;
перевод числа в строку:
Код
def int2str (val : int) : string x,v,l : int = 0; v = val; // if (val == 0) then return "0"; end; while (v != 0) do l++; v /= 10; end;
len : int = l; string res = new string(len+1);
while (l != 0) do x = val % 10; l--; res.data[l] = x+'0'; val /= 10; end;
data[len] = #0; return res; end;
декодирования UTF8:
Код
def decodeUTF8 (uc : wchar) : string res : string; // if (uc == 0x0040) then return ""; end; if (uc >= 0xD800) && (uc <= 0xDFFF) then return ""; end; // if (uc > 0x1) && (uc <= 0x007F) then res += Char(uc); elsif (uc > 0x007F) && (uc <= 0x07FF) then b1 : char = 0xC0 | (uc & 0x7C0) >> 6; b2 : char = 0x80 | (uc & 0x3F);
нафиг свою обертку писать, смысла нету практически, особенно для игр, тупо окно и работа с устройствами ввода/вывода, есть хорошая библиотека SDL можно прикрутить как OpenGL так и DirectX, есть еще GLFW для OpenGL хорошо тоже подходит, а вот glut не советю использовать, там даже unicode не поддерживается. для работы с ttf можно так же исопльзовать SDL но лучше взять FTGL очень удобная вещица, работает через FreeType, так что он тоже пригодится. ttf - это обычнй файл шрифтов.
если нужно сглаживание то можно через альфа на перекрытие делать, я делал, выходило что-то вроде этого:
если вручную смешивать с фоном, то FBO тебе в помощь, а так смысла особого нету, можно еще сделать свою сортировку объектов полупрозрачных чтобы не перекрывали друг друга, а можно сделать через динамические списки: http://www.uraldev.ru/articles/36 (статья правда для DirectX, но главное суть уловить я так думаю)