BlitzMax - Vorschläge & Co

Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu Seite Zurück  1, 2, 3, 4, 5  Weiter

Neue Antwort erstellen

mpmxyz

BeitragFr, Jan 15, 2010 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Schön... Ein "Wünsch dir was"-Thread... Smile
Ich würde es auch begrüßen, wenn Max2D einfacher erweiterbar wäre.
Nach vielem Suchen habe ich aber endlich mal herausgefunden, wo man das TMax2DGraphics-Objekt herbekommt. (Eine DrawImage-Erweiterung sollte sich immerhin noch an die Max2D-Settings halten.)
Zur Funktionsüberladung:
Ich finde Funktionsüberladung nicht schlecht, aber sie sollte, wenn sie überhaupt in BlitzMax eingeführt wird, optional sein.
Es könnte nämlich dabei Probleme bei der Erkennung der Funktion anhand der Parameter geben, da BlitzMax es nicht so genau mit den Typen der Parameter nimmt.

Richtig neue Ideen fallen mir nicht so spontan ein...

mfG
mpmxyz

P.S.: Warum gibt es eigentlich bei brl.FileSystem nur Integer-Handles? ("ReadDir()")
Hat Mark dort geschlafen?

Edit: Aufzählungstypen wären etwas interessantes.
Edit2: Ich mag diese "Geheimniskrämerei" nicht... Ich könnte die Funktionen "BindTex" und "EnableTex" aus GlMax2D sehr sehr gut gebrauchen... Es wäre nicht schlecht, wenn man auch aus anderen Dateien auf Private-Funktionen/Variablen zugreifen könnte, wenn man ihren Herkunftsort explizit angibt. ("brl.GlMax2D.BindTex(name)")
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Hummelpups

BeitragSa, Jan 16, 2010 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Boolean Datentyp würde mir auch gefallen.

das in Bytes auch 1 Stellinge strings gespeichert werden können,
brauche ich eigentlich nicht, finde es aber durchaus nützlich.

SOnst, joa, Operatorüberladung, Methoden- und Funktionsüberladung
wär auch chic.

Jolinah schrieb, das sich per Reflection keine mehrdimensionalen
Arrays auslesen lassen, verschachtelte Arrays aber schon.
Soll das so sein oder eine der Baustellen???

Micha
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

Artemis

BeitragSa, Jan 16, 2010 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Korrekte private/protected/public-Implementierung für einzelne Klassen-Member finde ich auch noch wichtig.

Thunder

BeitragSa, Jan 16, 2010 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Achja, und einen in-Operator, wie in Pascal oder Python, habe ich mir schon immer gewünscht Very Happy :
BlitzMax: [AUSKLAPPEN]
Local x:Byte="+" 'wäre zur Zeit nicht möglich
If x in ["+","-"] Then ...


Achja:

Hummelpups hat Folgendes geschrieben:
Ein Boolean Datentyp würde mir auch gefallen.


Ein Boolean Datentyp ist eigentlich nur eine Verschönerung einer Sprache. Boolean ist ja entweder 1/True oder 0/False, damit hat Boolean den Wertebereich eines Bits. Jedoch ist die kleinste Einheit die im Arbeitsspeicher reserviert werden kann 1 Byte( 8 Bit ). Somit wäre ein Boolean Datentyp genauso groß wie der Byte Datentyp(8 Bit), hätte aber nur 2 mögliche Werte( anstatt von 256 ).

mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

furbolg

BeitragSa, Jan 16, 2010 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Objekte/Listen mit Zeigern anstatt einer Referenz
oder
Ein Delete das eine Referenz (inkl aller Verzweigungen) löschen kann.



Beispiel:
Code: [AUSKLAPPEN]
Type TANK
field hp:int
field x:int
field y:int
...
end type

type Bullet
field x:int
field y:int
field target:TANK
...
end type


Wenn momentan ein Tank zerstört wird (=NULL) dann muss man in der Bullet Update immer nochmal prüfen ob TANK.HP <= 0. Dafür wären Zeiger / Delete ziemlich nett.

