![]() |
Re: Blitz3D engine
что за ??
ребята, это лишнее !! :) Цитата:
|
Re: Blitz3D engine
Это всем ясно, что заниматся копи-пастом не круто.
Копи-пастом занимаются тем, кому лень писать, или только на стадии изучения языка... А XenuS, я думаю, знает очень и очень много, раз собирается сделать такое... |
Re: Blitz3D engine
Цитата:
Насчет двига- давайте дождёмся момента када увидим первый кубик, а пока просто пофлудим;) |
Re: Blitz3D engine
лан, люди, не флудите так сильно=))))
наcчет SDK, то я не буду копи-паст по нескольким причинам(все они прозвучали): - кроссплатформенность - собственный опыт - свое - приятнее-)) - в свое легде будет менять, обновлять и добавлять...=) так что с нуля - это я твердо решил+)) кстати, сделал просмотр любой директории (ReadDir и т.п.) +) через недели две перейду на 3D функции, вот так будет много геммороя.... Ой, чуть не забыл. Вот примерный план: 2Д: - Математические функции - каркас - Строки - файлы - операции с файлами - базовый ввод (клавиатура и мышь) - директории - текст - вывод 2Д изображений - загрузка текстур - временные функции - остальное (не вошло не в 2Д, не в 3Д) 3Д: - Геометрия - Поверхность - Камера - Свет - Объектные оси - Спрайт - MD2 - BSP - Плоскость - Зеркало - Ландшафт - Слушатель/Звук - Движение объекта - Анимация объекта - Объект - Состояние объекта - Столкновения объекта - 3D Математика - Графический режим после всего: - звук - работа с сетью - тени - шейдеры - доведение всего до логического конца по Блицу=) - физика - скриптовая система примерно так....но план может меняться=) |
Re: Blitz3D engine
ЛысыЙ_Чук-Иванчук, мдє , наврно ты прав !! :)
ту Ксенус: ты же и физику для движка сам писать будеш ?? |
Re: Blitz3D engine
На счёт звука, настоятельно рекомендую кроссплатформенный fmod, недаром его юзают все гуру нашего времени, такие как Ubi Soft, EA, Crytek и другие. Советую.
Насчёт физики, хочу посоветовать PhysX, но он же не кроссплатформенны =( Но думаю что это исправиться? |
Re: Blitz3D engine
Думаю из физики можно взять только столкновения, а то так все разленимся ведь. УЖ лучше больше возможностей, но не упрощений(в рамках надобности конечно).
|
Re: Blitz3D engine
Начинай с 2Д :)
|
Re: Blitz3D engine
Цитата:
Цитата:
|
Re: Blitz3D engine
звук я пока не знаю, но на примете почитать про OpenAL...
физика, для демки двига, прикручу Newton наверняка, но в законченном(если хватит сил), будет моя(если красиво получится=))) 2 H@NON: каркас - это сама инициализация окна через Graphics3D... в общем, это уже есть+) |
Re: Blitz3D engine
так, кто там хотел увидеть первый кубик?! =) кубика пока что нету...но есть первая графическая операция=)))
это вывод BMP=) (есть функции по загрузке jpg, psd, pcx, tga...прост не успел вставить)... пока что вывод....завтра сделаю свойства картинки....и добавлю остальные загрузки... код: #include "Blitz3D.h" B3DImage taverna; B3DImage pricel; void main(int argc, char *argv[]) { InitBlitz3DDevice(argc, argv); Graphics3D(1024, 768, 32, 0); AppTitle("Blitz3D engine by ~XenuS~"); taverna.LoadImage("image.bmp"); pricel.LoadImage("pric.bmp"); StartMainBlitzLoop(); } void MainBlitzLoop() { RenderWorld(); taverna.DrawImage(0,0); pricel.DrawImage(712,384); Flip(); } void KeyboardEvent(unsigned char key, int x, int y) { if (KeyDown(key,B3D_ESC)) End(); } void MouseEvent(int button, int x, int y, int scale) { } |
Re: Blitz3D engine
Аффтар жжошь, давай есчо!
ЗЫж под впечатлением этой статейки:http://boolean.name/showthread.php?p=60767#post60767 |
Re: Blitz3D engine
2H@NON хех=))
сорри, поправления к посту №75... вот еще и текст=))) #include "Blitz3D.h" B3DImage taverna; B3DImage pricel; B3DText texts; void main(int argc, char *argv[]) { InitBlitz3DDevice(argc, argv); Graphics3D(1024, 768, 32, 0); AppTitle("Blitz3D engine by ~XenuS~"); taverna.LoadImage("image.bmp"); pricel.LoadImage("pric.bmp"); texts.LoadFont("Comic Sans MS",30,15,0,0,0); StartMainBlitzLoop(); } void MainBlitzLoop() { RenderWorld(); taverna.DrawImage(0,0); pricel.DrawImage(712,384); Color(255,255,0); texts.Text(100,50,"Это демонстрация Blitz3D engine by ~XenuS~"); Flip(); } void KeyboardEvent(unsigned char key, int x, int y) { if (KeyDown(key,B3D_ESC)) End(); } void MouseEvent(int button, int x, int y, int scale) { } заметьте, текст поддерживает русский в любом случае...=) |
Re: Blitz3D engine
XenuS
почему нельзя определить функцию B3DImage * LoadImage(B3D_string * file_name); ? в добавок хочется определенный конструктор типа чтобы можно было вот так писать : B3DImage * img = new B3DImage("image1.bmp"); убери наконец то StartMainBlitzLoop(); и прочий бред в блице самое важное было ПРОЦЕДУРНОЕ программирование так что давай делай функции типа DrawImage и тд имхо лутче зделай как в BlitzMax - все функции в классах но есть простые процедурные реализации типа : Код:
class foo да кстати хотелось бы видеть хоть какое то подобие управления памяти хотя бы как в Irrlicht в добавок еще нужно переопределить ВСЕ типы переменных, для кроссплатформности ну типа #define B3D_Int int и тд потом весь платформнозависимый код (а его надо точно определить) вынести в отдельные блоки попробуй хотя бы скомпилировать ето чудо на MinGW поймеш что MSVC6 далек от стандартов и нифига просто так не будет компилится и еще хочется какой нибудь но фреймворк классы типа B3D_String и прочее |
Re: Blitz3D engine
ок, насчет процедурного программирования, я попробую исправить...так реально будет красивее и код и более похож на блиц...
переопределение типов(базовых) уже есть=)) класс B3DString есть....но его я сделал для удобства работы со строками...сложить, = и т.п. но из него получаешь указатель на текст...и работаешь как с простым массивом char... например: B3DString str; str="Это "; str+="строка"; cout << str.getPointer(); прост я это не показывал=) а зачем управление памяти, как в иррлихт? я стараюсь сделать двиг, который будет элементарно выучить, не углубляясь в само программирование...(в блице3Д именно так).... так, тогда в уже следующем моем посте относительно движка, я постараюсь выложить процедурный код... |
Re: Blitz3D engine
XenuS
когда память потечет узнаеш зачем управление памятью ;) |
Re: Blitz3D engine
ааа.....ты про это=)))
не, у мня для каждого объекта есть метод Delete... вот когда надо, тогда кодер и будет удалять=))) |
Re: Blitz3D engine
XenuS, а такой варриант:
Энтити1=ЗагрузитьМешь(...) Энтити1=ЗагрузитьМешь(...) То первый останеться, а что делать с ним? Его уже ни как не тронешь, тока пиком получить - извращенство. Поэтому такое нада удалить. Или пропала линка на объект - удаляем, поэтому юзер всегда будет уверен что потерянное будет удалено. |
Re: Blitz3D engine
оо, я еще демку не выложил, а вы уже баги нашли=)))спс)
ну в таком случае я сделаю так: ...... int B3DMesh::loadMesh(char *f) { ..... //model - указатель на модель if (model!=NULL) delete []model; ..... } ...... как нибудь так...сейчас буду это вписывать в 2Д изображения=) |
Re: Blitz3D engine
XenuS
хм, ты вообще работал с указателями, ссылками, обьектами и статическими елементами ? понимаеш о чем я говорю ? в новосозданом обьекте model в любом случае у тебя == NULL ну и как же ты будеш проверять что УКАЗАТЕЛЬ затерся ? для примера Код:
foo * a1; определи что тут указатель затерся ... ;) ps. можно узнать сколько ты программируеш на C++ ? и вообще с чем работал и что писал ? ps2. сверх сложно перенести стиль blitz на c++ не ограничивая возможностей ООП |
Re: Blitz3D engine
C++ я знаю 2 года....вот учусь ему=)
нет, ты мня не понял, я имел ввиду так: первая модель загрузилась...значит то, во что она загрузилась, стало равно не NULL...а перед загрузкой пишем: если то, во что она должна загрузиться != NULL, тогда удаляем это.... ЗЫ а работал я с паскалем, вижуал басиком, блицом....вот С++ теперь(я ему учусь в инс-те)....а что? =) ЗЫ2 я и не хочу полностью переносить стиль блица, у меня будут классы и все, что связано с ООП, но идея в том, что бы были функции\методы блица...не надо писать инициализацию окна, можно написать Graphics3D...не надо писать полностью код просмотра директории, можно написать: B3DDirectory dir("C:/"); dir.ReadDir(); cout << dir.firstFile() << endl; for (int i=0;i<dir.getCountOfFiles();) { char *k; k=new char[255]; k=dir.nextFile(); cout << k; cout << endl; delete []k; } dir.CloseDir(); } вот так=))) |
Re: Blitz3D engine
XenuS
эм, мы друг друга не понимаем :) я просто говорю что ето не катит ты предпологаеш что юзер выполнит такой код : Код:
B3DImage img1; а я предпологаю что юзер выполнит такой код : Код:
B3DImage * img = new B3DImage; в принципе НИКТО не пишет такие вещи прямо обьектами обычно все такие обьекты хранятся в связаном списке можно для начала добавить менеджер по принципу reference counting тоесть есть начальный класс от которого все наследуется потом если обьект где либо используется (на него есть ссылка) то reference = 1, если обьект используется еще где-то то reference = сколько обьектов юзает етот обьект когда какому либо обьекту наш обьект не нужен то его reference уменьшается на 1 когда какому либо обьекту наш обьект понадобился то соответственно reference ++ когда reference достигает 0 - обьект само удаляется в принципе реализация гарантирует, при прямых руках, отсутствие утечек памяти, но руки реально нужны прямые :) в принципе вот пример такого базового класса из того же irrlicht Код:
class IUnknown очистится все что выделял движок для етого не плохо бы зделать свой менеджер памяти, который бы выделял бы память ps. я даю советы, потому что не одну шишку набил на етих проблемах реально если неправильно зделать базовую архитектуру, то потом все 400 кб кода прийдется тупо удалять .... я один и тот же проект 3 раза переписывал, только из-за того что не правильно делал менеджемент памяти а теперь я пишу код который выдерживает самые жосткие проверки типа Код:
while 1 |
Re: Blitz3D engine
ппц, ну я так и не получил ответа, зачем нам еще один движек похожий синтаксисом на Блиц?
|
Re: Blitz3D engine
аааа, все, понял=))) ок, сейчас я буду переделывать структуру создания окна в процедурный и т.д., вот и это переделаю...
ЗЫ: главное, что я въехал сейчас, когда там не так много в двиге написано, а то потом все переделывать - это пипец! +) затем, что это будет двиг под С++!!! обычный двиг использует в основном ООП, а тут можно будет как процедурно, так и ООП.... и в 3-х, мне хочется сделать такой двиг....я думаю, что этого достаточно для того, чтобы сесть и написать его, хотя бы в свое удовольствие... |
Re: Blitz3D engine
Цитата:
![]() |
Re: Blitz3D engine
Вообще я обеими руками за ООП. Но процедурное программирование проще, что уж тут говорить. Я бы сказал процедурное для новичков. И раз тебе так хочется, то и вопросов нет. Пиши! Главное чтоб не перегорел.
ЗЫ. Мне б стока энтузазизма скока у тебя - я б тоже нечто подобное писал ;) |
Re: Blitz3D engine
|
Re: Blitz3D engine
o_O
Ух ты! Молодец! Если надо, могу помочь с чем-нибудь, со звуком, например. Насчет FMOD - полностью согласен с MoKой, пожалуй он самый лучший. Насчет физики - как вариант предлагаю использовать Bullet - он кроссплатформенный и Open Source (что для меня весьма и весьма важно ;)), а демки у него выглядят вкусно. Сделал его программист, раньше работавший над Havok. Насчет ООП - согласен с Jimon'ом - вариант "как в BMax", ИМХО, самый лучший из всех доступных. Так что дерзай! И движок однозначно должен быть Open Source ;) . |
Re: Blitz3D engine
Как разработка? продвигается? что уже реализовано?
|
Re: Blitz3D engine
Да FMOD конешно крут тока бесплатным движок с ним быть неможет ибо использование этой либы платное всего 5000$ c проекта!
Продолжайте в том же духе. |
Re: Blitz3D engine
SBJoker
ыыыы хто сказал ? :lol: FMOD для бесплатных проектов бесплатен на все 101.5% FMOD для шаровар стоит 100$ FMOD для проектов стоит 3000$ только вот FMOD Ex стоит 6000$ идинственое что за юзание mp3 приедется отдельно отдавать 2500$ что говорит о том что mp3 в комерческих играх - Г http://www.fmod.org/index.php/sales |
Re: Blitz3D engine
Цитата:
|
Re: Blitz3D engine
Цитата:
|
Re: Blitz3D engine
SBJoker
мы говорим о freeware Blitz3D engine, а не о твоих проектах тебя не устроит, автора етой темы - на ура ;) |
Re: Blitz3D engine
Хе, то есть если сделал игру на Blitz3D engine, то уже не продать. )
Единственный минус. А так все отлично. |
Re: Blitz3D engine
Цитата:
если это выгодно, то пожалуйста !! ;) |
Re: Blitz3D engine
Аффтар, гыде упдейт?
Надеюсь не бросил. ВЫкладывай новости, очень интересно что ты там еще сделал. А 2д уже сделано? |
Re: Blitz3D engine
H@NON, сначала надо сделать 3д, потом уже 2д через него. имхо.
а вообще, я против такого копирования, уж лучше продумать структуру, и создать что то свое. например: http://www.boolean.name/showthread.p...4598#post64598 |
Re: Blitz3D engine
А вообще где автор ? его уже давно не видно ... =(
пропал? о_О |
Re: Blitz3D engine
Ну дак, и следовало такого ожидать. В 99% заявы, вот я делаю мега двиг, с мега наворотами заканчиваются сразу же после начала разработки. Автор начинает понимать все сложности разработки. Вот мне всё таки за 2 дня удалось довести 10 строк кода из Ксорса до толку )).
|
Re: Blitz3D engine
Render, надеюсь что не бросил..
XenuS, иы же не бросил проект? |
Re: Blitz3D engine
я не бросил!!!! я сейчас делаю скриптовую систему(конкретно, то делаю, чтобы все выражения считались правильно)...насчет 2Д была реализована загрузка BMP u TGA.....через дня 3 сделаю и jpg u dds. я щас со скриптами полностью разберусь и проЭкт пойдет дальше=)
|
Re: Blitz3D engine
XenuS, надеюсь, будет png .. и будет выводится оно как в бмаксе.. надеюсь...
|
Re: Blitz3D engine
я тоже надеюсь=)))
аааа.....совсем забыл!!! я сделал наконец не такую форму инициализации (StartMainLoop() && MainLoop()), а, как советовал jimon, через ООП! сейчас выложить код не смогу, я с телефона, но примерно это так: #include "Blitz3D.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { glDevice *device; device=new glDevice; device->createDevice(1024,768,32,true); while (device->run()) { device->UpdateDevice(); device->GetSystemInformation(); device->beginScene(); device->RenderWorld(); device->Flip(); device->endScene(); } return 0; } Синтаксис пока что похож на irrlicht, но я его изменяю на стиль б3д. но теперь мой двиг работает без всяких MainLoop"ов=))) Как хотите, так и пишите....никаких ограничений;) |
Re: Blitz3D engine
очередной отчет:
добавил вывод прямоугольника(закрашен-незакрашен), оптимизировал сам код рендера.....изменил вывод текста...теперь он стал в 100 раз удобнее...и сделал альфу в 2D... код: Код:
#include "Blitz3D.h" |
Re: Blitz3D engine
fr-> и device-> постоянно нужно писать? Этож Очень неудобно :(
|
Re: Blitz3D engine
Цитата:
XenuS, что ужо готово то? |
Re: Blitz3D engine
2MoKa: я решил просто поменять архитектуру всего двига...fr - это FlatRender(рендер плоскости), device->само устройство(WinApi, управление окном и т.д.), vr(Volume render) - рендер объемных объектов и задание всех их параметров...
2JohnK: готово весь вывод 2Д и он оптимизирован, в отличии от предыдущей версии двига....сейчас делаю 3Д...как только разберусь со скриптами, выложу демку....можно будет через скрипты писать на двиге=))) (по-крайней мере меня это очень радует;) |
Re: Blitz3D engine
XenuS, Хм, можно ещё собрать пару примеров сравнения скорости 2д, твоего, б3д и бм движков. (это намёк ;) )
|
Re: Blitz3D engine
Xenus, молодчиг! жги дальше. А альфа что и тексту будет ставиться? жесть.
|
Re: Blitz3D engine
MoKa, это не удобно, это ООП ;) .
XenuS, лучше забрось ты этот WinAPI, ИМХО, гораздо лучше GLUT или GLFW. |
Re: Blitz3D engine
2MoKa: ок, намек понял=))) либо сегодня, либо завтра дам потестить(кстати, рендер 3Д сейчас тестил.....я делаю б3Д на 15-20 фпс где 10000 кубиков;))
2haedim: да я бы делал и на glut...но многие(и на булке и нет) были против...тем более я так долго маялся, что бы код довести до такого состояния, в котором он сейчас=)))) >> А альфа что и тексту будет ставиться? ты про что? :@ |
Re: Blitz3D engine
как и было обещано=)))) 10к кубиков.....фрустум включен....
в архиве лежат ехе и блица и B3Dengine...просьба отписаться=)) у меня: мой двиг: 65-70 ФПС блиц 3Д: 18-19 ФПС (сам не знаю, отчего такая разница :@) для примера я взял тоже кубики, как HolyDel=)) а, и еще....выход из моего двига пока Alt+F4... код движка: Код:
#include "Blitz3D.h" Код:
Graphics3D 1024,768,32,1 |
Re: Blitz3D engine
а можно архивчег без блицевского ексешника?
|
Re: Blitz3D engine
конечно)
|
Re: Blitz3D engine
60 фпс.
ограниченно частотой монитора. + - быстро - - дурацкая текстура (199х год) (имею ввиду метод текстурирования) вроде в исзодниках прописано, чтобы было показано скока объектов в зоне видимости, но почему то цифры я не заметил. ЗЫ. Молодец, так держать! |
Re: Blitz3D engine
спасибо=)
Цитата:
|
Re: Blitz3D engine
Graphics3D 1024,768,32,1
SetBuffer BackBuffer () Lastfps#=0; fps#=0; time#=0 curtime#=0 font=LoadFont ("Monotype Corsiva",36,0,1,0) SetFont font Const N=10000 tex=LoadTexture("texture.bmp") Dim c(N) cub=CreateCube() EntityTexture cub,tex For i=1 To N c(i)=CopyEntity(cub) PositionEntity c(i),Rand(-50,50),Rand(-50,50),Rand(-50,50) RotateEntity c(i),Rand(0,360),Rand(0,360),Rand(0,360) Next cam=CreateCamera() Repeat For i=1 To N TurnEntity c(i),0.1,0.2,0.3 MoveEntity c(i),0,0,0.1 Next RenderWorld curtime#=MilliSecs() fps#=fps#+1 If curtime#-time#>=1000 Lastfps#=fps# fps=0 time#=curtime# EndIf Color 255,0,0 Text 30,90,"FPS: "+Lastfps# Flip Until KeyHit(1) End вот такой вариант для блиц кода (убраны явные ляпы, типа создавания каждый раз нового куба) дает 20 фпс. при отключении математики - 30. |
Re: Blitz3D engine
скажи скока объектов в зоне?
|
Re: Blitz3D engine
это были не ляпы=)))
в своем двиге я-то не копирую куб, а заного создаю его(пока еще нету копирования=)) |
Re: Blitz3D engine
1500-2000 стандарт.....(и там и там)
при 6000 в моем двиге фпс: 43-45 |
Re: Blitz3D engine
XenuS- А как увига с объектами в 50 к поликов?
|
Re: Blitz3D engine
а я еще не реализовал загрузку.....функция есть, но я сначала с родительской привязкой разберусь...
|
Re: Blitz3D engine
XenuS Только респекты) дай потестить)
|
Часовой пояс GMT +4, время: 13:28. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot