Сможем написать или нет?
Как в Думе, Дюке - да, а дальше - сомневаюсь. Хотя написать, то можно все.
Как в Думе думаешь сможем? Может в этой теме кто-нибудь напишет несколько мессаг про написание графических движков, а там глядишь и может что-нибудь сами напишем!
Но сразу определимся, что это будет чисто движок обработки и перемещения объектов (без обработки клавы и прочего). А насчет движка Дума - это бы в Алгоритмы сунуть, сам просчет...
Распределим работу, e.g. кто-то биб-ки работы с видео, кто-то с объектами и т.д.
У тебя инфа есть по этому делу?
PS. Аська работает?
Если не трудно скинь мне инфу - посмотрю!
Получи, движок по E-Mail...
Гляди мыло - высказывай соображения :o
Кто-нибудь хочет попробовать написать простенький движок?
Предложи-ка ты, а я если что подкорректирую.
Ну, предварительно так:
1) Работа с видеокартой. (надеюсь вывод пикселя будет не через int 10h)
2) Работа с 3Д-объектом, т.е. поворот, вращение, mip-mapping и все такое
3) Дизайн предварительных сцен
4) Что-нибудь еще...
Вот - типа того
Хоть так для начала, хотя не думаю, что будет много сцен!
Насчет вывода пикселя поподробнее ;)
Конечно - вывода пикселя в граф. движке присутствовать не должно быть, т.е. вывод должен быть экранный. Я имел ввиду, то что если кто-то и возьмется за видео-топик - он должен осознавать, что ему нужно будет почитать про порты VGA адаптера (думаю разрешение ограничим - 320х200х256, как наиболее оптимальное во всех смыслах) и вообще работать с памятью напрямую, ну и все такое, а не юзая след. код:
asm
mov ax,0C12h
mov bh,0
xor cx,cx
mov cx,dx
int 10h
end;
Дилетантство не приветствуется... хотя по сути дела мы и сами дилетанты ;)
Ребята, а как насчет денежного вознагрождения - вы ничего не сказали. Или это дело на интерес - сидеть дома две недели и ничего не делать, кроме как этот проект!!!
Движок, который мы напишем(если напишем), никому не будет нужен кроме нас самих - это проба своих сил.
Движок будет делаться не 2 недели! ;)
:D приеду с отпуска кину граф движок на асме
именно в EXE формате может пригодится
полностью трехмерный
Тебе виднее - значит 320*200*256
А энтузиастов действительно маловато!
Хрен с ним - я начну с чего-нибудь, потом чего-нибудь выложу, а там посмотрим... :
http://www.gamedev.ru/coding/20517.shtml
Это ж клон Wolf/Doom, но не Quake. У нас же будут спрайты (если будут), а не полигоны/треугольники. Да и инфа для разработки винапов, но во всяком случае было интересно почитать. Но этот автор слишком уж вкратце об этом рассказывает...
Там говорится об основах - это самое главное.
Посмотри сколько его движок умеет всяких фенек!
Об основах полигонального, но не спрайтового движка, у нас текстуры не будут натягиваться на скелет - это будут спрайты, возможно, с MIP-MAPPING'ом... А стены будут просчитываться пожалуй, как в Wolf.
Да погоди ты с MIP-MAPPING'ом
Все начинаю писать, вроде с генерацией 9-значных чисел закончил, а в каком формате будем спрайты держать, e.g. GIF, PCX, BMP, PNG. Я склоняюсь к GIF, не думаю, что UniSys придерется к RussianDoom'у со своим долбаным патентом
Да GIF будет полегче чем BMP.
Скажи для начала, что надумал писать!
Поясни, что такое LZW?
Присоединюсь как освобожусь!Дел много!
Мы вдвоем будем писать?? Интересно нам плохо не будет?
LZW - алгоритм сжатия данных, придуманный тремя корешами: Lempel'om, Ziv'om & Welch'em. Используется для сжатия данных в ZIP, GIF и многих других. А в ГИФе между прочим юзается модифицированная версия этого алгоритма, запатентованная фирмой UniSys и она воняет по этому поводу на все проги читающие этот формат. Типа каждый должен купить лицензию на чтение и все такое... Но до нас я думаю она вряд до***тся. И кстати неофициальная расшифровка PNG - PNGs not GIF...
А по поводу того, что в два лица будем писать, дык энтузиастов/программистов, то ни хрена нету...
Смысл? Если для души, то пойму/приму, а если с претензиями, то кхе-кхе :P
ИМХО спрайты лучше хранить в BMP или вообще в RAW (т. е. просто матрицу пикселей), так не придется дополнительно их распаковывать. Тем более что все равно они будут сжаты во что-то типа Думовского WAD'а
Еще будут мнения? Они не помешают!
У меня есть прога на паскале с движком и прочим, однако для частного случая типа DOOM, но скорее типа Wolf, т.к. нет вертикального движения. Работает на удивление быстро. Я офигел, что паскаль на такое способен. Половина проги написана на Ассемблере, но я его так и не взялся учить!
Могу переслать!
И еще вопрос:
Вы не знаете, как сделать в графическом режиме vga256 или vesa16 две страницы для перерисовки экрана. setactivepage, setvisualpage?
Привет, если вы хотите, я мог бы работать с вами над движком - в общем то у меня есть гр. библиотека для работы с VESA - написана на асме под паскалем. :D
P.S. В моей библиотеке есть шрифт, обновление экрана, работа с режимами 800*600,640*480... кому интересно - мыльте [email] darkmaze@yandex.ru [/email]
To Dark:Читай все мессаги сабжа - разрешение 320х200х256. И по поводу сторонних модулей, дык я категорически против - типа делать самим все!
To Alaric:Конечно буду, уже весь модуль написан на нем...
To Ozzy:Может потрудишься над темой поворота стен и все такое? ???
8)
Ну
1. Эта библиотека написана полностью МНОЙ! !!!(писалась где-то 2 мес.)
2. Хорошо, MCGA, так MCGA, но я буду работать с вами или нет?
Я согласен работать на полном энтузиазме - так как это полностью совпадает с направлением полета моей творческой мысли :P
А не мог бы выложить пару строчек из нее (в плане сама реализация меня интересует) или кинуть на мыло. Участие: попробовал бы просчет поворотов стен при движении, объекты на поворот не надо вить, т.к. спрайтовая орг-ия.
:D Энтузиазм только приветствуется :D
Ну в обшем то я готов попробовать... :-)
Кое какая документация у меня есть - буду изучать ;D
To Gluk: а для чего тебе генерация 9-ти значных цифр?
И не проще ли использовать PCX? или можно JPG ;-)
8) 8) 8)
Ну вобщем я понял ту задачу, которую мне предлагают, так:
Имеется двумерная карта об"ектов.
Имеется игрок - и нам известен его вектор направления, и x,z координаты( по правой с.к.) и надо написать программу, которая бы отображала бы то, что игрок видит...
Если что не так подправьте, добавьте... ;D
Модуль для работы с VESA:
Я тут выложу кусочек из-за которого все говняется (to Dark):
+ парочку переделанных процедур
Function TestVESAExt:boolean;Assembler;
asm
lea di,InfoBuf
push ds
pop es
mov ax,4F00h
int 10h
dec ah
jns @NoVESA
mov al,1
jmp @vesok
@NoVESA:
mov al,0
@VesOk:
end;
Function TestVESAMode(Mode:Word):Boolean;Assembler;
asm
lea di,InfoBuf
mov ax,4F01h
mov cx,Mode
int 10h
dec ah
jns @NotEx
mov al,1
jmp @Exist
@NotEx:
mov al,0
@Exist:
end;
Function ReadCurrentMode:Word;Assembler;
asm
mov ax,4f03h
int 10h
mov ax,bx
end;
Procedure VESAClScr(col:byte);
begin
asm
jmp @beg
@vmc:
pusha { Результат работы подпрогр-мы - переполнение стека }
mov dx,[curwin]
xor bx,bx
call vmc
popa
retn
@beg:
push $A000
pop es
xor di,di
mov ax,[maxy]
mov dx,[maxx]
mul dx
mov bx,ax
inc dx
mov al,[col]
mov [curwin],0
call @vmc {Отсюда нач-ся г-но}
@l1: mov cx,0ffffh
rep stosb
dec dx
jz @ok
inc [curwin]
call @vmc
loop @l1
@ok: mov cx,bx
REP stosb
end;
end;
Ааа... прости глупого :-[ - все работает, вишь ли не сразу врубился в извращенный цикл преобразования адреса процедуры из описаловки параметров VESA. Это ж надо из стринга через орд, умножением на 256!!! :o На всякий случай он у тебя обрабатывается сразу... Буфер сразу сделал локальным -> как следствие вызов процедуры vmc зацикливал всю телегу. А по поводу пердачи параметров: погляди как это реализовано в процедурах выше. Легче всего протрейсить в ТД и ПОСМОТРЕТЬ КАК он это делает. Во-всяком случае у меня инфы по этому поводу никогда не было, поэтому пришлось подсмотреть...
Работа кипит или стоит?
Идет потихонечьку... :(
Отвлекаюсь часто.
А ты как - освободился?
Где-то через недельку 8)
Ну и как, пишется что нибудь? ???
Если что-нибудь есть - кидайте сюда.....гы (с)
народ а зачем вы хотите писать на Турбо Паскале ?
щас все же пишут игры использую DirectX, DirectDraw на Delphi
типа, надо же хоть как отличаться...
Рановато пока для второго фронта!
Хм.... А чем это вы здесь занимаетесь ?
Я тут нашел кое какие формулы... может это они???, т.е. ф-лы поворота точек относительно камеры...
[x'] [1 0 0 -cx] [x]
[y'] [0 1 0 -cy] [y] Позиция камеры
[z'] [0 0 1 -cz] [z]
[1 ] [0 0 0 1 ] [1]
[x'] [m11 m12 m13 m14] [x]
[y'] [m21 m22 m23 m24] [y]
[z'] [m31 m32 m33 m34] [z]
[1'] [m41 m42 m43 m44] [1]
где
m11 = cos(yaw)sin(roll) + sin(yaw)sin(pitch)sin(roll)
m12 = sin(pitch)sin(roll)
m13 = -sin(yaw)cos(roll) + cos(yaw)sin(pitch)sin(roll)
m14 = -(cx*m11 + cy*m12 + cz*m13)
m21 = -cos(yaw)sin(roll) + sin(yaw)sin(pitch)cos(roll)
m22 = cos(pitch)cos(roll)
m23 = sin(yaw)sin(roll) + cos(yaw)sin(pitch)cos(roll)
m24 = -(cx*m21 + cy*m22 + cz*m23)
m31 = sin(yaw)cos(pitch)
m32 = -sin(pitch)
m33 = cos(yaw)cos(pitch)
m34 = -(cx*m31 + cy*m32 + cz*m33)
m41 = 0
m42 = 0
m43 = 0
m44 = 1
(здесь рассматривается свободная камера, поворачиваемая на все три угла - yaw - вокруг y, pinch - вокруг x, roll - вокруг z)
Кидайте сюда любые свои идеи!
ВсЁ кидаем!
Да второй фронт было бы неплохо но на Delphi . А то поразводилось вас 'сионистов'
Тада не второй, а первый... ;)
http://kappasoft.narod.ru/info/3d/3d.htm
Пакет предназначен для вывода графических изображений из файлов формата PCX.
{*********************************************************************
****}
{ }
{ PCXLIB.PAS - Display graphic pictures from PCX format files. }
{ Support CGA/EGA/VGA videoadapters. }
{ }
{ Version 1.00 }
{ }
{ Copyright © 1992 by Zhachkin K.V. / UnfoService-Unison / }
{ }
{*************************************************************************}
{ Note : This module not check current videoadapter and disk errors. }
{$S-,F+} { !!! Don't change this directives !!! }
{$I-}
Unit PCXLib;
{ ************************* } InterFace { ************************ }
Uses Dos,
TPString;
Const DiskBufSize = 20000; { Range 1..65530 }
Type ValidMode = ( CGA320x200x4, CGA640x200x2, EGA320x200x16, EGA640x200x16,
EGA640x350x2, EGA640x350x16, VGA640x480x2, VGA640x480x16,
VGA320x200x256, DUMMYMODE); { DUMMYMODE - End of type }
ModeRec = Record
XRes,
YRes : Word;
BitsPerPixel,
NPlanes,
VideoMode : Byte;
end;
Const MyModes:Array[ValidMode] OF ModeRec =
((XRes:320;YRes:200;BitsPerPixel:2; NPlanes:1; VideoMode:$04),
(XRes:640;YRes:200;BitsPerPixel:1; NPlanes:1; VideoMode:$06),
(XRes:320;YRes:200;BitsPerPixel:1; NPlanes:4; VideoMode:$0D),
(XRes:640;YRes:200;BitsPerPixel:1; NPlanes:4; VideoMode:$0E),
(XRes:640;YRes:350;BitsPerPixel:1; NPlanes:1; VideoMode:$0F),
(XRes:640;YRes:350;BitsPerPixel:1; NPlanes:4; VideoMode:$10),
(XRes:640;YRes:480;BitsPerPixel:1; NPlanes:1; VideoMode:$11),
(XRes:640;YRes:480;BitsPerPixel:1; NPlanes:4; VideoMode:$12),
(XRes:320;YRes:200;BitsPerPixel:8; NPlanes:1; VideoMode:$13),
(XRes:000;YRes:000;BitsPerPixel:0; NPlanes:0; VideoMode:$00));
Var VideoPage : Byte;
Procedure DrawPCX( FName:String; VAR Page:Byte );
{ *********************** } Implementation { ************************}
Type PCXHeader = Record
PCXid : Byte;
VersionNo : Byte;
Encoding : Byte;
BitsPerPixel : Byte;
XL,YL,XH,YH : Word;
Xres,YRes : Word;
Palette : Array[1..48] OF Byte;
Reserved : Byte;
NPlanes : Byte;
BytesPerLine : Word;
PaletteInfo : Word;
Reserved2 : Array[1..58] OF Byte;
end;
MyArray = Array[1..65000] OF Byte;
Procedure CGA_CO_Palette(Hdr:PCXHeader); { Set CGA palette for 320x200 mode }
Var Fore,BackGround : Byte;
begin
Fore:=Hdr.Palette[4] SHR 5;
BackGround:=Hdr.Palette[1] SHR 4;
IF Fore > 4 THEN Dec(Fore,4);
IF Not (Fore IN [0,2]) THEN BackGround:=BackGround OR $10;
IF Fore > 1 THEN Fore:=1
ELSE Fore:=0;
asm
mov bh,0
mov bl,byte ptr BackGround
mov ah,0Bh
int 10h
mov bh,1
mov bl,byte ptr Fore
mov ah,0Bh
int 10h
end;
end;
Procedure CGA_BW_Palette(Hdr:PCXHeader); { Set CGA palette for 640x200 mode }
Var BackGround : Byte;
begin
BackGround:=Hdr.Palette[1] SHR 4;
asm
mov bh,1
mov bl,byte ptr BackGround
mov ah,0Bh
int 10h
end;
end;
Procedure EGA_16_Palette(Hdr:PCXHeader); { Set palette for EGA color modes }
Var I : Byte;
Pal : Array[0..16] OF Byte;
PalPtr : Pointer;
begin
PalPtr:=@Pal;
With Hdr DO
begin
FOR i:=0 TO 15 DO
begin
Pal[i]:=((Palette[i*3+1] AND $48 )+
(Palette[i*3+2] AND $48 ) SHR 1+
(Palette[i*3+3] AND $48 ) SHR 2) SHR 1;
end;
end;
Pal[16]:=0;
asm
les dx,PalPtr
mov ax,1002h
int 10h
end;
end;
Procedure VGA_256_Palette(Hdr:PCXHeader; Var F:File);
{ Set palette for 256-colors VGA mode }
Var I : Word;
Pal : Array[0..768] OF Byte;
PalPtr : Pointer;
begin
PalPtr:=@Pal[1];
Seek(F,FileSize(F)-769);
BlockRead(F,Pal,769);
IF Pal[0] = $0C THEN FOR i:=1 TO 768 DO Pal[i]:=Pal[i] SHR 2;
Seek(F,SizeOF(PCXHeader));
asm
les dx,PalPtr
mov ax,1012h
mov cx,100h
mov bx,0
int 10h
end;
end;
Procedure VGA_16_Palette(Hdr:PCXHeader); { Set palette for 16-colors VGA mode }
Var Pal : Array[1..48] OF Byte;
CurrPtr : Pointer;
i : Byte;
begin
FOR i:=1 TO 48 DO Pal[i]:=Hdr.Palette[i] SHR 2;
CurrPtr:=@Pal[1];
FOR i:=0 TO 15 DO
begin
asm
les di,CurrPtr
mov ax,1007h
mov bl,byte ptr i
int 10h
mov bl,bh
xor bh,bh
mov ax,1010h
mov dh,byte ptr es:[di]
mov ch,byte ptr es:[di+1]
mov cl,byte ptr es:[di+2]
int 10h
end;
Inc(LongInt(CurrPtr),3);
end;
end;
{ *************************** DrawPCX **************************** }
Procedure DrawPCX( FName:String; VAR Page:Byte );
Type OffsSeg = Record
Offs,Seg:Word
end;
Var DiskBuf,
ScrBuf : ^MyArray;
DiskBufRec : OffsSeg Absolute DiskBuf;
ScrBufRec : OffsSeg Absolute ScrBuf;
FHandle,
i,XLen,YLen,
ScrOfs,
BytesPerRow, { Screen row length (in bytes) }
ByteNum, { Byte number to output in line }
VideoBase,
NLines : Word;
InitOutputProc : Pointer;
TestMode : ModeRec; { Video parameters from file header}
Hdr : PCXHeader;
F : File;
Mode : ValidMode;
Label OurMode;
Procedure NextBlock(FHandle:Word); Assembler;
asm
push bx { Dsik error not check !!! }
push cx
xor dx,dx
mov cx,DiskBufSize
mov bx,word ptr FHandle
mov ah,3Fh
int 21h
{ jc error_label for dirk error handling }
pop cx
pop bx
end;
{$F-}
Procedure Init_Output_1_Planes; Assembler;
asm
mov bp,word ptr [bp+4] { Initial settings before output string }
{ to video buffer for 1-bit plane mode }
inc word ptr NLines { ( BW EGA,VGA 256 ) }
mov ax,word ptr NLines
cmp word ptr YLen,ax
je @Finish
mov ax,word ptr BytesPerRow
add word ptr ScrOfs,ax
xor ax,ax
jmp @Exit
@Finish:
xor ax,ax
inc ax
@Exit:
end;
Procedure Init_Output_4_Planes; Assembler;
asm
mov bp,word ptr [bp+4] { Initial settings before output string }
{ to video buffer for 4-bit plane mode }
cmp bl,10h { ( Color EGA,VGA ) }
jne @Not_10
mov bl,1
inc word ptr NLines
mov ax,word ptr BytesPerRow
add word ptr ScrOfs,ax
mov ax,word ptr NLines
cmp word ptr YLen,ax
je @Finish
@Not_10:
mov dx,3C4h
mov al,2
out dx,al { Select Bit Plane }
inc dx
mov al,bl
out dx,al
shl bl,1
xor ax,ax
jmp @Exit
@Finish:
xor ax,ax
inc ax
@Exit:
end;
Procedure Init_Output_CGA; Assembler;
asm
mov bp,word ptr [bp+4] { Initial settings before output string }
{ to video buffer for CGA mode }
inc word ptr NLines
cmp byte ptr VideoBase+1,0B8h
je @Even_Line
mov byte ptr VideoBase+1,0B8h
mov ax,word ptr NLines
cmp word ptr YLen,ax
je @Finish
mov ax,word ptr BytesPerRow
add word ptr ScrOfs,ax
jmp @Not_Finish
@Even_Line:
mov byte ptr VideoBase+1,0BAh
@Not_Finish:
xor ax,ax
jmp @Exit
@Finish:
xor ax,ax
inc ax
@Exit:
end;
{$F+}
begin
IF Pos('.',FName) = 0 THEN FName:= ParamStr(1) +'.PCX';
Assign(F,FName);
Reset(F,1);
IF IOResult <> 0 THEN
begin
Writeln('File ',FName,' not found.');
Halt(1);
end;
BlockRead(F,Hdr,128);
{ IF IOResult <> 0 THEN .... }
With Hdr DO
begin
IF PCXid <> $0A THEN
begin
Writeln('File ',FName,' not PCX file.');
Halt(1);
end;
TestMode.XRes:=XRes;
TestMode.YRes:=YRes;
TestMode.BitsPerPixel:=BitsPerPixel;
TestMode.NPlanes:=NPlanes;
end;
{ Check for validity video parameters }
FOR Mode:=ValidMode(0) TO DUMMYMODE DO
IF CompStruct(TestMode, MyModes[Mode], 6) = Equal THEN GoTo OurMode;
Writeln('File ',FName,' is not my image.');
Writeln(' XRes=',TestMode.XRes,
' YRes=',TestMode.YRes,
' BitsPerPixel=',TestMode.BitsPerPixel,
' NPlanes=',TestMode.NPlanes);
Halt(1);
OurMode:
i:=MyModes[Mode].VideoMode;
asm
mov ax,word ptr i { Set required mode }
int 10h
end;
FHandle:=FileRec(F).Handle;
With Hdr DO
begin
XLen:=BytesPerLine;
YLen:=Succ(YH-YL);
ByteNum:=Succ(XH-XL) DIV 8 * MyModes[Mode].BitsPerPixel;
BytesPerRow:=XRes DIV 8 * MyModes[Mode].BitsPerPixel;
GetMem(ScrBuf,XLen+63+16);
GetMem(DiskBuf,DiskBufSize+16);
end;
{ Normalize pointers - for higher speed }
DiskBufRec.Seg:=DiskBufRec.Seg+DiskBufRec.Offs SHR 4+1;
DiskBufRec.Offs:=0;
ScrBufRec.Seg:=ScrBufRec.Seg+ScrBufRec.Offs SHR 4+1;
ScrBufRec.Offs:=0;
ScrOfs:=0;
IF Mode IN [EGA320x200x16, EGA640x200x16, EGA640x350x2, EGA640x350x16]
THEN ScrOfs:=VideoPage*MemW[0:$44C]
ELSE VideoPage:=0; { Only 1 VideoPage Allowed }
{ Set Palette }
CASE Mode OF
CGA320x200x4 : CGA_CO_Palette(Hdr);
CGA640x200x2 : CGA_BW_Palette(Hdr);
VGA320x200x256: VGA_256_Palette(Hdr,F);
VGA640x480x16 : VGA_16_Palette(Hdr);
ELSE IF Hdr.NPlanes = 4 THEN EGA_16_Palette(Hdr);
end; { CASE }
IF Hdr.NPlanes = 4 THEN
begin
NLines:=0;
VideoBase:=$A000;
InitOutputProc:=Addr(Init_Output_4_Planes)
end
ELSE
begin
ScrOfs:=Word(ScrOfs-BytesPerRow);
NLines:=Word(-1);
VideoBase:=$A000;
InitOutputProc:=Addr(Init_Output_1_Planes);
end;
IF Mode IN [CGA320x200x4, CGA640x200x2] THEN
begin
NLines:=Word(-1);
VideoBase:=$BA00;
InitOutputProc:=Addr(Init_Output_CGA);
end;
asm
push ds { CX - repeating counter }
mov si,word ptr DiskBuf+2 { DS:SI - DiskBuf }
mov ds,si { ES:DI - ScrBuf }
xor si,si { BL - Bit Map Mask (1,2,4,8,) }
mov di,word ptr ScrBuf+2
mov es,di
xor di,di
push word ptr FHandle
push bp
call NextBlock
xor si,si
@Not_1_Plane:
mov bl,1 { Mask for 4-Planes }
mov cx,0
@Repeat:
lodsb
or cx,cx
je @Not_Fill
rep stosb
jmp @Za_IF
@Not_Fill:
cmp al,0C0h
jnb @Not_Ordinal
stosb
jmp @Za_IF
@Not_Ordinal:
and al,3Fh
xor ah,ah
mov cx,ax
@Za_IF:
mov ax,si
inc ax
cmp ax,DiskBufSize
jna @Not_NextBlock
push word ptr FHandle
push bp
call NextBlock
xor si,si
@Not_NextBlock:
mov ax,di
inc ax
cmp ax,word ptr XLen
jna @Not_Show
{ ***************************** SHOW LINE *************************** }
push bp
call word ptr InitOutputProc
or ax,ax
jne @End_Picture
push cx
sub di,word ptr XLen
mov cx,di
push ds
push si
push di
push es
pop ds
push cx
push es
mov ax,word ptr VideoBase
mov es,ax
mov di,word ptr ScrOfs
xor si,si
mov cx,word ptr ByteNum
rep movsb
pop es
pop cx
xor di,di
mov si,di
add si,word ptr XLen
rep movsb
pop di
pop si
pop ds
pop cx
{ ******************************************************************* }
@Not_Show:
jmp @Repeat
@End_Picture:
pop ds
end;
end;
end. { ********* End of PCXLib ********* }
ого! вот это модуль!!! :o
Только толку от него мало - уматали все!
Если б это был JPEG... с его этими хреновыми косинус-дискретными преобразованиями и возможностью установки Q-фактора... ;)
Вот здесь JPEG http://www.proglib.ru/browse.asp?id=31
Вернулся опять к 3d... как многозадачная система прямо... вы скажите, вам чего конкретно - кода, формул или готового движка?
Тока на тему последнего - не люблю играть в темную, поэтому нужно поговорить где-нибудь вживую...
P.S. Спецом крутым себя не считаю, поэтому помогу чем могу, много не обесчаю...
Привет всем!
Заранее прошу прощения, но я не могу здесь понять одного - ПОЧЕМУ ЭНТУЗИАЗМ НЕ МОЖЕТ БЫТЬ НАПРАВЛЕН В СТОРОНУ КОММЕРЦИИ? ???
Зачем пытаться разработать думоподобный движок, основанный на спрайтах, если времена спрайтов однозначно прошли. А 3D движок Quake 2 - уже на свободе, по-крайней мере для некоммерческого использования... Да и для коммерческого использования он стоит сейчас не ~100 000$, а ~10 000$.
Именно с исходниками Quake 2 я сейчас и дуплюсь... Только вчера скачал...
В случае, если это кого-то заинтересует, готов серьезно на этом зациклиться - не хочу быть нищим.
Главное, чтобы потенциальная команда понимала, что при отсутствии начального капитала (а это и есть энтузиазм) зарплату никто и никому платить не будет. Сначала необходимо сделать что-либо стоящее, затем попытаться трансформировать его в коммерческий продукт, разрекламировать, попытаться продать, открыть свою контору (пусть маленькую, но крепкую), засветиться в IT кругах, увеличить обьемы, а затем уже нанимать других программистов на обычную стабильную зарплату.
Пара вопросов тогда:
Ты что нищий?
Думаешь ты первый?
Я лично занимаюсь программированием только из интереса, у меня есть стабильная работа и все такое. Но и энтузиазм тож имеется, а помощь вполне могу предоставить только, к сожалению, только на Паскале или асме. А исходники-то кваковские вроде как на Си?
Да и сделать что-либо стоящее на обломках кваки вряд-ли можно...
И меня к слову не прет это долбаное ООП с его велосипедом. Обидно, что самому делать уже ничего не надо, потому и захотелось написать дум-движок.
Понятно.
почему чтобы работать программёром нужно обязательно делать игры? ерунда какая
щас этих игродельщиков как собак нерезанных
Лично меня квака не прет, хотя бы поэтому мне это уже неинтересно!
Народ что будем делать с ЭТИМ МЯСОМ?
ПОхоже =)) что ничего путного из этого не вышло, т.к. последний пост аж в октябре =) т.е. полгода назад, т.е. мона закрывать, или оставить висеть - до появления умных идей
ИМХО надо набрать группу и не в СТАТИЧНОМ порядке работать а в активном - т.е. встречи в мирк, разбиение на задачи, ежедневное доложения результатов работы, У МЕНЯ ОПЫТ ЕСТЬ =) я щас веду свой проект на дельфи+Direct X :D
Dark ты когда заведешь аську? Поговорим о будущем
293688866, уже года полтора как =), просто возможно не вывешивал
Я по ночам только по МСК с 2х до 8