CoolBasic Classic: Kehitysuutisten kommentit

CoolBasiciin yleisesti liittyvä keskustelu.
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Zero »

Pon wrote:ei tää koskaa valmistu prkl...
CBEnchanted on hyvä vaihtoehto tässä odotellessa.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
User avatar
Timblex
Advanced Member
Posts: 252
Joined: Sun Apr 11, 2010 10:37 am
Location: Kouvola

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Timblex »

Onko kenelläkään tietoa siitä, että tuleeko mikään uusi versio coolbasicista koskaan valmistumaan?
Entinen timpe99...
Demokisa 2013 demo valmis, Check it out!
User avatar
CCE
Artist
Artist
Posts: 650
Joined: Mon Aug 27, 2007 9:53 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by CCE »

Timblex wrote:Onko kenelläkään tietoa siitä, että tuleeko mikään uusi versio coolbasicista koskaan valmistumaan?
Asiasta sen enempää tietämättä täytyy myöntää että aika heikoltahan tämä näyttää.

Tässä muutamia vaihtoehtoja CoolBasicille:
  • LÖVE: Lua-skriptattava 2D-pelimoottori. Cross-platform ja yhteisö vaikuttaa eläväiseltä. Kirjastojen nimet ovat joskus ällöjä.
  • Flixel on varsin suosittu Flash-pelikirjasto. Pelit ohjelmoidaan ActionScript 3 kielellä, joka on vähän kuin Java.
  • Processing on erinomainen valinta nopeaan grafiikkaohjelmointiin. Mukana tulee yksinkertainen IDE ja virtaviivainen grafiikkakirjasto.
  • GNU Octave on oivallinen mikäli mielessä ovat jonkinlaiset simulaatiot tai pikaiset automaattiset laskutoimitukset.
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by axu »

Mitä tämä on? Blogiin on alkanut ilmestymään postauksia! Ilmeisesti siis kulissien takana oikeasti tapahtuu jotain, vaikka useimmat lienee jo menettäneet uskonsa CB:n paluuseen (allekirjoittanut mukaan lukien). Mukava lukea kehityksestä. Tsemppiä kehitystiimille!
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Zero »

axu wrote:Mitä tämä on? Blogiin on alkanut ilmestymään postauksia! Ilmeisesti siis kulissien takana oikeasti tapahtuu jotain, vaikka useimmat lienee jo menettäneet uskonsa CB:n paluuseen (allekirjoittanut mukaan lukien). Mukava lukea kehityksestä. Tsemppiä kehitystiimille!
:)
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Awaclus »

Ymmärtäähän sen, että julkaisussa kestää, kun ensin täytyy kehittää aikakone, jotta vielä ehtisi vuoden 2012 aikana sen julkaisemaan. :P
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Zero »

Se hirveä weppisivu pitää korvata jossain vaiheessa.

Mutta laitetaan sitten kertarysäyksellä uusiksi...
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
Pettis
The Evil Admin
The Evil Admin
Posts: 1044
Joined: Sun Aug 26, 2007 5:08 pm
Location: Rovaniemi
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Pettis »

Zero wrote:Se hirveä weppisivu pitää korvata jossain vaiheessa.

Mutta laitetaan sitten kertarysäyksellä uusiksi...
Eli vaihdetaan koko vuosiluku?
CB Repository .com - Sinne ne kaikki koodit menneet on!
MunVerkko - Ilmaisia foorumeita ja blogeja
User avatar
skinkken
Advanced Member
Posts: 453
Joined: Sat Sep 01, 2007 4:00 pm
Location: Helsinki

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by skinkken »

Zero wrote:
axu wrote:Mitä tämä on? Blogiin on alkanut ilmestymään postauksia! Ilmeisesti siis kulissien takana oikeasti tapahtuu jotain, vaikka useimmat lienee jo menettäneet uskonsa CB:n paluuseen (allekirjoittanut mukaan lukien). Mukava lukea kehityksestä. Tsemppiä kehitystiimille!
:)
Mites on kehityksen laita, kokonaisuutta ajatellen? Kuinka suuri osa työstä on tehty? Haluttaisi päästä tekemään jotain pientä peliä, mutta nykyinen cb alkaa olla jo niin vanhentunut ettei windows 8 pyöritä. Tästä kyllä tulee kaikkein paras ohjelmointikieli helppous/ominaisuus -suhteeltaan!
Valmiit pelit: House of Horrors , Battle Zone , Über Ball , Itdoti , Space Chaos , Bloxxplosives
Projekti jota teen ehkä joskus vielä: viewtopic.php?f=11&t=2636 <-- Tämä rivi päivitetty 14.1.2013
Pettis
The Evil Admin
The Evil Admin
Posts: 1044
Joined: Sun Aug 26, 2007 5:08 pm
Location: Rovaniemi
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Pettis »

