Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
С чего начать делать комп. игры? |
Философия, технологии, алгоритмы! |
|
Опции темы |
08.07.2010, 06:55 | #31 |
Мы вместе
Сообщений: 917
Регистрация: 15.04.2005
Возраст: 40
Не в сети |
К вопросу о программистах и "очень умных теоретиках" цитатка с баша:
X: Я к тому, что кто-то должен тупо кодить (кому не дано большего), а кто-то должен создавать теорию этого процесса (процесса кодинга) Y: По реке плывет каяк. На корме сидит чукча и курит трубку. Его жена гребет против течения. Чукча думает: "Хорошо ей, греби себе, да греби. А мне думать надо, как жить дальше... " |
08.07.2010, 10:19 | #32 | ||
Форумец
Сообщений: 108
Регистрация: 21.06.2010
Возраст: 44
Не в сети |
Гы, сам не пойму чего это я так завёлся на тему "Delphi vs VC++". Больной вопрос. Я ведь с дельфина сам начинал.(ладно, ладно Delphi, а не Delphy, ток программировать мне это не мешало)
Привёл ссылку http://www.delphilab.ru/content/view/98/46/ На книжку Михаила Краснова "DirectX Графика в примерах Delphi" Конкретно о проблемах при работе с динамической памятью говорится на странице 64-65 Глава 3 подглава "Цветовой ключ". Цитата:
Но попытка высвободить её приводит к ошибке. У меня было именно так. Хотя это может быть следствием "кривой" реализации DelphiX. НО. С такой же ерундой я повстречался на GLScene, что вызывает смутные подозрения по отношению к Delphi. У меня проблема была такая: Был массив пушек корабля. Динамический. Код:
... Cannons : array of TCannon; .... Setlength(Cannons,iniF.ReadInteger('MainVar','CannonsCount',0)); if length(Cannons)<>0 then for i := 0 to length(Cannons)-1 do begin Cannons[i]:=TCannon.Create(iniF,scn,i+1,4,Cad); Cannons[i].FixPosAboutParent(fmodel,Cannons[i].CannonModel); Cannons[i].Parent:=self.model; Cannons[i].CannonModel.TagObject:=self; //Теперь можно наладить обратную связь end; И камера перестала показывать сцену. Тогда я совершенно случайно сделал 4 пушки - и всё пошло нормально. Тогда я сделал 6 пушек. И снова всё пошло нормально. Тогда я сделал 15 и 25 пушек и всё было нормально. 4,3,2,1 пушка - всё нормально. Но когда я делал 5 пушек - камера не работала. Решить эту проблему удалось путём "отсоединения" камеры от пустышки(т.е. сделал камеру самостоятельным объектом сцены, а не подчинённым объектом пустышки). И ещё каких-то танцев с бубном, сейчас не помню уже. Не правда ли: Цитата:
Насчёт "отсечения" хвоста deltatime(делтатайм типа double). У меня так было. Это всё, что я могу сказать. Сначала было так SpaceShip.life(deltatime); И операцию с дельтатаймом я проводил прямо в life(); Потом проект усложнился и я сделал ф-цию корабля move(), laserFire() и другие. И стал передавать deltatime кораблю. В результате игра вдруг резко убыстрилась и мне понадобилось некоторое время, чтобы разобраться в чём дело. |
||
08.07.2010, 10:40 | #33 | ||
Форумец
Сообщений: 108
Регистрация: 21.06.2010
Возраст: 44
Не в сети |
Цитата:
Я считаю иначе. Просто работа при создании игр идёт на нескольких уровнях. На примере флешпоинтных скриптов. Были люди 2 категорий. 1. Делали красивый дым/огонь, писали скрипты, допустим кассетной бомбы, или крутой мины, которая взрывается, влетает в воздух, а потом засыпает всё вокруг осколками. Это уровень "технологий". Тут нужен один набор знаний и умений, хорошее знание математики, синусы/косинусы, формулы и т.д. 2. А были такие, которые писали интересные миссии, с зачупатым сюжетом. В которые было интересно играть. Тут нужен совершенно иной набор знаний и умений. Очень тяжело(я бы сказал ОЧЕНЬ тяжело) переключаться с уровня технологий на уровень творческой работы с сюжетом.(но осилить можно и то и другое) Наиболее продуктивная работа была когда №2 брали наработки №1 и использовали их. А вот совмещать и то и другое это жутко тяжело и малопродуктивно. А кто тут "мясо", а кто "крут" вообще на мой взгляд выявить невозможно. Цитата:
У меня нет. Выложить такой список будет в тему. Про гамедев я оцениваю так: если это помогает - значит это профессионально. Если не помогает - значит непрофессионально. |
||
08.07.2010, 13:21 | #34 | ||
Форумец
Сообщений: 108
Регистрация: 21.06.2010
Возраст: 44
Не в сети |
Цитата:
Но, хорошо, это: Код:
program test1; var s:string; p:pchar; begin s := '123'; p := @s[1]; writeln (p); end. Код:
#include "windows.h" void main(){ char s[] = "Наша новая строка"; char* s2 = &s[0]; MessageBox( NULL, s2, s2, MB_OK); } Код:
#include <iostream> void main(){ char s[] = "New String"; char* s2 = &s[0]; std::cout << s2; } Цитата:
Нет у меня утверждения, что нельзя. Не надо за меня придумывать то, что я говорю. 2. Не в том дело, что вы мне возражаете. А в том КАК вы это делаете. А насчёт движка луа, как уже было сказано у меня опыта нет. По религиозной войне "VC++ против Delphi": 1. Как насчёт библиотеки STL и шаблонов? 2. Как насчёт перегрузки операторов? 3. Как насчёт того, что майкросовтовские SDK все на C++? 4. Гибкость C++ против жёсткой структурированности паскаля. и ещё многое и многое. Более подробно лучше искать на специализированных форумах. Не для спора это всё, а просто, чтобы народ знал в чём вполне конкретные преимущества C++. А вообще-то тема это очень огромная, многие копья сломаны. В принципе, наверное, каждый сам попробовать должен. P.S. Да, с ссылками/указателями в дельфи я работал мало(относительно). Но это ещё никому ничего не даёт. Вы в области работы в дельфи со ссылками и указателями, допустим больше знаете. А я могу знать больше в чём-то другом, например в С++ или в 3D Studio Max скриптах. Но это же не медаль на грудь? |
||
08.07.2010, 13:38 | #35 | |
Форумец
Сообщений: 108
Регистрация: 21.06.2010
Возраст: 44
Не в сети |
Цитата:
По моему термин всё таки удобный. Всё таки высшая математика и её подразделы не совсем подходят к программированию игр. Там можно 80% не знать и при этом успешно программировать 3-мерные игры. Под "3d математикой" понимается то, что знать НЕОБХОДИМО. Я просто не понял, что тут такого смертоносного, чтобы убить? |
|
09.07.2010, 08:41 | #36 | |
Мы вместе
Сообщений: 917
Регистрация: 15.04.2005
Возраст: 40
Не в сети |
Цитата:
Возможно я не знаю каких-либо тонкостей про STL и шаблоны в C++, но учитывая то, что написано тут: http://ru.wikipedia.org/wiki/%D0%A1%...BD%D0%BE%D0%B2 и тут: http://ru.wikipedia.org/wiki/%D0%A8%...%D1%8B_C%2B%2B могу сказать, что в Delphi прекрасно работают и используются шаблоны. Например так: Код:
type TMyClass<T> = class protected type ... Variable0 = array of T; ... public type ... TMyFunc0 = function(const aItem: T): Integer; ... protected var ... function MyFunc1(aFunc: TMyFunc0): T; inline; ... public ... function IndexOf(Item: T): Integer; ... end; Перегрузки операторов нет. Но я, хоть убейте, не понимаю зачем они нужны. Вот зачем нужно, чтобы "+" в части кода работал как "+", а в другой части "-". Нужен минус, его и используйте. Зато подобные возможности в C++ приводят к просто колоссальному времени билда проекта. ИМХО лишнее это, но вам виднее. Перегрузка процедур и функций есть и превосходно работает: Код:
procedure MyProcedure(Index : Integer); overload; procedure MyProcedure(Name : string); overload; procedure MyProcedure(Item : TMyClass); overload; На тему гибкости и структурированности можно спорить до посинения. Я не хочу. Это кому что нравится. ИМХО в Delphi есть масса плюсов по сравнению с C++. |
|
09.07.2010, 09:00 | #37 | |
Пессимист
Сообщений: 618
Регистрация: 22.07.2004
Не в сети |
Цитата:
Но за 15 лет использовал всего полтора раза =) И все полтора раза были извращенными расчетными моделями, на практике нужные одному из миллиона. В общем да, не такое уж и значимое достоинство языка. |
|
09.07.2010, 10:15 | #38 | |
Форумец
Сообщений: 113
Регистрация: 09.09.2008
Возраст: 40
Не в сети |
Цитата:
|
|
09.07.2010, 10:38 | #39 | |
Форумец
Сообщений: 106
Регистрация: 09.06.2003
Не в сети |
Цитата:
Я работал в Воронежской компании. И за рубежом. Советы молодежи с горящими глазами (банальные к сожалению): Я бы не стал в свое время нанимать людей такого малого опыта как общающиеся в этом треде - себе дороже. Другие воронежские компании вас бы наняли, но исключительно с рабской целью и рабской ЗП. Всем начинающим я бы порекомендовал разивать кругозор, читать книги, больше практики - т.е. труда. Ну и разумеется, надо C++ знать досконально. У sony/ms/nintendo нет Delphi. Когда будет опыт и задумаетесь о семантиках семантик - будете любить все языки программирования, но отвлеченно. Как-то так. Спрашивайте, если что интересно. |
|
09.07.2010, 10:58 | #41 | |
Форумец
Сообщений: 612
Регистрация: 14.05.2008
Возраст: 40
Не в сети |
Цитата:
|
|
09.07.2010, 11:53 | #42 |
Форумец
Сообщений: 106
Регистрация: 09.06.2003
Не в сети |
> вот это отжог
> сразу видно что не местный Ответов не ждите - игнор. Мне лень играться - поэтому предыдущий пост написан прямо. Еще раз: мой пост был про "поделиться опытом" и про приглашение к общению по существу. |
09.07.2010, 12:35 | #46 |
Форумец
Сообщений: 106
Регистрация: 09.06.2003
Не в сети |
The_God,
> у тебя опыта общения нет, а это важно в первую очередь Я нашел пару подобных односложных фраз от тебя в треде выше. Ты обиделся. Поясню: > Я бы не стал в свое время нанимать людей такого малого опыта как общающиеся в этом треде Это я про желающих пойти в про геймдев, к тем кто уже работает естественно не относится. |
09.07.2010, 13:57 | #47 |
Форумец
Сообщений: 113
Регистрация: 09.09.2008
Возраст: 40
Не в сети |
тут надо было спросить а есть ли такой опыт у того вована! про референсы даже можно не спрашивать, муахахаха
|
09.07.2010, 14:28 | #50 |
Форумец
Сообщений: 106
Регистрация: 09.06.2003
Не в сети |
The_God,
> начинающим советую не лезть в болото русского геймдева Типа избавляешь молодую поросль от иллюзий? И штампик к каждой фразе - www.wawan.ru? Начинающим советую слушать свое сердце, любить свои устремления и работу. |
10.07.2010, 17:49 | #51 |
Out There
Сообщений: 6,007
Регистрация: 13.12.2004
Возраст: 45
Не в сети |
По поводу геймдева... Совершенно случайно наткнулся на игру, которая была до боли похожа на Valve'овский Portal. Заинтересовался, кто у кого спер идею и выяснил следующее. Выводы, уважаемые начинающие и не очень геймдевы, делайте сами.
The_God, ты тока не обижайся, но за некоторые уровни Крида, левелмейкерам надо руки поотрывать. |
10.07.2010, 20:54 | #52 |
Форумец
Сообщений: 1,109
Регистрация: 19.12.2004
Возраст: 42
Не в сети |
2 Part!zan
это пример где работают студенты за ЖРАТ ну и конечно же за "фан" геймдева ) а вот пиарщики были явно опытнее разработчиков. зато я теперь знаю как делать не надо) а вабще веселое было время, куячили с горевшими глазами... эх. |
12.07.2010, 11:42 | #54 | |||||
Форумец
Сообщений: 108
Регистрация: 21.06.2010
Возраст: 44
Не в сети |
to DWanek,
За примеры работы с шаблонами спасибо. Стыдно признаться - я пропустил момент, когда шаблоны были реализованы на дельфи. Цитата:
Цитата:
Код:
c=a+b-x*y; c+=b; Код:
c:=a.add(b.sub(x.mult(y.getVar))); c:=c.add(b.getVar); Цитата:
НО. Вот новичок станет качать и читать книжки. А там 80% про DirextX/OGL конкретно на C++. И соответственно примеров большинство на C++. Что же новичку делать, если он знает только дельфи? Согласитесь - читать SDK на C++, а потом переносить на дельфина - это совсем не для новичков. Цитата:
Последнее, что должны знать новички, вот эту крылатую фразу: Цитата:
Но зато C++ даже препятствовать вам выстреливать в ногу не станет. Что кому больше нравится - дело вкуса. Надеюсь на этом религиозные войны закончатся. Последний раз редактировалось Избор; 12.07.2010 в 12:01. |
|||||
12.07.2010, 12:19 | #55 | ||||||
Форумец
Сообщений: 108
Регистрация: 21.06.2010
Возраст: 44
Не в сети |
Цитата:
А вёрстка уровней - всегда высокий уровень. И уровней обычно намного больше, чем 2. Флешпоинтные скрипты я взял только потому, что там эта система имеет всего 2 уровня и видна наиболее ясно. Цитата:
Поэтому по любому на чём-то придётся специализироваться. Цитата:
Цитата:
+ Советы бывалых. Цитата:
Цитата:
А вообще-то получается, что саме крутые - это безработные, потому, что у них ЗРП = 0.(т.е. самая маленькая) Может быть вам стоило поподробнее расписать - почему так получается. |
||||||
12.07.2010, 12:43 | #56 | ||||||||||
Форумец
Сообщений: 108
Регистрация: 21.06.2010
Возраст: 44
Не в сети |
Цитата:
Цитата:
2. Если гора не идёт к Магомету, то Магомет идёт к горе. 3. Не все занимаются идиотской конкуренцией на уничтожение. Я лично помог бы чем смог. Цитата:
Цитата:
Но не все будут делать игры конкретно для приставок - это очень глубокая специализация. Цитата:
И тут появляетесь вы и заявляете, что "я бы не стал их брать к себе в компанию". К чему бы это? Конкуренции боитесь? Цитата:
Цитата:
Цитата:
Цитата:
P.S. Хромает, хромает в РФ культура общения. Каюсь, сам дурак, не нужно было так жёстко отвечать DWanek хоть бы оно 100 раз того заслуживало. |
||||||||||
12.07.2010, 14:55 | #57 |
Форумец
Сообщений: 106
Регистрация: 09.06.2003
Не в сети |
> Ну так и укажите какие качества и какой опыт вы видите для себя желанными.
Самое желанное при найме новичка - здравомыслие и кругозор. Определяется легко - в простом разговоре на тему, которую самому новичку наиболее всего интересна. Из практического: наличие у него небольшой, но почти законченной игрушки. > Тема вообще-то создана в помощь новичкам. Да, разумеется. > И тут появляетесь вы и заявляете, что "я бы не стал их брать к себе в компанию". > К чему бы это? Конкуренции боитесь? Нет конечно. Это был коментарий к мысли: "новичку надо устроится в реальную геймдев контору". Обучение - весьма трудоемкий процесс. Часто дешевле не нанимать. Предмет анализа затраты/радости в общем случае. > и после этого: > без комментариев. Прошу прощения за бестактности. Это просто лень. |
13.07.2010, 08:19 | #58 | |
Мы вместе
Сообщений: 917
Регистрация: 15.04.2005
Возраст: 40
Не в сети |
Цитата:
Код:
TD3DMatrix = record class operator Multiply(const Left, Right: _D3DMatrix): _D3DMATRIX; overload; inline; //перемножение матриц class operator Multiply(const Left: _D3DMatrix; const Right: Single): _D3DMatrix; overload; inline; //умножение справа class operator Multiply(const Left: Single; const Right: _D3DMatrix): _D3DMatrix; overload; inline; //умножение слева class operator Add(const Left, Right: _D3DMatrix): _D3DMatrix; inline; //сложение class operator Equal(const m1, m2: _D3DMatrix): Boolean; inline; //сравнение ... end Код:
... var m0, m1 : TD3DMatrix; begin ... m0 := m1*2; m0 := 2*m1; m0 := m0*m1; m0 := m0+m1; if m0 = m1 then ... и так далее... |
|
13.07.2010, 09:09 | #59 |
Пессимист
Сообщений: 618
Регистрация: 22.07.2004
Не в сети |
|