Showcase
![]() |
ProjektWorks Chat![]() ProjektWorks www.projektworks.de |
![]() ![]() ![]() ![]() ![]() Abgegebene Stimmen: 5 Du musst eingeloggt sein, um eine Bewertung abgeben zu können. Fortschritt: 100% Version: 0.16.1 Entwickler: Mathias-Kwiatkowski |
BeschreibungProjektWorks Chat
Features- Verschiedene Chat Räume
ScreenshotsDownloadsKeine Downloads vorhanden |
Kommentare
- 1, 2 › »
warum? - die alte version hat bekanntlich nur gut ausgesehen. es war vieles zu verbuggt. nun habe ich erst mal soweit ich es mir erhoffe eine konstante version geschrieben, an der ich gern auch festhalten möchte. diese version werde ich auch weiterentwickeln. ich hoffe das man nun dennoch spass an diesem chat haben kann.
1. das hauptproblem mit drawtext was ich derzeit angehe. ( da mach ich mir um icons oder hintergrundbild uhr ect. weitere features wenig gedanken ) der chat soll natürlich nich das hauptmerkmal sein. kla ist es die gui, die so wie ich schon seit mehreren tagen sage buggy ist, leider. der chat soll natürlich irgendwann nur ein 2. merkmal sein, und auch ein spiel draus werden. dazu muss aber erst mal alles richtig funktionieren.
mein weg den ich grade versuch aufzuarbeiten.
1. gui bugs raus, preformenc verbesseren, wie gesagt was derzeit nich grad einfach ist. ( aus verschiedenen gründen )
2. netzwerk erweitern. ( es soll ja nich ewig einer fluten können. ps wird das fluten mehr cpu verbrauchen als die fenster wenn ich da richtig lliege -ddos attacken sind für beide rechner nich gut, einmal der der sendet... der der empfangen will. wobei es ja schon gut ausgedrückt worden ist. flaschenhals ist hier der server - chat als programm.
3. werden die icons irgendwann rauswandern : grund -> spiel anstelle eines hg bild.
4. Konsolen fenster. ja wozu dient es, welche berechtigung hat es. für einen user keine ^^. nur ich kann es derzeit nicht rausnehmen, den alles was gesendet wird geht ob man es sehen kann oder nicht über das konsolenfenster, grund dafür ist eigentlich nur damit ich sehen kann oder sehen konnte wo ein fehler ist.) wenn alles fertig ist oder falls das mal so sein sollte. ist das konsolen fenster geschichte oder nur noch für admins sichtbar. um fehler zu entdecken (debug modus) sozusagen. das konsolenfenster liefert also nur admins alle infos die das programm macht, nicht die user selber.
-> ich habe pummelie nie als lügner seiner cpu hingestellt ich sagte nur das ich es nich empfinde... dennoch weiss ich im hintergrund, was dran schuld ist: drawtext. habs ja vor langem schon gemessen. es gibt dazu auch module ect. aber derzeit habe ich keine vernümpftige lösung gefunden die ich in der gui anpassen kann.
dann kommt derzeit leider noch der motivationsmangel... das reale leben ist grad nich so leicht ^^.. mein sohn verbraucht grad meine energie wie sonst nichts anderes.
aber davon ma abgesehen habe ich irgendwann vor tagen schon geschrieben das die gui buggy ist und ich auch die probleme kenne. gut wenn es dann einer sagt oder anspricht. bin ich froh drum, habe gern danke gesagt für die fehlerauflistung ect. aber ständige fluten (ddos) attacke, macht nun auch kein sinn oder? und features vorschläge sind derzeit leider auch unangebracht. da es zuviele fehler gibt. warum ein showcase eintrag ich denke dieses wurde gefragt. es sollte kla ein test darstellen wie es so bei anderen usern aussieht. fps. latenz ect. ( und aus einer alpha soll sich ja auch irgendwann eine relase bilden. ) ohne fehler. nur da bin ich leider noch ganz weit entfernt. was ich aber nicht wusste als ich den showcase eintrag geschrieben habe. ich war im glauben das die gui (bis auf den drawtext problemm) einwandfrei funktioniert, ich war auch der meinung das ich kein problem in der netzwerk strucktur habe. habe mich aber sehr schnell wundern müssen was alles kam.
1. leute wollten sich registrieren es ging aber nicht, warum? ich habe mich schliesslich auch registriert wie bislang alle die es ausprobiert haben. ( da war das problem des lokal und global testen... kennt ihr vieleicht, lokal funktioniert gewiss alles viel schneller als global ) gut dieses problem konnte ich nun ganz schnell beheben.
mein 2 problemchien was dann kam. z.b. man hat etwas geschrieben, der text kam 2 oder 3 mal an. warum ist das so? ganz einfach der chat arbeitet via udp fast only. und ich sende wenn eine udp msg nicht ankamm nach. das heisst jede naricht hat eine ID wenn z.b. id 3 nich angekomm is sendet der server nach 299 sek nach, und erst dann wird die ID 4 auf dem client angezeigt, damit ich also auch die reinfolge einhalte. ok nun wurde die naricht doppelt angezeigt. warum war das so, ganz kleiner fehler anstelle der benannten 299 ms hab ich wohl eine 9 gekillt und somit wurde die naricht nach 29 ms nachgesendet, im ernstfalle konnte der client die mitteilung nichmal bestätigen das sie angekomm ist
![Very Happy](/forum/images/smiles/icon_biggrin.gif)
ich weiss aber wo es das problem noch gibt, 1. beim messenger 2. Privat msg. aber dieses wäre auch schnell gelösst. wenn ich mich aufraffen kann. nur wie gesagt bis ende nächster woche habe ich noch volles programm im relive.
so ich hoffe das dieses statment nun alle fragen klärren wird. und ich begründen konnte warum ich was wieso so gemacht habe. ich versuche es so schnell wie es mir möglich ist oder wie es mir gelingt alles zu verbessern. und danach zu erweitern.
Von DAK
Zuerst zur Auslastung: bei meinem i7 habe ich eine Gesamtauslastung von 3-5%. Um dann auf die Auslastung für den einen Kern zu kommen, der verwendet wird, muss man das mal 8 rechnen (vier Kerne + vier virtuelle Kerne, Windows rechnet hier die Auslastung auf dem einen Kern durch die Anzahl aller echten und virtuellen Kerne), und schon hat man 24-40% Auslastung!
Dividiere ich das durch 2 um die errechnete Auslastung auf einem Dualcore ohne Hyperthreading zu bekommen, dann bin ich auf 12-20% Auslastung und damit ziemlich nahe an dem, was Pummelie angibt.
Auf deinem i5 hast du 2 echte und zwei Hyperthreading-Kerne. Die Auslastung pro Kern errechnet sich damit aus Auslastung im Taskmanager / 4.
Wir reden gar nicht davon, dass die i5- und i7-Reihen extrem schnelle Prozessoren sind, die pro Takt und Kern deutlich mehr verarbeiten können, als Prozessoren von nur ein paar Jahren davor.
Diese Menge Auslastung nur für einen Chat ist schon eher viel.
Du begehst hier auch einen Fehler, den viele Entwickler begehen: Du entwickelst das Programm so, dass es auf deinem Rechner gut rennt. Ein i5 ist jetzt bei weitem kein schlechter Prozessor. Die meisten Nutzer haben aber keinen i5 oder i7, sondern eher etwas zwischen Atom, Core2Duo oder i3 (oder die AMD-Gegenstücke).
i5 und i7 sind die Hochleistungsprozessoren, nicht die Durchschnittsprozessoren.
Ich habe mir mal zum Vergleich MIRC runtergeladen und dort den Verbrauch angeschaut: 0.00%, das heißt, der echte Verbrauch liegt unter 0.005% und wird abgerundet, weil er so gering ist.
Außerdem betonst du gerne, dass es ja nur ein Chat ist, und deswegen die ganzen Features nicht braucht ("oder gibt es tatsächlich chats die icons benötigen oder eine hintergrundfarbwahl?", "die uhr unten rechts... muss sie grösser werden im chat? ernsthaft? wozu? wäre halt nur so ein kleines feature mehr aber auch nicht."), oder nicht so gut umgesetzt braucht.
Wenn es dir nur um einen Chat geht, dann schau dir doch bitte an, wie gute IRC-Clients gemacht sind. Da kannst du dir viel abschauen, was wichtig ist, für einen Chat.
Wenn es dir wirklich nur um einen guten Chat geht, dann lass bitte alle Features weg, die dir nicht die Arbeit wert sind, sie richtig hin zu bekommen.
Ein Chat braucht zum Beispiel kein Hintergrundbild und überhaupt keinen Desktop. Mehrere Fenster sind nett, aber das geht ohne Desktop auch. Tabs würden's auch schon tun.
Geht's dir aber nicht um den Chat, sondern um die tolle GUI (die wirklich nett ausschaut), dann ist die Geschwindigkeit der GUI eins der wichtigsten Sachen überhaupt. Stell dir vor, du willst die GUI für ein Spiel verwenden, und 40% der Prozessorleistung sind schon für die GUI weg. Da bleibt ja kaum was für's Spiel über. Stell dir mal vor, bei Windows ginge 40% der gesamten Prozessorleistung nur für die GUI drauf. Das würd ja keiner verwenden!
Ich glaube außerdem, dass du das mit dem Image Grabben nicht ganz verstanden hast. Du hast recht, wenn du jedes Frame das Fenster in ein Image grabst und neuzeichnest, dann ist es natürlich langsamer. Worum es aber geht, ist dass du es nur dann grabst, wenn das Fenster sich ändert. Z.B. die Konsole, die bleibt den Großteil der Zeit gleich, alle paar Sekunden vielleicht ändert sich mal was. Sagen wir, hochgegriffen, alle 2 Sekunden kommt dort was neues rein. Bei 60 FPS ist das jedes 120te Frame. Das ist vernachlässigbar gering.
In BB und BMax wird (soweit ich mich erinnere) jeder Buchstabe bei DrawText einzeln als Bild gemalt. Dazu kommt, dass in beiden Sprachen Funktionsaufrufe extrem viel Leistung verbrauchen.
Jetzt mal zur Rechenaufwandsabschätzung:
Hast du ein Fenster mit nichts anderem (wir ignorieren mal die GUI) als 200 Zeichen Text (was gar nicht so viel ist), und du machst das auf deine Art, dann hast du pro Frame folgenden Aufwand:
1x DrawText
200x DrawBitmap
Sind pro Frame 201 Aufrufe, macht pro 120 Frames (=2 Sekunden) 24120 Aufrufe.
Machst du's mit dem ImageGrab, dann schaut das so aus:
Erstes Frame:
1x DrawText
200x DrawBitmap
1x Grab Image
1x DrawBitmap
Jedes weitere der 119 Frames:
1x DrawBitmap
Sind pro 120 Frames 322 Aufrufe, also pro Frame runtergerechnet ~2,7 Aufrufe. Siehst du den Unterschied?
Klar verbrauchen nicht nur die Aufrufe Zeit, aber in der Menge machen sie doch den wesentlichen Großteil der benötigten Rechenzeit (>90%) aus.
Um das Ganze so schnell zu kriegen, wie Windows selbst musst du noch etwas weiter tricksen. Zuerst mal lässt du das CLS raus. Dann schaust du in jedem Frame, welche Teile des Bildschirms sich geändert haben und zeichnest nur die neu. Damit kriegst du einen Geschwindigkeitsboost, das glaubst du gar nicht.
Sowas ist notwendig, um auf die Leistung zu kommen, die professionelle Programme erbringen.
Von Pummelie
Ich habe jetzt eigentlich nur über die GUI gesprochen, als eigenständiges Produkt, da es mir sowieso so vorkommt, als das du eine nette GUI gemacht hast,
dann aber gemerkt hast, das eine GUI allein leider kein Showcase-Projekt sein kann, also hast du einen Chat reingeschmissen
![Wink](/forum/images/smiles/icon_wink.gif)
Spaß beiseite, jetzt gehe ich mal auf die Last ein.
Auf einem P3 war die Anwendung nur solange lauffähig, wie ich Chat/Konsole nicht geöffnet hatte.
Finde am besten einen anderen Weg zur Darstellungen von Text.
Mein PC wechselt je nach Situation zwischen einem AMD Phemon II 1090T (getacktet bei 4,5 GHz) und
einem AMD FX-8350 (getacktet bei 4,2 GHz).
Das Darstellen der Bilder ist meiner Meinung nach noch das schnellste, Text und Pixelfunktionen sind langsamer.
Von DAK
Für einen Chat alleine finde ich das Ganze recht unpassend. Wozu braucht man für ein paar kleine Chatfenster eine komplette Desktopumgebung? (Erinnert mich ein wenig an das Windows 8-Vollbildsyndrom. So auf die Art, wozu brauche ich einen 17"-Bildschirm im Vollbildmodus um mir das Wetter anzeigen zu lassen? Ein kleines Fenster/Gadget reicht dazu auch).
Wirklich cool wäre es allerdings, wenn du daraus noch ein Spiel im Stil von Uplink machst, dass man dann im Multiplayer spielen kann. Das wäre wirklich genial.
Noch eine Sache ist mir aufgefallen: Wodurch verdient es die Konsole, dass sie in den Rang einer Taskleiste erhoben wird, und nicht nur eine Verknüpfung am Desktop kriegt?
das man die gui komplett farblich abstimmen kann wie man mag ist auch nur eine spielerei. daher bedarf es kein grossen aufwand eine farbpalette zu intigrieren.
das verschieben der icons, ist zwar drin aber bäm, im ernstfalle reicht auch die standart ausrichtung, sprich keine verschiebbaren icons, wenn man nun die schrift der icons übernanderlegt ok... dann ist das so ps. ich denke grad dran was passiert wenn du alle icons übereinanderlegst, was normalerweise ja nicht funktioniert, in diesem fall aber schon. wie gesagt wir sprechen hier über ALPHA , das raster ist immer so gross wie das icon selber in diesem falle 32,32 - Icons - Taskbar sind eine spielerei, gui color ebenso, hintergrund auch ebenso. oder gibt es tatsächlich chats die icons benötigen oder eine hintergrundfarbwahl? wenn man das X vom fenster anvisiert ist es auch so gewollt das das O links sich mitmaskiert. ( vollständiges schliessen der fenster ) ich glaub es so gesehen zu haben auf amiga os 4.. und bei dir braucht 1 fenster ernsthaft 12% cpu... ok.... du hast vom konsolen fenster gesprochen... der text der sichtbar ist wird via drawtext "gemalt" daran könnte es liegen. genauso auch bei chat fenstern. alle anderen wo wenig text vorkommt ist dies nicht der fall. ich muss ehrlich sagen auf mein i5 habe ich nich so eine hohe auslasstung und auf mein dualcore ebenfalls nicht so hoch. wenn man das fenster verschiebt, warum sollte man es nicht sehen dürfen? das ist meinermeinung nach geschmacksache. die uhr unten rechts... muss sie grösser werden im chat? ernsthaft? wozu? wäre halt nur so ein kleines feature mehr aber auch nicht. jedes fenster hat 9 bilder. warum sollte ich hingehen und jedes fenster vorrendern wenns nichmal 0.01 sek sparrt? sogar das gegenteil grap und createimage würden sicher länger brauchen oder nicht???? gut wie ich sagte ich weiss nicht was du für ein pc hast, auf mein dualcore der mitsicherheits der schlechteste pc im haus ist. erreiche ich keine 12% trotz den 9 bildern. um ehrlichzusein ist es bei mir gleich. für kleinere spielerein wie z.b. der chat ist die gui sozusagen gut genug. es soll ja kein emuliertes windows system sein oder dergleichen, tbs habe ich auch nur via taskleiste geproggt weil mir nichts besseres eingefallen ist. icons sind auch nur drin weil. wie sonst? verschiebbare buttons? oder statische buttons? es geht um die eigentliche gui. sie hat mitsicherheit einiges was buggy ist, ich kenn auch schon viele bugs der gui , die ich irgendwann ausmerzen mag, ( wenn das wetter -> erklärungsbedarf : wir haben hier grad sau geiles wetter
![Very Happy](/forum/images/smiles/icon_biggrin.gif)
was war noch ahja alpha... jedes gadget ist "im alpha" es ist sogar ein bildschirmschonder drin, was macht er... er wird dunkel xD mehr nicht, und da kann man dann ganz schön sehen wie alles sich ins leere auflösst. ist im chat aber nich aktiv und auch nich aktivierbar.
fenster duplizieren, ist so ne sache. habe mich bewusst dagegen entschieden. das wenn man nochmals draufklick das dieses fenster ein fokus bekommt hörrt sich da schon besser an.
im grunde wäre es möglich jedes fenster 20 mal darzustellen. aber wer braucht es und wozu?
viele kleine bugs sind drin, leider und sie werden irgendwann verbessert. aber das wird zeit brauchen.
Von Pummelie
Sie arbeitet ja offensichtlich mit Alpha Effekten.
Das wirkt sich aber nur auf die Fenster aus, die Gadget's zeigen sich unbeeindruckt.
Da ich den Code nicht vorliegend habe, kann ich nicht sagen, ob eine solche Funktion existiert, und nur wegen ästhetischer Gründe nicht genutzt wird, jedoch ist dies ein wünschenswertes Feature.
Das Verschieben der Icon's im Raster funktioniert zufriedenstellend (auch wenn man kein Feedback vom Programm erhält ab wann man etwas verschieben kann)
Das Raster ist jedoch eine Stufe zu klein (Symboltexte Überlappen sich, werden nicht auf Symbolgröße gebrochen).
Ich fände es auch sehr schön, wenn ich das Raster beim Verschieben durchschimmern sehen würde (halbtransparente weiße Gitter oder soetwas...).
Die TabLeiste ist etwas Misslungen (meiner Ansicht nach).
Die Standartfarbgebung lässt sie nicht ins Auge stechen, bei hellere Farben fällt sie schon eher auf, vlt. sollte sie eine von dem Rest der Oberfläche unabhänge Farbe bekommen.
Das Begrenzen der Tabs voneinenander ist etwas 'dünn' ausgefallen.
Hier sollte der Trennstrich entweder etwas dicker sein, oder die Tab's einzeln existieren, mit einem Stück TabLeiste dazwischen.
Wenn man bei einem Fenster über das X fährt, wird das O ebenfalls hervorgehoben, fährt man über das O selbst, wird nur dieses selbst hervorgehoben.
Wenn ich ein Fenster öffnen möchte, welches bereits geöffnet ist, passiert nix.
Hier sollte sich entweder ein Duplikat öffnen, oder das bereits geöffnete Fenster besonders hervorgehoben werden. (z.B. mit blinken oder einem akustischen Signal)
Wenn ein Fenster keinen Fokus hat, und ich es verschieben möchte, erhält es nur den Fokus, statt mit dem Schieben an zu fangen.
Das Darstellen der Konsole kostet enorm viel CPU-Zeit.
Die Auslastung steigt mit aktivierter Konsole bei mir auf 60% (ein Kern).
Ansonsten brauchen die einzelnen Fenster sowieso viel CPU-Resourcen.
4-12% CPU für ein Fenster ist übertrieben.
Vlt. hilft es die Fenster, wenn sie statisch sein (keine sich ohne Nutzeraktivität verändernden Gadgets) als Image zu speichern, und den aufwendigen Render nur dann einzusetzen, wenn dies auch wirklich notwendig ist.
Es sollte möglich sein ein Fenster zu schließen, auch wenn dieses nicht den Fokus hat.
Das Verschieben der Fenster erhöht die CPU Last nicht, was gut ist, jedoch ist es nicht immer gewollt, das Fenster beim Verschieben zu sehen, ein Phantomabbild (Umrisse?) genügt eigentlich.
(Dies wäre eine super Möglichkeit für Optionen, um die GUI den Nutzerbedürfnissen besser anpassen zu können)
Die Schrift der Uhr passt farblich zwar solange wie der dunkle Standartton eingehalten wird, bei hellen Farben ist die Schrift (welche ebenfalls für meinen Geschmack zu klein ausgefallen ist) kaum noch sichtbar.
Ich weiß nichtmehr wo ich das mal gesehen habe (Vollbildanwendung), jedoch bewirkte das in die Ecke fahren mit dem Mauszeiger dort, das eine große Uhr sich mit einem Alpha Effekt über das gesamte Bild legte.
Das wäre sicher auch ein schönes Feature.
Die Farbwahl geschieht über einen Windowsdialog.
Dies bewirkt das solange die Farbwahl offen ist, das ganze Programm freezt.
Sicher kein Beinbruch jedoch unschön gelöst.
Hier könnte man sicher mit einem Thread optimieren, dasselbe gilt für den Login, bei welche das Programm bei mir für 3 Sekunden erstmal Pause macht (Keine Rückmeldung).
Ok, das ist für den Moment alles was ich herausfinden konnte, hoffe es sind ein paar Anregungen mit dabei.
ja autofokus. das is schon etwas sinnvolles. und auch leicht einbindbar. werde es berücksichtigen bei einer nächsten version ( oder übernächsten ), die icons sind eig. alle 32x32. also sollte das treffen kein prob darstellen. aber ich hatte eh vor die einstellungen zu erweitern und solche (kleinigkeiten wie z.b. icon grösse einzubinden)
aber es gibt leider derzeit andere bugs als auto ip bann und autofokus. zumal noch ein paar gadgets fehlen die ich mir wünschen würde.
zu der sache mit speicherungsdatei (auslagerungsdatei) sie gibt es sehr wohl, allerdings erst wenn du deine einstellungen gespeichert hast. gut wir haben nun nicht 1000 einstellungsoptionen was du dir sicher wünschen würdest.
derzeit 2 Einstellungsoptionen
1. hintergrund
2. gui farbe kann frei genommen werden
die option vollbild ist deaktiviert. da es dort ein paar bugs gibt warum auch immer.
später wie gesagt hat man weitere einstellungen z.b. grösse der icons.
aber erst mal ist es mir vorallem wichtig das die gui so funktioniert wie ich sie gern hätt ^^ ... nach ein paar test's ergaben sich leider zahlreiche fehler die man als singel tester nicht bemerken kann. somit haut es mich in einer anderen richtung als in die weiterentwicklung. naja so ist das nunmal.
(weiterentwicklung wäre auch das server prog fluten - bann ) gewesen. du solltest bedenken das du hier noch über eine alpha relase sprichst ^^. und diese vom beta stand weit entvernt ist. Leider
![Sad](/forum/images/smiles/icon_sad.gif)
Von Pummelie
Der Server mag zwar nach wie vor funktionieren, jedoch ist er nicht mehr benutzbar.
Der Flaschenhals ist nicht die Anbindung, sondern das Programm/CPU.
Versuch doch eine Automatische Bannung von IP-Adressen die deutlich mehr Anfragen und Verbindungen aufbauen, als die ein Mensch könnte.
Ansonsten ist die GUI wirklich gut geworden, das Schließ-Icon (oder wie man das betiteln will) ist leider etwas klein, mit einer schnellen Maus schlecht zu treffen, und das der Fokus von Fenstern und Gadget's nicht automatisch (sinnvoll) gesetzt wird, nervt auch leicht.
Ich würde mir zudem ein paar editierbare Daten wünschen, also Einstellungen der GUI die du offensichtlich Hardcode hast (oder einfach nicht freigeben willst
![Very Happy](/forum/images/smiles/icon_biggrin.gif)
Die GUI ist sicher auch für andere Projekte interessant, ein Spiel würde von einer solch guten InGameGUI sicher profitieren (wenn es eine InGameGUI wirklich braucht
![Wink](/forum/images/smiles/icon_wink.gif)
aber wenn du schon was man ja eigentlich nicht darf oder sollte. fluten magst. dann ruckelt er natürlich NICHT ^^. ehr dein client
![Very Happy](/forum/images/smiles/icon_biggrin.gif)
da alles was du sendest, schau nach via netzwerk monitor auch wieder zum absender zurück kommt. ich weiss ja nich wer von den 2 usern du bist, da ich die ip nich mitschreibe. aber ich kann es mir gut denken. und falls einer hacken mag, bitte tut euch kein zwang an. man wird sehr schnell merken der client connectet zu einem php script. aber ihr könntet euch die mühe sparen den ihr werdet sehr schnell feststellen das dieses php script nur dazu benutzt wird um MD5 - verschlüsslung zurückzugeben. aber jetzt wo ich merken muss das tatsächlich DDOs attacken auf einem lausigen Chat Server ausgeübt werden, werd ich ein automatischen pol schreiben damit dieser user dann gebannt wird. ist ja keine grosse sache.
abgesehen von der tatsache das dieses ein chat / messenger system ist. wollte ich eigentlich nur mit meiner eigenen gui bissel experimentieren. schauen ob sie funktioniert ect.
Von Mathias-Kwiatkowski