skinkken wrote:
Zero wrote:
axu wrote:Mitä tämä on? Blogiin on alkanut ilmestymään postauksia! Ilmeisesti siis kulissien takana oikeasti tapahtuu jotain, vaikka useimmat lienee jo menettäneet uskonsa CB:n paluuseen (allekirjoittanut mukaan lukien). Mukava lukea kehityksestä. Tsemppiä kehitystiimille!
:)
Mites on kehityksen laita, kokonaisuutta ajatellen? Kuinka suuri osa työstä on tehty? Haluttaisi päästä tekemään jotain pientä peliä, mutta nykyinen cb alkaa olla jo niin vanhentunut ettei windows 8 pyöritä. Tästä kyllä tulee kaikkein paras ohjelmointikieli helppous/ominaisuus -suhteeltaan!
Miitin perusteella valmiina on editorin valikot, eli n. 72,69% kääntäjästä. ;)
CB Repository .com - Sinne ne kaikki koodit menneet on!
MunVerkko - Ilmaisia foorumeita ja blogeja
Mikki0000
Member
Posts: 63
Joined: Tue Dec 27, 2011 11:50 pm
Location: Päijät-Häme

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Mikki0000 »

Pettis wrote: Miitin perusteella valmiina on editorin valikot, eli n. 72,69% kääntäjästä. ;)
Höpö höpö juttuja, kaikki tietää että coolbasic on jo kuollut.
exe tiedosto swf muotoon: Lopetettu
Tervetuloa lukemaan foorumin noloimman käyttäjän viestejä!
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Awaclus »

Mikki0000 wrote:
Pettis wrote: Miitin perusteella valmiina on editorin valikot, eli n. 72,69% kääntäjästä. ;)
Höpö höpö juttuja, kaikki tietää että coolbasic on jo kuollut.
Mie en tiennyt.
Mikki0000
Member
Posts: 63
Joined: Tue Dec 27, 2011 11:50 pm
Location: Päijät-Häme

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Mikki0000 »

Awaclus wrote:
Mikki0000 wrote:
Pettis wrote: Miitin perusteella valmiina on editorin valikot, eli n. 72,69% kääntäjästä. ;)
Höpö höpö juttuja, kaikki tietää että coolbasic on jo kuollut.
Mie en tiennyt.
Pitäis tietää...
Kannattaa vaihtaa coolbasic vaikka c++ tai c#
exe tiedosto swf muotoon: Lopetettu
Tervetuloa lukemaan foorumin noloimman käyttäjän viestejä!
User avatar
Ilmuri
Developer
Developer
Posts: 277
Joined: Sun Aug 26, 2007 2:46 pm
Location: \o

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Ilmuri »

Tosikoodarihan on jo tässä ajassa siirtyny C-johdannaisista Lispin, Prologin ja Haskellin kautta Malbolgeen.
CoolBasic henkilökuntaa
Kehittäjä
CoolBasic Classic
atomimalli
Moderator
Moderator
Posts: 227
Joined: Wed Aug 29, 2007 3:55 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by atomimalli »

Olettekos tätä nähneet? https://github.com/Latexi95/CBCompiler/tree/develop
Siinä olisi toinen lupaava projekti odotellessa. Siitä on jossain muutama vanhentunut paketti jossain, mutta kannattaa ladata ja kääntää itse jos pystyy niin voi osallistua kehitykseen vaikka ajankohtaisilla raporteilla tai itse koodaamalla
.
Se osaa aika jänniä juttuja ja kääntää natiiviksi. Funktiopointterit ja rinnakkaisuus ja taitaa nyt olla viimesimpänä tekeillä peruskomentojen lisäksi. Ja jotain opengl-testiäkin taisi olla.
tests-kansiossa on esimerkkejä, joista suurin osa toimii.

Päivitin mökillä raytraceriani hyödyntämään tuon nopeutta ja tein samalla pienen vektorikirjaston. Magetzub jatkoi sitä juuri matriisikirjastolla.

Vanha coolbasic-koodi ei toimi CBCompilerilla yleensä suoraan toisin kuin CBE:llä, sillä siihen on lisätty vahva tyypitys ja muutettu syntaksia ja semantiikkoja hiukan ja lisäilty muita juttuja, jotta siitä saisi vahvemman ja mukavamman kielen vaativammillekin koodaajille.

