Diskuze o textových hrách

PureBASIC

zxretrosoft

  • Plný člen
  • ***
    • Příspěvků: 234
    • Zobrazit profil
    • zxretrosoft
Pro všechny, kdo touží programovat na basicovské bázi a hledají něco víc.

Obětoval jsem se  :) a koupil za cca 2000 Kč (79 €) kompiler PureBASICu.

http://www.purebasic.com/

Musím říct, že jsem zatím unešen. Nic lepšího člověk za svůj život hned tak nevidí. Dostanete za tu cenu perfektní editor, form editor, veškeré nástroje, knihovny, ukázky atd., a to vše daleko efektivnější, přívětivější a lepší než např. Visual Studio, které se pohybuje na cca 15000 Kč. Navíc nemusíte instalovat 10 věcí (kde stejně nevíte k čemu je 8 z nich), všechno je v jednom docela malinkatém balíku. Nechybí podpora ASM a spousta dalších vychytávek.
Zatím si tedy zvykám na trošku rozdílnou logiku grafických výstupů, pořád jsem nepochopil nějaké "podstatné drobnosti" a smířit se musíte taky s určitou hybriditou mezi Basicem, Pascalem a C++ a možná i jinými jazyky.

Kdo je zvyklý na Basic a vyhovuje mu, rozhodně doporučuji, stojí to za to!  8)
Jedna stará textovka vydá za desítky dnešních nadutých her.


wankes

  • Nováček
  • *
    • Příspěvků: 17
    • Zobrazit profil

Hm, vypadá to hezky...stáhl jsem DEMO a zkusím....ale...

já měl koupeno orig MS Visual Basic 6.0 learning - stálo mě to asi 1300,- vč. poštovného, velká krabice vč. CDček s MSDN a hezkých tlustých manuálů v CZ.
   Svého času rovněž krabice HiSoft Basic na Atari ST orig, opět super dokumentace. (německy)
takže TO je to, co mi vadí na dnešní době, manuály v PDF.

Každopádně popiš první dojmy, testy, rychlost...pocity...hm ?
(ex-STklub Brno, Sega MegaDrive, Sharp MZ, kalkulatory HP/TI)


zxretrosoft

  • Plný člen
  • ***
    • Příspěvků: 234
    • Zobrazit profil
    • zxretrosoft

Hm, vypadá to hezky...stáhl jsem DEMO a zkusím....ale...

já měl koupeno orig MS Visual Basic 6.0 learning - stálo mě to asi 1300,- vč. poštovného, velká krabice vč. CDček s MSDN a hezkých tlustých manuálů v CZ.
   Svého času rovněž krabice HiSoft Basic na Atari ST orig, opět super dokumentace. (německy)
takže TO je to, co mi vadí na dnešní době, manuály v PDF.

Každopádně popiš první dojmy, testy, rychlost...pocity...hm ?

To je pravda, taky mi ta PDF atmosféra moc nesedí, ale vytiskl jsem si ten obří manuál fyzicky a dal ho do tepelné vazby, vypadá to docela dobře a stálo mě to asi 100 Kč.
HiSoft Basic na ST je opravdu klasika, nádhera, jeho logice je nicméně o dost blíž FreeBasic než PureBasic.

A teď k tomu PureBasicu. Je to můj osobní názor, vědom si toho, že každému může vyhovovat něco jiného. PureBasic je podle mě ultra-profesionální práce. VB 6.0 je proti tomu hračka pro děti, tohle je o level úplně jinde. Práce s grafikou, konečně vyřešené sprity se vším všudy (jako kdysi na C64  :) ), práce s 3D grafikou, kamery, vytváření vlastních DLL, přehlednost kódu, úplně nesrovnatelné s čímkoliv, s čím jsem se dosud setkal.

To demo určitě zkus, hodně napoví (ale nemáš v něm právě např. 3D grafiku či DLL).

