Auflösung ändern
Übersicht

![]() |
SereyanneBetreff: Auflösung ändern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Frage: Stimmt es dass ich bei der BB2DDemo das Spiel neu starten muss um eine geänderte Auflösung zu übernehmen? Kann ich nicht direkt im Spiel umschalten?
Und: Ich hab gehört, es gibt einen Befehl, um kleine Bilder auf größere Auflösung stellen zu können. Dieser Befehl soll aber ein relativ schlechtes Ergebnis liefern und viele Ressourcen fressen. Heißt das, ich muss jedes Bild in jeder Auflösung vorliegen haben? Frisst nen Haufen Festplattenspeicher! Ich kann mir nicht vorstellen dass Spiele wie Crysis so arbeiten... |
||
![]() |
kriD |
![]() Antworten mit Zitat ![]() |
---|---|---|
hatten wir glaubich schonmal so ähnlich, wenn ich dein problem verstanden habe..
https://www.blitzforum.de/foru...highlight= bitteschöön ![]() lg kriD |
||
Wenn ich du wäre, wäre ich lieber ich! |
sdjh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
zu a) weiß ich das leider nicht mehr. Hab die Demo schon seit Jahren nicht mehr genutzt. Es ist auf jeden Fall so, wenn das noch stimmt, dass der von Blitz benötigte Speicher für Grafiken durch Graphics gelöscht wird. Entweder du setzt Graphics vor dem Ladevorgang oder du speicherst alles in Banks und ließt die Bitmaps jedes Mal neu aus. Die Technik ist leider etwas veraltet.
zu b) ja! B2D unterstützt leider kein Hardwarerendering. Die Engine kann nur Daten aus dem RAM in den GrafikRAM schieben und somit deine Ausgabe erzeugen. Grafikkartenbeschleunigung wird erst ab B3D (BlitzMax) unterstützt. Damit kannst du Grafiken frei skalieren und rotieren ohne sie vorher vorrendern zu müssen, so wie es in Crisis auch gemacht wird. Gruß Simon |
||
![]() |
Sereyanne |
![]() Antworten mit Zitat ![]() |
---|---|---|
sorry dass ich mich so spät melde. Danke für eure Antworten! Dann muss ich mir wohl irgendwann mal die 3D Version zulegen. | ||
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
in der 3d version kurz b3d kannst du auch nicht während des laufenden programmes die auflösung ändern..... da müstest du dir eine funktion bauen die alle grafiken nach dem neu setzen des graphics wieder in den ram lädt.. | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
was nicht sonderlich schwer ist wenn du deinen code gescheit strukturiert hast, dann wurde es nämlich schon beim ersten mal laden von einer funktion geladen die man einfach wieder aufrufen kann.
aber am einfachsten hat man einfach zwei unabhängige graphics: 1. Menu wo au die Grafikoptionen sind 2. Spiel selbst, wo keine Grafikoptionen existieren dann hat man das problem nie ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
das laden in eine funktion zu packen, würde ich für alles andere als sauber halten.
Funktionen sollte man halt wörtlich nehmen und wirklich nur für funktionen machen, z.B. immer wieder kehrende triviale berrechnungen. Bei BB ist man sonst dazu gezwungen, etliche globale variablen zu verwenden. Das lässt sich auch eleganter lösen ![]() |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Klingt als hättest du primär schludrigen Code wenn das laden in einer funktion bei dir keine saubere Lösung ist, sorry.
Da Laden der Media für einen zweck zum einen ein wiederkehrender, zum anderen ein abgeschlossener Task ist, ist es das paradebeispiel für etwas was man in eine funktion kapselt. Die MediaVerwaltung ist so oder so global. Ob man die jetzt via Types regelt oder Array ist jedem selbst überlassen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Auch wenn du es mir nicht glaubst, es gibt ausser deiner auch noch andere Vorstellungen eines Programmdesigns, die sauber sind ![]() Wenn man ganze programmteile in funktionen kapselt (game(), options(), showCredits()) müsste man auch mehrere Hauptschleifen ins programm machen. Das ist unsauber. Include ![]() So sieht imho ein sauberer code aus: Code: [AUSKLAPPEN] include "inc/global.bmx" include "inc/functions.bmx" reloaddata = 1 repeat if reloaddata include "inc/initmedias.bmx" reloaddata = 0 end if select gamemode case 0: ;Menu include "inc/menu.bmx" case 1: ;Optionsmenu include "inc/options.bmx" case 2: ;credits include "inc/credits.bmx" case 3: ;ende include "inc/end.bmx" ;evtl für end-splash. end select include "inc/paintall.bmx" forever |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hasse es wenn leute Include für faulheit und grausiges codedesign verwenden!
Lang lebe BM wo man include nur noch da verwenden kann wos hingehört: An den anfang um andere sources zu includen, net mitten drin um include als gosub ersatz zu verwenden!!! dein gehacke da hat mit sauberem codedesign nicht die hölle zu tun, das ist nur knapp über der stufe von goto gehacke. Benutz mal google und schau nach "codedesign", "encapsulation" oder auch "modularisierung" |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
was hat das mit faulheit zutun?
Ausserdem funktioniert Include bei BM genauso wie bei BB. Ich halte es einfach für übersichtlich.. zumindest besser als 10.000-Zeilen-Codebatzen in einer Funktion zu haben. Das macht das finden einer bestimmten Stelle wesentlich schwieriger. (Übrigens: Höhere Sprachen wie Java und C(++) funktionieren nur nach diesem Prinzip, dass der Code in kleinen Übersichtlichen stücken auf mehrere Dateien aufgeteilt sind, also kann es so grausig wohl nicht sein) |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Meines Wissens geht include unter BM (Strict und SuperStrict, ohne ist es nicht BM sondern Blitz Broken da die meisten optimierungen und funktionalitäten deaktiviert sind.) nur wenn es am anfang steht, so wie import auch.
Man teilt code in files auf richtig. Das nennt man Encapsulation oder Modularisierung. Man teilt sie nach funktionalität oder Modulen auf. Man hackt nicht einfach irgendwo code hin und included ihn dann. Das nennt man spaghetti code denn was du machst ist nichts anderes als Gosub in eine andere Datei. Hättest du dir die Konzepte von C++ und Java für den zweck angesehen und verstanden, würdest du verstehen was ich meine und warum der missbrauch von Include für den fall hier grauenvoller Code ist. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Meines Wissens geht include unter BM (Strict und SuperStrict, ohne ist es nicht BM sondern Blitz Broken da die meisten optimierungen und funktionalitäten deaktiviert sind.) nur wenn es am anfang steht, so wie import auch.
Man teilt code in files auf richtig. Das nennt man Encapsulation oder Modularisierung. Man teilt sie nach funktionalität oder Modulen auf. Man hackt nicht einfach irgendwo code hin und included ihn dann. Das nennt man spaghetti code denn was du machst ist nichts anderes als Gosub in eine andere Datei. Hättest du dir die Konzepte von C++ und Java für den zweck angesehen und verstanden, würdest du verstehen was ich meine und warum der missbrauch von Include für den fall hier grauenvoller Code ist. include geht in bmax auch unter superStrict in Schleifen. Und ein include ist _kein_ goto in eine datei rein. Es ist einfach so, als würde man den Inhalt der Datei nehmen und da reinsetzen, wo das Include steht. (Genau das macht ja auch der compiler, deswegen geht bei bb ja auch kein "if blub then include "bla.bb"" bei mehrzeiligen dateien) Eine Einzelne datei sollte für mich nicht mehr als 300 Zeilen Code haben. und eine Funktion nicht mehr als 20-30 zeilen (maximal!), ansonsten leidet die übersichtlichkeit. C++ habe ich mir nicht angesehen, aber mit java arbeite ich wg meiner Ausbildung Aktiv seit so ziemlich einem Jahr. Man kann die Konzepte von Java nicht 1:1 in BB-Übersetzen, da Objektorientierte und Imperative Programmierung zwei vollkommen verschiedene welten sind. Aber mit Include kommt man entfern daran, die Idee, die dahinter steht auch in Bmax umsetzen zu können. |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Doch, wenn man include benutzt um nicht funktionen zu includieren sondern einfach code und das mitten zwischen anderem code dann ist das nichts anderes als ein GoSub (lies bitte was man schreibt, habe nicht Goto geschrieben)
Du springst in anderen code ohne das du etwas übergibst, sondern bleibst im jetzigen Variablenraum, modifizierst eben diesen Variablenraum und kommst zurück. Das ist in keinster weise saubere programmierung, denn was passiert wenn du variablen namen änderst im programm wo du das include nutzt? genau es macht bumm. Hättest du den included part aber sauber programmiert mit einer Funktion und festgelegten parametern für input - output, dann würds immer noch funktionieren, denn die funktion hat ihren eigenen variablenraum im unterschied zu included source / gosub welches im variablenraum ihres hosts lebt. In Java gibt es kein konzept was auch nur im ansatz dem ähnelt was du da machst. Java kennt nur code in methoden. Wenn du es so häufig benutzt auf mehr oder weniger professionellem Level sollten dir die Konzepte von Modularisierung / Encapsulation eigentlich geläufig sein (sonst: Head First Java bzw. Von Kopf bis Fuss Java. Sehr gutes buch das einem auf effiziente weise dinge beibringt) und du solltest eigentlich auch wissen, das man funktionalität die gekapselt werden kann immer auch gekapselt wird. Man schreibt keine Funktionen mit 3000 Zeilen, man packt logische blöcke in methoden und ruft diese auf. Das aus mehreren Gründen: 1. Der block könnte anderswo noch gebraucht werden 2. Man kann dafür sorgen via UnitTests das die funktion genau das tut was sie soll. Auch beeinflusst sie den Code ausserhalb nicht, sofern man keine globalen Variablen ändert, das einzige was sie ändert ist etwas was via Return Rückgabe beim aufrufenden Code zugewiesen wird. Danach muss man sie nie wieder angucken, denn sie war korrekt und wirds bleiben -> sehr viel weniger bug probleme, sehr viel effizientere Programmierung. Mit deiner methode gibt es bestenfalls 1. Aber bezüglich 2 machst du die situation erheblich übler, denn wenn du den code der include änderst und der an mehr als einem ort included war erreichst du eine situation wo du bei jedem include ort andere probleme und unabhängige bugs erzeugen kannst dank des shared variablen raumes (-> Seiteneffekte) Ich kann dir nur dringendst davon abraten so zu programmieren. Du wirst, sollte da je ein bug drin sein, schöne qualen leiden beim versuch sie zu fixen oder die funktionalität einfach so zu ändern (bei einer funktion wärs easy, da schreibt man ne zweite und ruft dann einfach die anstatt der originalen auf zum testen und da es wieder gekapselt ist gibts keine konsequenzen für den restlichen code!) Aber belassen wirs dabei. Du scheinst es offensichtlich nicht verstehen zu wollen derzeit. Kommt noch nachdem dir in der Ausbildung jemand die Rübe abgedreht hat wegen Code Hacking statt Code Design. Oder spätestens wenn du 30h an einem bug arbeiten musstest der aus massiven Seiteneffekten entstanden ist wegen solcher Includes. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Include wird jedoch vor dem kompilieren da reingeschnitten, man kann es NICHT mit GoSub vergleichen.
Ich inkludiere immer alle meine Funktionen an das Ende des Programms, und irgendwie fühle ich mich nicht wie eine Bestie des Bösen, und merkliche Unterschiede in meinem Karma lassen sich auch nicht feststellen. Hm. EDIT: <@BladeRunner> respekt, nici, wieder selbst demontiert D: |
||
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
The_Nici hat Folgendes geschrieben: Include wird jedoch vor dem kompilieren da reingeschnitten, man kann es NICHT mit GoSub vergleichen.
Wüso? Ich weiß zwar nicht, wie der Compiler das macht, aber afaik kannst du auch genausogut alle Gosubs in deinem Programm durch den entsprechenden Code zwischen der Sprungmarke und Return ersetzen, ohne dass sich die Wirkung ändert. |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group