Kieli on perusosiltaan valmis ja nyt siihen on tekeillä "ylimääräisiä" herkkuja, Eniten kesken taitaa olla runtime, joka ei ole vielä yhtä kattava kuin CoolBasicissa, vaikka siinäkin kivoja lisiä.

Nopeudesta en tainnut muistaa mainita... Kauan sitten efektitopicissa julkaisemani muutaman pallon raytraceri, joka tuotti yhden kuvan noin kymmenessä sekunnissa, toimii CBCompilerilla reaaliaikaisesti varjojen ja muiden lisäysten kanssakin.
Tässä on esimerkkikuva: Image
Teoriassa nopeudessa olisi vielä parannettavaa reilustikin. Tietysti nopeampi tietokonekin auttaisi, mutta myös rinnakkaisuus ja pikkusäätö piirrossa ehkä.
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by MaGetzUb »

Kuten Atomimalli, tuossa ylemmässä viestissä kirjoittikin. CoolBasic ei ainakaan meidän puolestamme ole kuollut. Tästä voitte kokeilla koodaamaani pallojen fysiikkasimulaatiota uudemmalle "CB" kääntäjälle.

Tässä myös ohjelman koodi, jos joku haluaa tutkia koodia, ja nähdä miten se toimii tällä meidän "CB":lä.

Code: Select all

Rem Ball physics
By. MaGetzub
License: Do what ever you like with it. :)
EndRem 

Include "AdvancedMaths.cb"

//You can modify these Constants how ever you like.
//A gravity 
Const Gravity As Float = 9.81
//How many pixels on a screen is a meter, this is somehow misleading..
Const MeterPerPixel As Float = 100.0

//How much there's friction on a surface?
Const SurfaceFriction As Float = 1.25

//Screen size.. 
Const SW As Integer = 1280
Const SH As Integer = 720



//Collection of data for balls 
Type Balls
    Field mPos As Vector2 //Ball's position vector
    Field mVel As Vector2 //Ball's velocity vector
    Field mRad As Float //Balls radius
    Field mMass As Float //Ball's mass
EndType 

//Collection of data for collision handling between balls
Type CollisionPair
	Field Ball1 As Balls //Ball1 handle
	Field Ball2 As Balls //Ball2 handle
EndType 

//Collection of data for walls 
Type Walls
	Field mStart As Vector2 //Starting coordinate vector
    Field mEnd As Vector2 //Ending coordinate vector
EndType 


//And let's put up a screen
SCREEN SW, SH

//Let's add some walls for the scene, so the balls cannot fall into void. 
InitSegment Vec2(20, 20), Vec2(SW-20, 20)
InitSegment Vec2(20, SH-20), Vec2(SW-20, SH-20)
InitSegment Vec2(20, 20), Vec2(20, SH-20)
InitSegment Vec2(SW - 20, 20), Vec2(SW - 20, SH-20)

//We're not creating a new wall. 
beginNewSeg As Byte = False

Repeat
	//Show the fps in the window's title bar. 
	SetWindow "FPS: "+FPS()
	//Let's set a drawing color
	Color 0, 196, 255 

	//Let's draw some text for info purposes (in Finnish)
	Text 0, 0, "Lisää seinä hiiren vasemmalla napilla."
	Text 0, 10, "Lisää pallo hiiren oikealla napilla."
	Text 0, 20, "Aseta pallojen suuntavektorit hiirtäkohti painamalla hiiren rullaa."
	Text 0, 30, "Välilyönnistä puhdistaa liike-energiat."
	newSeg As Vector2 
	//If mouse's second button is clicked and we are not creating a new wall
	//let's add a ball with a random mass. 
	If MouseHit(2) And beginNewSeg = False Then 
		mass As Float = Rnd(10.0, 16.0)
		AddBall mousex(), mousey(), mass, mass*3.0 
	EndIf 

	//If moue button is clickked let's start to adding a new wall. 
	If MouseHit(1) Then
		beginNewSeg = True 
		newSeg.x = MouseX()
		newSeg.y = MouseY()
	EndIf 

	//Mouse button is down, let's draw a line between wall starting point and mouse position
	If MouseDown(1) And beginNewSeg = True Then
		Line newSeg.X, newSeg.Y, MouseX(), MouseY()
	EndIf     

	//Mouse button is up, let's add a wall between wall starting point and mouse position, if the distance 
	//is more than 10px.
	If MouseUp(1) And beginNewSeg = True Then
		beginNewSeg = False
		If Distance(newSeg.X,  newSeg.Y, MouseX(), MouseY()) > 10.0 Then
			InitSegment Vec2(newSeg.X, newSeg.Y), Vec2(MouseX(), mouseY())
		EndIf 
	EndIf 


	Color 0, 196, 255 
	if KeyHit(46) Then
		For b as Balls = Each Balls
			b.mVel = Vec2(0, 0)
		Next b
	EndIF

	//Let's update ball phyiscs
	UpdatePhysics
	//Let's draw balls
	DrawBalls
	//Let's draw walls
	DrawWalls
	//Limits fps between 60 - 70
	Wait 15
	DrawScreen