mpmxyz

BeitragSa, Jan 16, 2010 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
@furbolg
Zu dem Beispiel:
Viel Aufwand ist es nicht, sich dafür eine Funktion "TObjekt.Check(Objekt:TObjekt Var)" zu schreiben.
Zur Idee:
Da die Programme sonst langsamer werden, sollte so etwas nicht zum Standard werden.
Aber ungezählte Referenzen wären ganz praktisch, da man damit keine Probleme mit zyklischen Referenzen bekommt.
Eine gute Alternative dazu wäre auch ein anderer Garbage Collector, der z.B. den Mark and Sweep-Algorithmus nutzt.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

furbolg

BeitragSa, Jan 16, 2010 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
mpmxyz hat Folgendes geschrieben:
@furbolg
Zu dem Beispiel:
Viel Aufwand ist es nicht, sich dafür eine Funktion "TObjekt.Check(Objekt:TObjekt Var)" zu schreiben.

Sobald du so eine Funktion baust hast du im Endeffekt +/- 0 da die Referenz durch den Aufruf um 1
erhöht wird, dann durch Objekt = null, wieder um 1 reduziert wird aber immer noch die anderen 2 Zähler da stehen.

Um mein Problem/Wunsch nochmal zu verdeutlichen:

BlitzBasic: [AUSKLAPPEN]
Type TANK
method Update()
'... alle tanks durchlaufen
If t.hp <= 0 Then t = Null
End method
End Type

Type BULLET
method Update()
'... alle bullets durchlaufen
If b.target.hp <= 0 Then
b.target = Null ' das könnte man sich mit einem Delete ala BB2D/3D sparen
b = Null
EndIf
End method
End Type


mpmxyz hat Folgendes geschrieben:

Zur Idee:
Da die Programme sonst langsamer werden, sollte so etwas nicht zum Standard werden.
Aber ungezählte Referenzen wären ganz praktisch, da man damit keine Probleme mit zyklischen Referenzen bekommt.
Eine gute Alternative dazu wäre auch ein anderer Garbage Collector, der z.B. den Mark and Sweep-Algorithmus nutzt.
mfG
mpmxyz

Es muss nicht zum Standard werden, kann ruhig optinal mit einem speziellen Delete Befehl umgesetzt werden. Aber warum sollten die Programme mit Zeigern langsamer werden ?

Noobody

BeitragSa, Jan 16, 2010 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Die OOP-Variante wäre, dass sich der Panzer beim 'explodieren' per Event/Message-System aus allen Kugeln austrägt.

Dass die Kugel direkt checkt, ob der Panzer vernichtet ist, ist eher unschön, da man in OO Programmen stets auf Datenkapselung achten sollte. Es gibt aber wesentlich mehr und auch um einiges schönere Varianten als Delete, das zu umgehen.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

furbolg

BeitragSa, Jan 16, 2010 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar könnte man machen. Dann muss man nur überlegen ob sich das lohnt (hunderte von einheiten, tausende von geschossen und dann pro frame messages verarbeiten). Ich empfinde Referenzen/Zeiger eher als elementaren Grundtyp wie Int, Float, String etc. deswegen wäre eine native Implementierung der Zeiger (optional, standard kann ja weiterhin Referenz bleiben - bei Zeigern würde man dann halt field PTR type oder ähnlich schreiben) ziemlich nett.

War ja auch nur ein Vorschlag Wink

Noobody

BeitragSo, Jan 17, 2010 2:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Du weisst schon, dass es in BMax Zeiger gibt? Folgendes Beispiel BlitzMax: [AUSKLAPPEN]
Type Foo
Field A:Float
End Type

Local Bar:Foo = New Foo
Bar.A = Pi

Local PBar:Float Ptr = Float Ptr( Byte Ptr Bar )

Print PBar[ 0 ]


Mal davon abgesehen kannst du dein Beispiel oben auch mit Zeigern nicht lösen. Wenn du den Panzer per Delete löschst, zeigt der Zeiger ins nirgendwo und du hast keine Möglichkeit zu erkennen, ob der Panzer noch existiert oder nicht.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

