Klient dla komputerów

Elten Engine, czyli nowy silnik Eltena

Started by pajper 199 posts last post 2 days ago Page 3 of 10

#41

Ktoś mnie pytał, jak się mają prace nad silnikiem.
Jeśli chodzi o to, co jest do zrobienia.
Po pierwsze i pewnie najtrudniejsze, trzeba przekształcić nieco strukturę Eltena.
Elten powstawał z początku z myślą jedynie o Windowsie, w kodzie jest więc pełno odwołań do Windowsowych bibliotek.
Trzeba przekształcić ten kod do takiego stanu, w którym wszelkie odwołania będą do czegoś w rodzaju Eltenowego coreu, zbioru funkcji.
I dopiero te funkcje będą odwoływać się do Windowsowego API.
Innymi słowy Elten podzieli się z dwóch stopni na trzy.
Obecnie jest Elten API, które tworzy zbiór funkcji, z jakich korzysta właściwy Elten, plus odwołania do bibliotek.
Elten będzie składał się z trzech poziomów.
Po pierwsze bedzie podstawa funkcji do odczytu klawiatury, mowy, łączności i tak dalej. Na tym będzie bazowało Elten API, a na Elten API właściwy program.
Proces takich przekształceń zacząłem już w Eltenie 2.2 i dalej nad nim pracuję równolegle do pól tekstowych.
Kiedy to się uda, faktyczne porty na inne systemy będziemy wykonywać jedynie poprzez modyfikację tej najbardziej podstawowej części Eltena, bazy funkcji, samo API zaś i reszta kodu będą identyczne dla wszystkich systemów.
#StandWithUkraine

Shoot for the Moon. Even if you miss, you'll land among the stars.

#42

Mówiłęm Ci, że służę pomoca, w razie bym był do czegoś potrzebny.

#43

OK.
Gdzie jest najnowsza wersja?
Chcialbym to wypróbowac, mysle, ze nadal mam stara.

#44

Jeszcze nie ma tego nigdzie udostępnionego

#45

Ok, chyba wreszcie udało mi się z tym dziwacznym API Rubiego dogadać w C, przynajmniej jako tako.
W eksperymentalnych poprzednich buildach wykorzystałem po prostu lekko zmodyfikowany interpeter Rubiego 2.4.1, teraz już piszę normalny silnik na własnym kodzie w C.
Jako tako ogarnięta jest mowa, póki co mniej niż bardziej, ale już umie mówić, kwestią będzie stworzenie okna, nie wiem jeszcze w czym by było to możliwie uniwersalne, więc jak ktoś na kodowaniu znający się ma propozycję, piszcie, a inaczej po prostu będzie WinAPI na Windowsie, X na Linuxie i nie mam pojęcia co na Macu. :D
#StandWithUkraine

Shoot for the Moon. Even if you miss, you'll land among the stars.

#46

BGT :D :D :D
Sygnatura to może być w sądzie. Sygnatura sprawy np. :P

#47

Silnik jest generalnie napisany w C, więc nawet nie mógłbym użyć BGT.
#StandWithUkraine

Shoot for the Moon. Even if you miss, you'll land among the stars.

#48

Poniżej załączam specyfikację nowego silnika, to informacje dla wszystkich chętnych pomóc programistów i doświadczonych testerów, choć do pierwszej publikacji nadal sporo czasu. W razie jakichkolwiek sugestii zmian, piszcie szybko. :)