Forever 

Rem
InitSegment adds a new wall into scene.
EndRem
Function AddBall(x As Float, y As Float, mass As Float, rad As Float)
	//Let's initialize a rookie ball. :)
	b as Balls = New(Balls)
	//Let's set it's data.
	b.mPos = Vec2(MouseX(), MouseY())
	b.mMass = mass
	b.mRad = rad

	//Let's add a new collision pair between all balls, but not with the rookie one
	For b2 As Balls = Each Balls
		if b <> b2 Then AddCollisionPair b, b2
	Next b2
EndFunction 
Rem
InitSegment adds a new wall into scene.
EndRem
Function InitSegment(vstart As Vector2, vend As Vector2)
	s As Walls = New (Walls)
	s.mStart = vStart
	s.mEnd = vEnd
EndFunction 


Rem
AddPair adds a collision pair with given parameters.
EndRem
Function AddCollisionPair(ball1 As Balls, ball2 As Balls)
	if FindCollisionPair(ball1, ball2) <> NULL Then return 
	pair As CollisionPair = New (CollisionPair)
	pair.Ball1 = ball1
	pair.Ball2 = ball2 
EndFunction 

Rem
FindPair deletes a pair with given parameters. Doesn't notice the handle order. 
EndRem
Function DeleteCollisionPair(ball1 As Balls, ball2 As Balls)
	pair As CollisionPair = FindCollisionPair(ball1, ball2)
	If pair <> NULL Then Delete pair
EndFunction 

Rem
FindPair finds a pair with given parameters. Doesn't notice the handle order. 
EndRem
Function FindCollisionPair(ball1 As Balls, ball2 As Balls) As CollisionPair
	//Let's search the pair list through
	For pair As CollisionPair = Each CollisionPair
		//We found a pair with same handles. Doesnt' matter in which order ball1 and ball2 are there
		//If they are in reverse order we still recognize it. 
		if pair.Ball1 = ball1 And pair.Ball2 = ball1 or pair.Ball1 = ball2 and pair.ball2 = ball1 Then 
			//Pair found let's return it
			return pair
		Endif
	Next pair
	return null
EndFunction 

Rem 
HandleCollisionPairs handles every balls' collision  
EndRem
Function HandleCollisionPairs()
	For pair As CollisionPair = Each CollisionPair
		//Let's calculate a collision vector between pair's ball2 and ball1
		collision As Vector2 = Sub(pair.ball1.mPos, pair.ball2.mPos)
		//Let's calclulate the collision vector's length
		collisiondist As Float = Length(collision)
		//Let's calculate which is the smallest distance between two balls
		space As Float = (pair.ball1.mRad + pair.ball2.mRad)
		
		//If distance is zero between balls' centers we do some hacks for 
		//preventing to divide by zero.
		if collisiondist = 0.0 then
			collision = Vec2(1.0, 0) //Let's set collision vector pointing to right
			collisiondist = 1.0
		endif 
		
		//Collision dist is less than the smallest distance between ball. 
		//Ladies and gentlemen, collision just happened!
		If collisiondist < space Then    

			//Let's normalize the collision direction vector
			collision = Normalize(collision)
			
			//Let's save the old velocity 
			u1 As Float = Length(pair.ball1.mVel)
			u2 As Float = Length(pair.ball2.mVel)
			
			//Let's calculate the new velocity
			//For ball1
			v1 As Float = u1 * (pair.ball1.mMass - pair.ball2.mMass) + 2*pair.ball2.mMass*u2
			v1 = v1 / (pair.ball1.mMass + pair.ball2.mMass)
			//And for ball2
			v2 As Float = u2 * (pair.ball2.mMass - pair.ball1.mMass) + 2*pair.ball1.mMass*u1
			v2 = v2 / (pair.ball1.mMass + pair.ball2.mMass)
			
			//Let's apply them by multiplying the normalized collision vector. 
			pair.ball1.mVel = Mul(collision, v1)
			pair.ball2.mVel = Mul(Negate(collision), v2)
			
			//Done!
		EndIf 
	Next pair