furbolg

BeitragSo, Jan 17, 2010 2:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja nur sind diese Zeiger unschön und anfällig. Was passiert wenn du aus
BlitzBasic: [AUSKLAPPEN]
= Float Ptr(...) 

= Byte Ptr(...)

machst, bezüglich Typen sicherheit. Ich wünsche mir halt Zeiger nach dem Motto:
BlitzBasic: [AUSKLAPPEN]
Local zeigerpanzer:ptr tank
so dass auch nur Panzer darauf zeigen können und nichts anderes, was bei deinem Code möglich wäre (würde einem void* entsprechen).

Zitat:
Mal davon abgesehen kannst du dein Beispiel oben auch mit Zeigern nicht lösen. Wenn du den Panzer per Delete löschst, zeigt der Zeiger ins nirgendwo und du hast keine Möglichkeit zu erkennen, ob der Panzer noch existiert oder nicht.

Doch wenn du einen Zeiger per Delete löscht wird er intern auf NULL gesetzt (wie eine Referenz, nur wird der Inhalt auf den der Zeiger zeigt auch gelöscht, was bei der Referenz erst geschieht wenn der Counter auf 0 ist) und dann kannst du halt sagen z.B.:

BlitzBasic: [AUSKLAPPEN]
If Listenelement.zeigertyp = Null Then
'neues Ziel suchen oder sowas

End If

Aber wie gesagt ist halt nur ein wunsch, müsst euch nicht daran aufhängen Wink Ich hab da auch schon einen Workaround Smile

d-bug

BeitragSo, Jan 17, 2010 10:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrow Freie Einstellbarkeit der Bundle-Flags (info.plist) unter OSX. Dazu müsste der BMK komplett überarbeitet werden. Momentan fehlen da reichlich Flags um einen reibungslosen Ablauf mit OSX zu garantieren.
Arrow Einbindung eigener Resources und Frameworks ins App-Bundle unter OSX. Ich find extrem lästig diese Daten nach dem Kompilieren manuell ins Bundle zu kopieren. Bedeutet ebenfalls einer überarbeitung des BMK und auch der IDE

Momentan bastel ich nämlich mehr am BMK als an anderen Dingen. Das kann einem auf Dauer echt den letzten Nerv rauben.

coolo

BeitragSo, Jan 17, 2010 13:23
Antworten mit Zitat
Benutzer-Profile anzeigen
-> Ich hätte gerne in MaxLua zugriff auf die Lua State, sodass man mehr Freiheiten hat.

->Negativer Zugriff auf Arrays, das heißt MeinArray[-2]=3 ist dann der vorletze Index vom Array. kA ob es sich lohnt zu implementieren, in GLBasic finde ich das sehr praktisch.

-> Reflection für normale Funktionen (sollte auch im Release Modus laufen). Sowas wäre einfach nur genial, vorallem in Hinsicht auf Scriptsprachen!

-> Max2D aufmotzen, heißt integrierter Stencil Buffer, FBO, DrawPoly mit mehr Optionen.

-> Konstruktor mit Parameter: Eines der wichtigsten Dinge wie ich finde, da das das Leben unglaublich erleichtert. Cool wäre auch noch Methodenüberladen, das ist allerdings nur ein netter Nebeneffekt Smile


Außerdem wäre Mehfachvererbung möglich, wobei sich da die Gemüter trennen, und bestimmt viel Arbeit ist das zu implementieren.
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat

Diedel

BeitragMo, Jan 18, 2010 23:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Vorerst wäre ich mit Multitouchunterstützung für Windows 7 schon ganz zufrieden, zumindest konnte ich selbst keine machbare Lösung finden das zu implementieren ohne das ganze BlitzMax von Grund auf auseinander zu nehmen.

Ansonsten bin ich mit BM eig schon ganz zufrieden. Bzw. zum Thema Bool, Byte und Co., ich erinnere mich daran gelesen zu haben, dass BlitzMax intern keine vorteilhafte Unterscheidung zwischen Integers und eben Booleans und Bytes macht. Möglicherweise könnte man das ja ändern falls das wirklich noch der Fall sein sollte.