Rychlost je maximální, tam, kde bys potřeboval ještě urychlit, dají se snadno zakomponovat rutinky ASM, ale předpokládám, že to na máloco bude potřeba.
Jedna stará textovka vydá za desítky dnešních nadutých her.


wankes

  • Nováček
  • *
    • Příspěvků: 17
    • Zobrazit profil
Tady jsem k němu našel i něco v CZ

http://people.fsv.cvut.cz/~svobodal/pure/index.htm
(ex-STklub Brno, Sega MegaDrive, Sharp MZ, kalkulatory HP/TI)


panprase

  • Administrátor
  • Superčlen
  • *****
    • Příspěvků: 695
    • Zobrazit profil
Jo, kdysi dávno asi tak před třemi lety jsem byl z PB nadšenej. Líbila se mi multiplatformnost. Napsat textovku na PC, Maca a Linux je tak trochu můj sen.

Bohužel jsem narazil na některé limitace/problémy, tuším, že to bylo kódování češtiny a už si to nepamatuju.

Jako další kandidát byl Blitz - je to v podstatě Amos like basic. Tam je zase problém s tím, že jede bez problémů jen na XP.

No a jako poslední byl na řadě Dark basic, což je odvozenina od Blitze, ale s ním jsem se asik dostal nejdál. Napsal jsem v něm demo gamesky, pár lokací bez přiběhu sice, on tedy k to u nějaký je ale testovačka ho neobsahuje. Jedinej problém je snad s programovánim samotným, editor je příšernej, nějak jsem nepřišel na to jak u fontů zapnout Clear Type, takže výsledek vypadá naprosto strašně. Pokud by byl zájem pak ukážu demo ;)

Travil jsem u toho loňské léto, tedy vlastně předloňské - vysledkem je jediný exe. Tedy je nutné k němu přiložit ještě nějaké dll jinak se program nepustí.

No a jak ne známo, vyprd sem se na to a sáhl po úspěšném Amos basicu pro Amigu ;)
První den přiletěli, druhý den uděřili, třetí den zvítězili


zxretrosoft

  • Plný člen
  • ***
    • Příspěvků: 234
    • Zobrazit profil
    • zxretrosoft
wankes: Výborně, práci si přečtu, třeba se něco zajímavého dozvím  8) V češtině je toho opravdu málo.

panprase: To kódování češtiny se dá snadno obejít, pokud si vytvoříš vlastní fonty pomocí bodů (což je vůbec nejlepší). Není to žádný problém, stačí je nakreslit třeba v ArtStudiu a pak to přebodovat. Takhle jsem např. udělal ZX písmo do hry. Je to práce tak na 1-2 hodiny.

Tak, zkoušel jsem už několik věcí, ale pořád nemůžu přijít na něco úplně základního. Třeba budete vědět jak na to. Zkusím to co nejvíce ztrivializovat. Nakreslím jeden bod.