EndFunction 

Rem 
DrawWalls function, draws every wall there is.  
EndRem
Function DrawWalls()
    For s As Walls = Each Walls
        Color 0, 196, 0
        Line s.mStart, s.mEnd
    Next s
EndFunction 

Rem 
Balls function, draws a ball with given parameters.
EndRem
Function Ball(vector As Vector2, rad As Float)
	Circle vector.x - rad, vector.y - rad, rad*2, false
End Function

Rem 
DrawBalls function, draws every ball there is.  
EndRem
Function DrawBalls()
	Color 0, 128, 255
    For b As Balls = Each Balls
        Ball b.mPos, b.mRad
    Next b
EndFunction 


Rem 
Overloaded linefunction to draw lines between coordinate vectors 
EndRem
Function Line(v1 As Vector2, v2 As Vector2)
	Line v1.x, v1.y, v2.x, v2.y
EndFunction 

Rem
UpdatePhysics function, update physics of every ball. :)
EndRem
Function UpdatePhysics()
    Color 255, 255, 255
	
	//Let's handle ball to ball collisions.
	HandleCollisionPairs

    For b As Balls = Each Balls   
		//If user press the roll button on mouse, let's create some chaos by setting
		//balls velocities towards the mouse. 
        If MouseDown(3) Then 
			  b.mVel = Add(b.mVel, Mul(Sub(Vec2(MouseX(), MouseY()), b.mPos), 0.5))
        EndIf         
		//Apply velocities to ball's position vector
		b.mPos = Add(b.mPos, Div(b.mVel, MeterPerPixel))
		//Apply gravity
		b.mVel.y = b.mVel.y + Gravity
	

		For s As Walls = Each Walls
			
			//Wall's vector, the wall vector from start coordinate vector to end coordinate vector
			lineVector As Vector2 = Sub(s.mEnd, s.mStart)
			//Wall vector's direction
			lineVectorDir As Vector2 = Normalize(lineVector)
			//Wall's start to balls position vector
			lineToPoint As Vector2 = Sub(b.mPos, s.mStart)
			//Scale value where the ball is on the line
			lineScale As Float = Dot(lineVectorDir, lineToPoint) / Length(lineVector)
			//Helps the balls acting rightly in the corner cases
			lineScale = Min(1.0, Max(0.0, lineScale))
			
			//Let's multiply wall's vector with linescale, so we can get the position we can sum
			//to the wall's start position. 
			ballReletiveToLine As Vector2 = Mul(lineVector, lineScale)

			//Let's project balls position on the wall.
			pointOnLine As Vector2 = Add(s.mStart, ballReletiveToLine)
			//Now we can form a vector from the balls position and the balls projected position on wall,
			//for correct the ball's position if ball is colliding with the wall line. 
			ballOnLineToBallCenter As Vector2 = Sub(b.mPos, pointOnLine)
			
			//So the distance between ball and wall line is less tha ball radius, a collission has just been happened. 
			If Length(ballOnLineToBallCenter) < b.mRad Then
				b.mPos = Add(pointOnline, Mul(Normalize(ballOnLineToBallCenter), b.mRad))
				b.mVel = Mul(Reflect(b.mVel, ballOnLineToBallCenter), 1.0 / SurfaceFriction)
			EndIf 
		Next s     
    Next b

EndFunction 

Last edited by MaGetzUb on Wed Dec 03, 2014 5:01 am, edited 3 times in total.
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
siis

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by siis »

Coolbasic Classic on open source???????
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by MaGetzUb »

siis wrote:Coolbasic Classic on open source???????
Itseasiassa viestini oli harhaanjohtava ja käytin tuota "CBC" (Tulee sanoista CBCompiler) juttua ihan turhaan. Tämä Latexin repossa oleva CB versio ei liity varsinaisesti viralliseen CoolBasiciin mitenkään. Ja parempaa nimeäkään tälle ei olla viralliesti keksitty. Oma ehdotukseni on edelleen FrostBasic. :D Mutta kyllä, Latexi:n repossa oleva koodi on avointa, ja kuka vaan voi tulla mukaan kehitykseen.
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Post Reply