lg
Owned.

Xeres

Moderator

BeitragMo, Jan 18, 2010 23:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei Operator-/Funktionsüberladung war immer das Problem, dass die Blitz-Dialekte automatisch herumkonvertieren... Ein Feature auf das ich auch verzichten könnte, wenn dafür Überladungen möglich wären. Wenigstens im SuperStrict Modus - bei dem man vom Namen her erwarten könnte, das man korrekt casten muss.

Arrow SuperStrict sollte zum Standard, und der aktuelle Standard explizit mit NonStrict aktiviert werden müssen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Holzchopf

Meisterpacker

BeitragMo, Jan 18, 2010 23:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich frage mich ja, wieso hier so viele Leute Wünsche anbringen, die eigentlich eher Modul-Wünsche sind, die man deshalb genauso gut auch selber machen kann (auch für das Team von BRL bedeutet ein Modul zu schreiben Arbeit) Rolling Eyes
Was man aber nicht mit Modulen hinbasteln kann, weil es an der Sprache selber liegt, sind anständige Konstruktoren, die es in BMax einfach zu geben hat.
(Man beachte den grossen Punkt)
Wenn etwas in BMax fehlt, dann das.

mfG
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

BladeRunner

Moderator

BeitragDi, Jan 19, 2010 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
coolo hat Folgendes geschrieben:
-> Ich hätte gerne in MaxLua zugriff auf die Lua State, sodass man mehr Freiheiten hat.

Das ist mit dem Verschieben der Funktion LuaState() vom Private- in den Public-Brereich des Sources (in brl.maxlua) erledigt, coolo. Ein klitzekleiner Hack und du kannst nach rebuild damit spielen soviel Du willst.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

coolo

BeitragMi, Jan 20, 2010 7:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Mhmm so könnte ich das auch machen, allerdings verstehe ich nicht warum das nicht Standard ist? Schaden kanns ja nicht wenn man ne Funktion "getLuaState()" oder so schreibt?

Naja ich hätte auch noch gerne eine Shader Unterstützung für Max2D.
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat

BtbN

BeitragMi, Jan 20, 2010 12:30
Antworten mit Zitat
Benutzer-Profile anzeigen
coolo hat Folgendes geschrieben:
Naja ich hätte auch noch gerne eine Shader Unterstützung für Max2D.


Must du nurnoch verraten, wie du dir das vorstellst, dass der selbe Shader mit OpenGL, D3D9 und vorallem D3D7(welches über keinerlei Shader-Fähigkeiten verfügt) laufen soll.
 

Dreamora

BeitragMi, Jan 20, 2010 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
BtbN hat Folgendes geschrieben:
coolo hat Folgendes geschrieben:
Naja ich hätte auch noch gerne eine Shader Unterstützung für Max2D.


Must du nurnoch verraten, wie du dir das vorstellst, dass der selbe Shader mit OpenGL, D3D9 und vorallem D3D7(welches über keinerlei Shader-Fähigkeiten verfügt) laufen soll.


Wink
Wenn man D3D7 raus nimmt wäre die Antwort cg bzw. es gibt ein opensource projekt, das sich bis auf SM3 stufe von HLSL auf GLSL (oder umgekehrt) umwandeln kann.

Jedoch widerspricht es selbst dann den Zielen von Max2D die mit OpenGL 1.2 auf breiten Support zielen.
Sieht man ja schon am Mangel von Render Texturen, obwohl Framebuffer jetzt dann doch schon ne sehr lange Zeit Standard sind.

Dumm das man den aus Blitz3D bekannten Normalmap Blendmode nicht gescheit umsetzen kann denn die Vertexfarben sind tabu für die speicherung der Daten und Cubemaps in einer 2D engine die nicht mal support für vertex lichter hat ... ja ne schon klar Wink
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Gehe zu Seite Zurück  1, 2, 3, 4, 5  Weiter

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group