Kód: [Vybrat]
;velikost windows okna
OpenWindow(0,0,0,370,280,"Example",
           #PB_Window_SystemMenu|#PB_Window_ScreenCentered)

;velikost obrazu v okně (nakreslí se černě)
CreateImage(0,200,200)

;start kreslení
StartDrawing(ImageOutput(0))

;nakreslení barevného boxíku 150x120
Box(10,10,150,120,RGB(210,48,89))

;bod na souřadnici 25 a 25
Plot(25,25,RGB(255,255,255))

;stop kreslení
StopDrawing()
;zobrazení obrazu (gadget 0)
ImageGadget(0,0,0,200,200,ImageID(0))

;čekat na zavření okna
Repeat
  event=WaitWindowEvent()
Until event=#PB_Event_CloseWindow

End

Výsledek: http://www.edisk.cz/stahnout-soubor/00291/1bod.exe_50.5KB.html

Když chci body rozmístit náhodně na obrazovku, udělám to např. takto:

Kód: [Vybrat]
;velikost windows okna
OpenWindow(0,0,0,370,280,"Body PureBASIC",
           #PB_Window_SystemMenu|#PB_Window_ScreenCentered)

;velikost obrazu v okně (nakreslí se černě)
CreateImage(0,200,200)

;start kreslení
StartDrawing(ImageOutput(0))

;nakreslení barevného boxíku 150x120
Box(10,10,150,120,RGB(210,48,89))

;náhodné rozmístění bodů
For i=1 To 1000
  j=Int(Random(148)+10)
  k=Int(Random(118)+10)
  Plot(j,k,RGB(255,255,255))
Next i

;stop kreslení
StopDrawing()

;zobrazení obrazu (gadget 0)
ImageGadget(0,0,0,200,200,ImageID(0))

;čekat na zavření okna
Repeat
  event=WaitWindowEvent()
Until event=#PB_Event_CloseWindow

End

Výsledek: http://www.edisk.cz/stahnout-soubor/06259/body.exe_51KB.html


Tak, a teď chci, aby se ty body vykreslily pomalu, aby to bylo vidět. A toho nemůžu dosáhnout. Pro představu jsem to udělal ve FreeBasicu takto:

Kód: [Vybrat]
dim shared as single i,j,k

screenres 370,280,32,0
paint(0,0),rgb(224,223,227)

windowtitle "Body FreeBASIC"

for i=0 to 200
    line(i,0)-(i,200),rgb(0,0,0),b
next i

for i=10 to 160
    line(i,10)-(i,130),rgb(210,48,89),b
next i

for i=1 to 1000
    j=int(rnd*150+10)
    k=int(rnd*120+10)
    pset(j,k),rgb(255,255,255)
    sleep 10
next i

sleep
end

Požadovaný výsledek: http://www.edisk.cz/stahnout-soubor/19774/body2.exe_96.5KB.html

Ale v PureBasicu mi to pořád nejde, asi je to tím, že jsem pořádně nepochopil tu logiku výstupu přes gadget. Když to udělám přes proceduru (nebo i přes GOSUB), tak to dělá tohle:

Kód: [Vybrat]
Global a.l,b.l,c.l,i.l

Declare body()

;velikost windows okna
OpenWindow(0,0,0,370,280,"Body PureBASIC",
           #PB_Window_SystemMenu|#PB_Window_ScreenCentered)

;velikost obrazu v okně (nakreslí se černě)
CreateImage(0,200,200)

i=1
Repeat
  body()
Until i=1000

;čekat na zavření okna
Repeat
  event=WaitWindowEvent()
Until event=#PB_Event_CloseWindow

End

;podprogram
Procedure body()

  j=Int(Random(148)+10)
  k=Int(Random(118)+10)

;start kreslení
StartDrawing(ImageOutput(0))

Plot(j,k,RGB(255,255,255))

;stop kreslení
StopDrawing()

;zobrazení obrazu (gadget 0)
ImageGadget(0,0,0,200,200,ImageID(0))
i=i+1
EndProcedure

Výsledek: http://www.edisk.cz/stahnout-soubor/35679/body3.exe_51KB.html

Nevíte jak na to?
« Poslední změna: 1. Květen 2013 - 11:02 od zxretrosoft »
Jedna stará textovka vydá za desítky dnešních nadutých her.


zxretrosoft

  • Plný člen
  • ***
    • Příspěvků: 234
    • Zobrazit profil
    • zxretrosoft
Tak "problém" se mi podařilo vyřešit, jde o to, že ten gadget je opravdu použití jiné logiky zobrazení a je zapotřebí zobrazovat body na plochu okna a ne na gadget. Teď však vyvstal ještě ten problém, že při překrytí okna se smažou i ty tečky, takže to budu muset ještě doladit. Ale tohle je základ rastrové grafiky.

Kód: [Vybrat]
#WINDOW=1
#FLAGS=#PB_Window_SystemMenu | #PB_Window_ScreenCentered
OpenWindow(#WINDOW,0,0,300,200,"Body",#FLAGS)

StartDrawing(WindowOutput(#WINDOW))

For i=1 To 1500
  j=Random(190)
  k=Random(150)
  Plot(j,k,RGB(0,0,0))
  Delay(2)
Next i

StopDrawing()

Repeat
  Event=WaitWindowEvent()
Until Event=#PB_Event_CloseWindow

End

Výsledek pro nedočkavce: http://www.edisk.cz/stahnout-soubor/01585/bodyPB.exe_25.5KB.html
« Poslední změna: 1. Květen 2013 - 11:02 od zxretrosoft »
Jedna stará textovka vydá za desítky dnešních nadutých her.


zxretrosoft

  • Plný člen
  • ***
    • Příspěvků: 234
    • Zobrazit profil
    • zxretrosoft
A abyste neřekli, tak už přidám nějaké experimenty se sprity  8)

18 kuliček, sprite 1 kulička, některé vystřelují kvůli vyššímu nastavení FrameRate:

http://www.edisk.cz/stahnout-soubor/77535/18kulicekTAN.exe_34.5KB.html

Pro představu rychlosti PureBasicu dávám 850 kuliček, pohyb COS + TAN (je vidět, že na hry je PB naprosto v klidu):

http://www.edisk.cz/stahnout-soubor/91671/850kulicek.exe_34.5KB.html

A stejně např. když použiju jako sprite 1 bod, tak udělám pozadí třeba jako do nějaké střílečky, celkem 1200 hvězd, 4 roviny:

http://www.edisk.cz/stahnout-soubor/62479/1200hvezd4roviny.exe_34KB.html
« Poslední změna: 1. Květen 2013 - 11:02 od zxretrosoft »
Jedna stará textovka vydá za desítky dnešních nadutých her.


panprase

  • Administrátor
  • Superčlen
  • *****
    • Příspěvků: 695
    • Zobrazit profil
Koukám, že ses do toho Pure Basicu pustil, to je dobře, aspoň ho chápeš, já jsem vedle jak ta jedle, zase na druhou stranu jsem se začal opět pokukovat po BlitzMaxu, přeci jen mi přijde tak nějak blíže, sice je to už trošku jinej Basic a tak si říkám, že bych v tom mohl zkusit něco udělat. No mám na to tedy jen 30 dní, pak končí trial a 70+ Eur se mi za to zatím moc dávat nechce, dokud se nenaučím pár maličkostí.

Pak bych snad mohl naportovat 12tku pro OSX.
První den přiletěli, druhý den uděřili, třetí den zvítězili


zxretrosoft

  • Plný člen
  • ***
    • Příspěvků: 234
    • Zobrazit profil
    • zxretrosoft
Koukám, že ses do toho Pure Basicu pustil, to je dobře, aspoň ho chápeš, já jsem vedle jak ta jedle, zase na druhou stranu jsem se začal opět pokukovat po BlitzMaxu, přeci jen mi přijde tak nějak blíže, sice je to už trošku jinej Basic a tak si říkám, že bych v tom mohl zkusit něco udělat. No mám na to tedy jen 30 dní, pak končí trial a 70+ Eur se mi za to zatím moc dávat nechce, dokud se nenaučím pár maličkostí.

Pak bych snad mohl naportovat 12tku pro OSX.

Mně to přijde všechno hodně podobné, díval jsem se na ten BlitzMax a vypadá to, že to má stejné možnosti (těžko takhle definitivně dopředu slepě soudit, ale asi jo). Každopádně nejblíže logice Amosu je FreeBasic a pokud nechceš platit, tak určitě stojí za to. Oproti PureBasicu nemá plnou podporu spritů, ale pokud nechceš dělat lepší 3D hry či nějaké kombinace grafiky ap., tak je to jedno a bohatě stačí. Ve FreeBasicu uděláš všechno i zadarmo.
Jedna stará textovka vydá za desítky dnešních nadutých her.


zxretrosoft

  • Plný člen
  • ***
    • Příspěvků: 234
    • Zobrazit profil
    • zxretrosoft
Panprase:

Tak textovku bys ve FreeBasicu udělal jak nic, dokonce není problém ani s grafikou, přebodoval jsem tvou podobiznu a udělal z ní takový malý sprite, a pro ukázku jsem udělal i vlastní ZX-font v ArtStudiu. Můžu samozřejmě nakreslit jakýkoli, práce s FreeBasicem je skutečně luxusní  :)

Stáhni si tohle jako ukázku:
http://www.edisk.cz/stahnout-soubor/60503/panp.exe_291.5KB.html
Jedna stará textovka vydá za desítky dnešních nadutých her.


panprase

  • Administrátor
  • Superčlen
  • *****
    • Příspěvků: 695
    • Zobrazit profil
No teda to je ale pěkný, skoro jako ze Spectra, tak kdy bude nějaká textovka v Pure a nebo Free basicu?
První den přiletěli, druhý den uděřili, třetí den zvítězili


wankes

  • Nováček
  • *
    • Příspěvků: 17
    • Zobrazit profil
Já na něčem začínám pracovat, ale zatím trošku přešlapuji na místě.
Přemýšlím v čem to napsat a jak.
Každý z nich má své specifika, navíc řeším zda lokace a události dělat do DATA řádků, nebo
jako txt soubor a načítat extra.
(ex-STklub Brno, Sega MegaDrive, Sharp MZ, kalkulatory HP/TI)


zxretrosoft

  • Plný člen
  • ***
    • Příspěvků: 234
    • Zobrazit profil
    • zxretrosoft
panprase: Díky  ;) Já jsem chtěl jen ukázat, jak to jde ve Freebasicu snadno, dokonce i sprity. Textovku ale neplánuji, já na to nemám hlavu. Spíš počkám a těšim se, co zas naprogramujete vy  :)

wankes: Jednoznačně to nedávat do TXT a nenačítat extra, dokud to jde, mnohem lepší je READ-DATA a jediný EXE soubor. Ve freebasicu máš neomezenou paměť, není co řešit. Podle mě je lepší samozřejmě ten PureBasic, ale zase za freebasic nemusíš platit a můžeš už psát od teďka  :)
(Klidně pošli nějakou představu a já to zkusim do FB dostat.)
Jedna stará textovka vydá za desítky dnešních nadutých her.


panprase

  • Administrátor
  • Superčlen
  • *****
    • Příspěvků: 695
    • Zobrazit profil
wankes: Jednoznačně to nedávat do TXT a nenačítat extra, dokud to jde, mnohem lepší je READ-DATA a jediný EXE soubor. Ve freebasicu máš neomezenou paměť, není co řešit. Podle mě je lepší samozřejmě ten PureBasic, ale zase za freebasic nemusíš platit a můžeš už psát od teďka  :)
(Klidně pošli nějakou představu a já to zkusim do FB dostat.)

Tak trochu si dovolím nesouhlasit, doporučoval bych data hry umístit do externího souboru, třeba jednoho, to je jedno, hlavně se to lépe edituje a popřípadě i portuje do jiného jazyka.

Ostatně tohle jsem poslední tři roky vymejšlel, zprvu jsem cvakal texty jako trotl do "DATA", když uděláš překlep, nebo nějakou chybu tak se to v tom blbě hledá. Tak jsem si napsal cosi, co dokáže kontrolovat engine hry, aniž bych musel pracně psát konstrukty IF THEN ENDIF atd.

Následně jsem řešil ovšem problém jak tyhle soubory zakryptovat, aby se případně zatuhnuvší hráč do textů nepodíval - vyřešil jsem - i když šifrování se rozlousknout dá, jako ostatně u většiny textovek, co mají texty v externích souborech.

Na druhou stranu asi nebudu mít problém naportovat třeba "12" do jiného jazyka, což se ostatně i děje.


První den přiletěli, druhý den uděřili, třetí den zvítězili