Alles was mit programmieren zu tun hat (außer Foren) mach ich auf englisch, also auch die Dokumentation. Ich komme auch mit deutschem Text, der englische Fachwörter enthält nur schwer klar.
Beiträge von Marthog
-
-
Ich finde, dass die (oder eine andere) UDF für komplexe Zahlen in die standard-UDFs aufgenommen werden sollte. Man braucht sie zwar nicht häufig, aber dennoch sind die komplexen Zahlen so grundlegend, dass eine Sprache sie haben sollte.
-
Ich finde, dass mein Avatar bereits genug nach Weihnachtsmütze aussieht, zumindest die Farben stimmen schon.
-
Da Valve's Konsole ja mit Linux laufen soll und man vermutlich weiterhin seine Steam-spiele dort auch spielen kann, sehe ich große Vorteile nicht nur als Konsole, sondern auch für Linux als Spieleplattform, denn ich bin ein großer Befürworter der aktuellen Linux-Orientierung. Wenn Spiele erstmal OpenGL verwenden, ist die weitere Portierung nicht mehr schwer.
-
Hi,
entweder du packst die Datei als char Array in deinem Code ab (was den Speicherbedarf verdreifacht) oder du hängst sie hinten an die fertige Anwendung an und liest dann aus.Warum verdreifacht? Der Code selber hat etwas über die doppelte Größe, aber bei der fertigen exe sollte es doch die gleiche größe wie vorher sein. Die Beste möglichkeit ist wahrscheinlich die resource.
-
-
Schnitzel
Am meisten Spaß macht mir das entwickeln von nutzerfreundlichen Oberflächen. Ich möchte Desktop sowie auch Webapplikation entwickeln. Den großen Unterschied zwischen objektorientiert oder funktional habe ich bis heute nicht ganz begriffen, aber ich denke das versteht man, wenn man aktiv damit arbeitet.Prozedural (ich denke, das meinst du mit funktional) programmiert man, indem man Code in Funktionen auslagert und sich diese gegenseitig aufrufen.
Bei Objektorientiert baut man die Datenstruktur (NICHT die Algorithmen) mit Objekten nach. Das klassische Beispiel ist ein GUI. Jeder Element ist ein Objekt, enthält seine Daten (Text, Farbe), es gibt ein allgemeines Element und davon viele Spezialisierungen, die teilweise die gleichen Funktionsweise haben (kann man den Text ändern), in anderen Punkten aber anders sind, denn einen Button kann der User klicken, in ein Edit schreiben. Jedes dieser Elemente hat wieder Unterelemente.
Es gibt ein einheitliches Interface, dass in viele richtungen spezialisiert werden kann. Es ist wesentlich übersichtlicher, als das gleiche mit if oder Funktionspointern zu realisieren.Funktional gibt es auch, ist aber ganz anders, denn während prozedural und objektorientiert eine Liste von Anweisungen enthält und Daten mit Zustandsänderungen bearbeitet, besteht funktionale Programmierung aus einer Verkettung von Funktionen. Es ist mathematisch sehr interessant, denn man kann seine Formeln viel einfacher übertragen und einfacher Beweise durchführen.
-
Ja. Du musst auch mit der Option -std=c++11 compilen.
-
C ist sehr einfach, aber auch sehr low-level, also fehleranfällig. Die Wahrscheinlichkeit für MemoryLeaks ist hier am höchsten. Man muss halt alles selber machen und wenn man String oder Array kopieren will, dann muss man auch Element für Element kopieren. Wenn man Speicher reserviert, dann muss man den selber aufräumen. C ist aber gut geeignet um kompakte Algorithmen sehr effizient zu lösen. Ich finde, dass jeder Programmierer C kennen sollte.
C++ ist eine sehr schwer zu lernende Sprache, die es aber erlaubt, große Projekte übersichtlich, sicher und schnell zu entwickeln. Sie verleitet aber dazu, unsicher und unübersichtlich zu schreiben, u.A. weil die meisten Buchautoren keine Ahnung von modernem C++ haben. (*hust*)
C++-ähnliche Sprachen sind D, Java und C# und Vala. Java ist weit verbreitet, hat aber nach meiner Ansicht viele Nachteile und Unsauberkeiten. D sollte das neue und bessere C++ werden und hat es fast geschafft, wäre da nicht ein echt schlimmer Designfehler eingetreten. C# gefällt mir ganz gut, ebenso Vala (mittelding zwischen C und C#), allerdings heißt es wie immer, eine Programmiersprache ist so lange gut, bis man sie kennt. Wenn man einen Garbage-collector akzeptieren will und mit der geringen Akzeptanz klar kommt, rate ich zu D.Python ist auch toll, sollte meiner Meinung nach jeder ein bisschen können, denn diese Sprache ist sehr übersichtlich, modern und dynamisch.
Eine funktionale Programmiersprache (z.B. Haskell) sollte man sich irgendwann mal anschauen, wenn man schon gut programmieren kann, denn hierbei lernt man neue Wege, die einem helfen, sauberen Code in anderen Sprachen zu schreiben.Von Objective-C und php kann ich abraten, sie sind eher Krankheiten als Programmiersprachen, und auch wenn php noch sehr wichtig ist, wird es wohl (hoffentlich) bald durch Python oder etwas anderes abgelöst werden.
-
So richtig verwenden kann man die noch nicht. Am Programm wird bisher nur entwickelt und getestet.
Du musst schon einen C++11-fähigen Compiler (gcc oder clang aber nicht Visual Studio) verwenden. Erst compilest du AutoItParser (sollte nichts weiter benötigen), damit kann man die Skripte übersetzen. Aus Testgründen habe ich die Commandlineparameter deaktiviert bzw. nichtmal vollständig implementiert, standardmäßig wird von der Datei in.au3 ausgelesen und in out.cpp geschrieben.
Der zweite Teil ist die runtime-library. Dazu musst du AutoItC compilen und zwar mit den benötigten libraries (das CodeBlock-Projekt sollte alle enthalten). Auch hier wird aus Testgründen erstmal alles in ein funktionsfähiges Programm compiled, dazu muss man von AutoItParser/out.cpp nach AutoItC/AutoIt.cpp kopieren und im debug-mode compilen. Das ist zwar umständlich, aber bisher habe ich an Parser und Programm einzeln gearbeitet und sie einzeln getestet. -
Ich würde es doch ein bisschen anders machen, so ähnlich wie in C++ mit der STL. Die library ist nach außen hin immer gleich und in völlig standardkonformen C++, aber intern wird mit Spezialisierungen, Tricks, inline-Assembler, Magie und compilerspezifischen Built-in-Functions die größtmögliche Geschwindigkeit herausgeholt.
Für den Anwender macht es dann keinen Unterschied, denn er hat genau das gleiche Interface, aber wesentlich mehr Geschwindigkeit. Eine Dll braucht man auch nicht, denn alles wird direkt in den Code eingebunden oder statisch gelinkt. -
Ich finde diese Idee richtig Gut , werden GDIPlus etc. auch enthalten sein ?
Wenn ja wäre das eine richtig feine Sache da Autoit nicht sehr Systhem nah ist und damit wäre das Problem mit der Leistung ja gelöst?Ich plane, alle Grundfunktionalitäten (außer Execute und ExitLoop mit variablem scope) auch zu unterstützen, sodass man GDIPlus ebenfalls einsetzen kann. Allerdings glaube ich kaum, dass der Geschwindigkeitsgewinn wirklich so enorm wird, denn während C++ ein statisches Typsystem hat, kennt AutoIt nur den Typ Variant, dessen wirkliche Typen zur Laufzeit bestimmt werden. Dadurch muss andauernd der Typ bestimmt und ggf. umgewandelt werden. Außerdem ist DllCall als Funktion speziell implementiert und bei jedem Aufruf muss erstmal die Funktion in der Dll gesucht, die Datentypen ausgewertet werden etc.
Ich plane für später neben etlichen anderen Features und Optimierungen auch noch ein Plugin-System, sodass man für UDFs einfach noch eine spezialisierte Version schreiben kann, die direkt auf C++-Ebene arbeitet, aber für den Nutzer keinen unterschied macht.
Erstmal gilt aber, dass die Sprache verwendbar sein muss, also die Grundfunktionalität genauso wie in AutoIt sein soll, vorher lohnen sich solche Spielereien noch gar nicht. -
Es gibt eine neue Version und ich suche Mitarbeiter für das Projekt.
-
ganze funcLib
Code
Alles anzeigenint GetProcessHeap() external KERNEL32; void @HeapAlloc(int heap; int flags; word bytes) external KERNEL32; word HeapFree(int heap; int flags; void @ptr) external KERNEL32; void @HeapReAlloc(int heap; int flags; void @ptr; word newsize) external KERNEL32; void @new(word bytes) return @HeapAlloc(GetProcessHeap(),0,bytes); end void @renew(void @ptr; word bytes) return @HeapReAlloc(GetProcessHeap(),0,@ptr,bytes); end void free(void @ptr) HeapFree(GetProcessHeap(),0,@ptr); end word StringIsAlpha(char Ch) if ('A' <= Ch & Ch <= 'Z') | ('A' <= Ch & Ch <= 'Z') | (Ch = '_') then return 0; end return 1; end word CharIsDigit(char Ch) if ('0' <= Ch & Ch <= '9') | (Ch = '$') then return 0; end return 1; end word StringLength(char @St) word P = 0; while St[P] != #0 do inc P; end return P; end word StringCompare(char @St1, @St2) word P = 0; while St1[P] = St2[P] do if St1[P] = #0 then return 0; end inc P; end return 1; end char @StringCopy(char @Dst, @Src) word P = 0; while Src[P] != #0 do Dst[P] = Src[P]; inc P; end Dst[P] = #0; return @Dst; end char @StringJoin(char @Dst, @Src) StringCopy(@Dst[StringLength(@Dst)], @Src); return @Dst; end [...]
Ich empfehle, die Funktionen für StringCopy, StringCompare, etc nicht selber zu schreiben, sondern das kompilierte Programm gegen eine crt0-Implementierung zu linken. crt0 ist die Standardlibrary von C und enthält u.A. hochoptimierte Versionen für strcpy und außerdem malloc, das manchmal etwas effektiver ist, als HeadAlloc, etc.
-
Ich würde grundsätzlich erstmal einen Singleplayer bauen, denn meiner Meinung nach braucht jedes Spiel einen Singleplayer außer MMOs. Wenn es ein reines Survivalspiel werden soll, warum braucht man dann überhaupt eine Kampagne? Man spielt einfach los und muss irgendwie mit verschiedenen zufälligen Ereignissen klar kommen. Nach einem normalen Singleplayer kommt dann eine LAN-Version, die man mit Freunden, denen man vertraut, spielt, sodass man keine Verschlüsselung braucht. Erst dann kommt eine richtige Serverversion.
Ich werde beim programmieren nicht helfen, aber kann vielleicht ein bisschen erklären oder bei Performanceproblemen Lösungsansätze nennen.
-
[Blockierte Grafik: http://www.worldofugly.de/ugly/1243.gif]
[Blockierte Grafik: http://www.worldofugly.de/ugly/625.gif] + [Blockierte Grafik: http://www.worldofugly.de/ugly/653.gif]
-
Schön.
Du könntest noch Order automatisch durch UBound selbst ermiteln und statt zwei arrays ein zweidimensionales übergeben.
MfG, Marthog
-
0 Lags, konstant 160 - 170 FPS. Sehr gute Arbeit.
Darf ich dabei mal eine Frage stellen? Ich habe nun schon einige 3D Anwendungen hier gesehen, die allerdings immer optisch echt grausam waren für den heutigen grafischen Stand. Das man es nicht mit den Top-Spielen vergleich kann ist mir bewusst, aber dieses Beispiel wiederrum sieht sehr scharf und gut aus. Ist es nicht möglich konstant so eine geile Grafik für Spiele mit AutoIt zu halten?
Hier werden wenige Dreiecken nur gerändert. Mit Irrlicht hätte man bestimmt 1500 FPS für die gleich komplexen Grafiken.
-
Spieleentwickler wollte ich immer werden, aber ohne ein Privatstudium kannste das bestimmt eh knicken. Hab mich schon mit mehreren Unis unterhalten und ich weiß nicht ob das etwas für mich ist. Ich mag es nicht etwas "dummes/sinnloses" programmieren zu müssen.
Ein Informatikstudium ist wohl eher nicht für Spieleentwickler geeignet, wobei es bestimmt auch nicht schaden kann.
Spieleentwicklung hat seine eigenen Regeln, denn im Gegensatz zu Wissenschaften gilt da nicht "so genau und allgemein wie möglich", sondern "ähnlich aussehen in möglichst kurzer Zeit". Ein Großteil der Spieleprogrammierung im Bereich besteht darin, Illusionen zu erzeugen, die sich schnell berechnen lassen, aber nur wenig mit der Wirklichkeit zu tun haben.Es gibt zwar diese eine Spieleentwickler-Ausbildung und da sowie ich das gehört habe, gibt es danach quasi Jobgarantie, aber letztendlich kommt es nicht auf ein Studium an. Piranha Bytes nehmen jeden Schulabschluss an, solange Interesse und Können da ist, und ich denke, bei den anderen Entwicklern wird es ähnlich sein. Als Indie-developer ist es eh egal, hauptsache man kann's.
-
-
Für mich ist es aber wichtig realitätsnah zu bleiben.
Welches realitätsnah? Meinst du, dass du nur programmieren willst und das war es? Dann bekommst du zwar einen Job, aber nicht unbedingt gut bezahlt. Wenn man etwas kompliziertere Arbeit will, entwickelt man halt entweder Algorithmen (erstmal theoretisch und dann programmiert) oder leitet ein Projekt. Bei beiden arbeitet man auch realitätsnah, denn man bringt schließlich einen Algorithmus zu Papier, der später (von anderen oder einem selbst) implementiert wird und so ein bestimmtes Problem löst.Ich selber werde beim Studium als Nebenfach Bioinformatik haben und ich denke, dass man in dem Gebiet (nach der Uni) auch nicht so viel mit programmieren zu tun hat, sondern eher mit planen. Programmiersprachen lerne ich nicht gezielt (außer Haskell), sondern dann wenn ich sie brauche. Ich habe mir Grundlagen für Python angeeignet und kann jetzt gut abschätzen, wann ich das brauche und kann C++ und AutoIt gut (soweit man bei C++ von gut sprechen kann). Lua habe ich mal nebenher gelernt, weil ich es einfach für ein Projekt brauchte.
-
-
hier mal eine Übersicht was gerade angesagt ist.
http://www.tiobe.com/index.php/cont…tpci/index.htmlDiese Seite stellt aber nicht genau dar, was in der Industrie verwendet oder gefragt wird. C ist nunmal historisch gesehen die Grundlage der meisten Programmiersprachen, z.B. printf war in dieser Form, wie es auch heute noch in den meisten Programmiersprachen existiert (StringFormat in AutoIt) in C zum ersten Mal da.
Die meisten Interfaces zwischen Funktionen sind in C, z.B. die exportierten Dll-Funktionen werden nach außen alle als C deklariert, damit sie einfach gefunden und geladen werden können, auch wen Rückgabewerte, Aufrufbedingungen etc. in C++ geschrieben ist.
C++, GLSL, OpenCl, HLSL sind alles Abwandlungen von C und Java, C#, Objective C, D, Vala sind Abwandlungen von C++. Man kommt also um C fast nicht herum, auch wenn man in anderen Sprachen schreibt.Dadurch kommt es, dass C so extrem wichtig ist, aber ich bezweifel doch sehr, dass Firmen noch viel nach C-Programmierern suchen, sondern ihre Projekte mit anderen Sprachen entwickeln.
-