Silnik napisany jest w języku C, w oparciu o Rubiego w wersji 2.5.1 obecnie z racji na brak stabilnej migawki 2.6 póki co, docelowo będzie to Ruby 2.6.0.
W odróżnieniu do obecnej struktury kodu, wszystkie wywołania zewnętrznych bibliotek będą przepisane do C ze względu na szybkość tego języka.
Obecnie całe klasy do obsługi Socketów, SAPI, dźwięku i całej reszty napisane są w Rubym z odwołaniem do bibliotek dll przez Win32API, w nowym silniku wszystkie te funkcje będą napisane C i wywoływane z faktycznego kodu z Rubiego.
Kod w RUby będzie identyczny dla wszystkich systemów, co ułatwi ujednolicenie i współaktualizacje, wszelkie różnice związane z API będą zawarte już w C, przy czym nadal będzie to jedno wydanie, tu sie kłaniają ifdefy i inne preprocesorowe instrukcje.
Elten w celu uniknięcia problemów zależnościowych będzie wydawany jako pełna aplikacja z załączonymi wszystkimi bibliotekami na Windowsie, w wypadku Linuxa i Maca jeszcze nie zdecydowałem, jako jednak, że Linux ma Rubiego w swoich bazach pakietów tak APT jak AUR, a Mac ma go wbudowanego myślę, że wykorzystane będą tu zależności.
Elten nie będzie skryptem uruchamianym w interpreterze, a zwykłą kompilowaną aplikacją zawierającą w pełni skompilowaną częscią w C i kod Rubiego w wersji kodu pośredniego, używam tu Ruby C API.
Nie będzie wymagana instalacja zadnych gemów ani niczego takiego, wykorzystane gemy zostaną osadzone bezpośrednio w kodzie.

Stan obecny na 19.04.2018:

Co działa?
W zasadzie niewiele, bo to same podstawy i Elten nawet się nie uruchamia, mamy jedynie możliwość wywoływania poszczególnych funkcji z maina w C lub Rubym.
Binarka poprawnie kompiluje się na wszystkich trzech systemach, to jest Windows, Mac oraz Linux.
Na Windowsie działa mowa łącznie ze zmianą głośności, prędkości i głosu oraz obsługą czytnika ekranowego., Na Linuxie działa obsługa Espeaka.
Na wszystkich trzech systemach działa obsługa socketów.
Na Windowsie i Linuxie obsługiwane są certyfikaty SSL.
Na Windowsie oraz Linuxie obsługiwany jest zlib.

I to w sumie tyle, następnym krokiem jest dokończenie prac nad mową, obsługa Speech Dispatchera na Linuxie i Voice API na Macu oraz napisanie okienka na te systemy.
#StandWithUkraine

Shoot for the Moon. Even if you miss, you'll land among the stars.

#49

Mac nie moze tak bardzo róznic sie od Linuksa, poniewaz jest na nim oparty.

#50

Na jakim Linuksie jest mac oparty? Oo nieee

#51

O, przepraszam, zla informacja.
Opiera sie na unixie, na którym bazuje równiez Linux.
Mimo to, poniewaz oba systemy oparte sa na tej samej architekturze, uwazam, ze musza istniec podobienstwa.

#52

No to już prędzej.

#53

Architektura uruchamialna itd formaty różnych binariów są inne. Biblioteki są inne. Wszystko. Serwer wyświtlania jest inny.

#54

Jest trochę rzeczy wspólnych, to nie powiem, jest bash, jądro jest dość podobne.
Ale API jest inne.
#StandWithUkraine

Shoot for the Moon. Even if you miss, you'll land among the stars.

#55

@Pajper ale o czym ty wykładasz? :O YYY, error mam.
Przecież Elten teraz też jest oddzielna zwykłą exekową aplikacją.
Sygnatura to może być w sądzie. Sygnatura sprawy np. :P

#56

A biblioteki zawsze tu były. :O
Sygnatura to może być w sądzie. Sygnatura sprawy np. :P

#57

Wątek troszkę odgrzebuję, ale informuję że Elten ściągnięty z linku z pierwszego wpisu nie chce się uruchomić, nie tworzy też logów
Happy hacking

#58 1 like

Ja jestem po maturze, to teraz na poważnie do tego usiądę.
Tylko zamknę sprawę archiwizacji Klango.
#StandWithUkraine

Shoot for the Moon. Even if you miss, you'll land among the stars.

#59

Dobra no to będę śledzić zmiany i informować na bierząco
Happy hacking

#60

Ja tam czekam na Linuxową sprawę. Jak coś, to jestem do dyspozycji jeśli chodzi o wiadome sprawy :P