Hejto.pl
Dodaj post

Wpisz coś do wyszukania (minimum 2 znaki)

#programowanie

Tytan

w Hydepark

12piorunów

Kolejna nocka, kolejne tworzenie.

W końcu udało mi się znaleźć coś, co będzie ładnie wyglądać jako informator poziomu.
Zarazem będzie odpowiednio prosto przekazywał gdzie jesteś, ile masz żyć i zebranego złota.

Kilka dni kombinowania znowu, przechodzenie od animacji ruchomych części, przez jakieś większe animacje ruchu skrzydeł, rozsuwania się pergaminu.
Aż po finalną wersję Fade In / Out w odpowiednim momencie z prostą grafiką.

Prosty i przejrzysty projekt
Nazwa Biomu
Nazwa poziomu
Ilość żyć [Ikona Biomu] Ilość złota

W grze będzie 9 biomów, każdy z nich ma około 40 poziomów.
Tak więc pojawiać się będzie głównie ten sam tekst "Zamkowe Mury" czy inna nazwa biomu
Nazwy poziomów występować będą tylko i wyłącznie z poziomami, na których umiejscowiony jest Anioł do odradzania.
Pozostałe poziomy zostawią puste miejsce
Opis z ilością żyć wprost informuje ile HP mamy, później w grze widzimy to tylko w menu albo przy Aniołach.

Każdy z biomów będzie miał swoją ikonę, ale będą w tym samym stylu, prosta ikona, kolorystycznie odpowiadająca danej tematyce biomu, Yellow Blossom będzie miało coś z żółtej ikony, natomiast Hollows Passage już z błękitno-niebieskiej.

Demo zbliża się coraz bardziej, pokończyłem sporo rzeczy, które są podstawą, a na którą nie miałem pomysłu wcześniej.

Fanatyk

w Hydepark

11piorunów

Jak ja nienawidzę systemd, co tam nie zrobią to musi być spierdolone. Nie uruchamia mi się usługa libvirtd, błąd

libvirtd.service: Failed to set up credentials: Operation not supported

libvirtd.service: Failed at step CREDENTIALS spawning /usr/sbin/libvirtd: Operation not supported

na podstawie tego trafiam na:

https://bbs.archlinux.org/viewtopic.php?pid=2293101#p2293101

Czyli usunięcia pliku klucza. Chatgpt jeszcze lepiej podpowiada.

Problemem nie jest sam libvirt, tylko ten fragment:

# /usr/lib/systemd/system/libvirtd.service.d/10-secret.conf

LoadCredentialEncrypted=secrets-encryption-key:/var/lib/libvirt/secrets/...

LoadCredentialEncrypted= jest nową funkcją systemd. Błąd

Failed to set up credentials: Operation not supported
status=243/CREDENTIALS

oznacza, że systemd nie potrafi użyć mechanizmu credentiali na Twoim systemie, mimo że dyrektywa istnieje.

Najbardziej podejrzane są:

* brak wsparcia kernela dla memfd/credentials,

* albo (częściej) Debian ma błąd w pakiecie libvirt/systemd.

Najlepszym rozwiązaniem jest to wyłączyć w pizdu

sudo mv \\
/usr/lib/systemd/system/libvirtd.service.d/10-secret.conf \\
/usr/lib/systemd/system/libvirtd.service.d/10-secret.conf.disabled

następnie

sudo systemctl daemon-reload
sudo systemctl restart libvirtd

Autorytet3piorunów

Ech, mam kupę mieszanych uczuć do systemd. Np. mi podoba się jounalctl, podoba mi się ogólny zarys sterowania procesami i to jak łatwo serwisy komponować. Ale z drugiej strony:

* api, ktore nie jest backward compatible to jakiś absurd

* różne fragmenty w configu są mega nieintuicyjne, a docsy wcale nie pomagają. Zdarzyło mi się sporo misconfigow, bo coś przeoczyłem.

Tyle szczescia, że od paru lat nie muszę tego tykać właściwie.

Pokaż więcej komentarzy (6)

Kosmonauta

w AI

9piorunów

i może trochę chociaż bardziej

Siema, jakich master promptów /custom instructions używacie w swoich klientach LLMów /chatachGPT czy Claudach?

Pewnie są tu jacyś Apacze i można się czegoś nauczyć.

Kiedyś LLMy zmyślały na potęgę, a jednocześnie rozwlekle odpowiadały na każde pytanie i trzeba było je trochę ograniczyć. Wtedy zacząłem używać master prompta w apce ChatGPT, który do każdego naszego prompta zaczynającego nowy wątek dodaje ogólne zasady co do tego jak chcemy, żeby model odpowiadał.

Teraz wywaliłem już info o nie rozwlekiwaniu, a ostatnio dodałem specjalne traktowanie transkrypcji głosowych, bo często z nich korzystam.

Mam też specjalną regułę dla tłumaczeń/proofreadingu.

Ktoś chce się podzielić swoim?

If you are not fully confident in a factual answer, or the relevant information may be outdated, search the web before answering.



If missing or ambiguous information could materially change the answer or requested action, stop and ask a focused clarification before proceeding.



Messages may be produced by voice transcription. Treat speech-like flow, filler, self-corrections, and phonetically plausible word substitutions as possible transcription artifacts rather than necessarily intentional wording. Ignore harmless disfluencies and proceed when the intended meaning is clear.

If a probable transcription error creates material ambiguity, identify the uncertain part and ask the user to confirm it, offering likely interpretations when useful.



When asked for proofreading or translation, first list the errors or proposed changes and explain why. If there is a recurring pattern, also explain the relevant grammar rule or good practice before providing the revised or translated version.
Gruba ryba3piorunów

Zainteresuj sie tematem skilli jak chcesz uzywac LLM'ow efektywnie. Poza tym uwazaj na wielkosc okna kontekstowego - im dluzsze tym LLM staje sie "glupszy" i gubi kontekst i moze halucynowac bardziej niz bys tego chcial. Fajnie jest tez wydzielac sub-taski z jakiegos prompta gdu zauwazysz ze temat zachacza o inne aspekty / tematy konwersacji. Dobrze robic podsumowanie konwersacji w postaci jakiegos pliku tekstowego a same zadania wynikajace z konwersacji zapisywac w osobnych dokumentach ktore beda zawieraly detale i konkrente instrukcje per task (ja zapisauje takie cos w plikach ADR / DR).

Kosmonauta0piorunów

Bardzo dziękuję za wszelkie mądre rady i sugestie!

Pokaż więcej komentarzy (15)

Gruba ryba

w Hydepark

53piorunów

Robię sobie w wolnej chwili aplikację do pobierania danych z kontraktów zawartych między podmiotami a NFZ. Niestety API NFZ to taka padaka i ogarnięcie sensownej bazy trochę trwa.

Póki co zapełniam dane za 2026 ale jeszcze nawet nie mam wszystkich placówek XD Gdyby ktoś chciał jakieś dane to spróbuję ogarnąć.

Z takich ciekawostek to obecnie UNIWERSYTECKI SZPITAL KLINICZNY IM. JANA MIKULICZA-RADECKIEGO WE przoduje ale chyba wydają dużo na pacjentów bo ich strona wygląda jak z 1999 roku. https://usk.wroc.pl/

Czy będę udostępniał? Będę chciał ale jeśli chodzi o web development to jestem jaroszem, wiec jednak obawa że ktoś z hejto zhakuje mi płytę główną.

Osobistość6piorunów

@Czokowoko Z 1999 to przesada, byłby wtedy jakiś licznik odwiedzin, zegar i kursor w kształcie tabletki. Myślę, że to bardziej lata 2007. Ale jakby nie patrzeć, to taka strona jest funkcjonalna, łatwo znaleźć najważniejsze informacje, na minus to ładują zbyt dużo newsów.

Pokaż więcej komentarzy (5)

Tytan

w Hydepark

11piorunów

Czasami trzeba się nakręcić do pracy ( ✧≖ ͜ʖ≖)

Tak więc teraz lecą Polskie klasyki, do których se chłop pańszczyźniany śpiewa i programuje.
Dzisiaj na wwawrsztat wpada już informator na poziomach, trzeba zaprojektować coś lepszego niż zwykły tekst z tym badziewnym obrazkiem.


Autorytet0piorunów

@Gagger jak sie sprawuje unreal do pixelartów? widziałem, że do takich gierek są polecane raczej inne silniki więc zaciekawiło mnie

Pokaż więcej komentarzy (2)

Kompan

w Dyskusje

6piorunów

Mała aktualizacja projektu. 😊

Dodałem do PaliwoMapa.pl nowy Planer Podróży, który pomaga znaleźć stacje paliw na wyznaczonej trasie.

Najważniejsze funkcje:
- proponuje stacje znajdujące się w kierunku jazdy (opcję można wyłączyć),
- uwzględnia tylko stacje z cenami zaktualizowanymi w ciągu ostatnich 10 dni,
- pozwala edytować trasę przez przeciąganie jej przebiegu, podobnie jak w Google Maps,
- można ustawić maksymalną odległość stacji od trasy,
- obsługuje do 3 przystanków po drodze,
- na końcu otwiera gotową trasę w Google Maps.

Chętnie poznam Wasze opinie i pomysły na kolejne funkcje :slightly_smiling_face:

Fenomen3piorunów

zrob wersje platna i wystaw do ruskiego internetu

Pokaż więcej komentarzy (4)

Fanatyk

w Hydepark

33piorunów

Z serwer z kategorii jak działa to nie ruszać.

Lider12piorunów

@30ohm do czasu aż nie j⁎⁎⁎ie i wtedy jest "o boże o k⁎⁎wa co się dzieje jak to zastąpić" xD Na pewnym etapie dług technologiczny przestaje być szumnym hasłem stworzonym przez jakichś IT-guru, żeby sprzedawać managerom swoje pomysły, a zaczyna być realnym problemem.

Jeszcze przed 18tką dorabiałem sobie na czarno po firmach jako takie wsparcie"- po części, żeby jakiegoś nawet nędznego grosza zarobić, a po części, żeby się przyuczyć, bo już wtedy wiedziałem, że to mnie kręci i będę chciał w to iść. A wiadomo- zawsze to jakiś exp i ewentualne referencje na start. No więc w jednej z takich robót śmiałem się, że średnia wieku sprzętu w firmie ostro konkurowała ze średnią wieku pracowników (i ich mentalnością), a młodzi ludzie to tam nie pracowali. Było śmieszno, było przaśnie, można by powiedzieć nawet, że i rubasznie. Była i kasa, bez problemu, zawsze i wszędzie, "tylko powiedz to zaraz wszystko się ogarnie". Tak samo był czas na maintenance. Były do czasu, aż faktycznie trzeba je było, wtedy kasy akurat nie było, a zapierdol był tak wyjątkowy, że "teraz akurat nie możemy". No co ja mogę. Infra przeżyła je⁎⁎⁎cy się na potęgę switch i padające kolejno porty. Infra przeżyła padniętą kość RAM w serwerze. Infra przeżyła nawet jeden jebnięty dysk w serwerze (a RAIDu to tam nie było, bo "drogo" :D). Przeżyła nawet wiecznie nieruszane systemy, bez aktualizacji i z błędami w logach. Nie przeżyła tego jak jednej nocy była burza i jak j⁎⁎⁎ął piorun, to spaliło zasilacz i płytę w serwerze. I zaskakująco nic dalej. No bo przecież jakieś UPSy czy faktyczne PDU to był "tylko jakiś niepotrzebny wymysł tak jakby z gniazdka to nie działało". No to działało. Aż przestało xD Prawdziwy problem pojawił się wtedy, kiedy się okazało, że łaskawe wyciągniecie drobniaków na wspomniane komponenty z bólem serca (i d⁎⁎y!) nie wystarczy, to wszystko było tak stare, że nawet jakieś allegro i inne ebaye nie przewidywały takich używek więc musieli kupić cały serwer, ze wszystkim :grinning: Przez pół roku potem przy każdej okazji było jęczenie, że "teraz to specjalnie tak robio, że nie można wstawić jakiejś płyty z rubina, kiedyś by tak się dało hurrrr". Tak, do serwera. Z Rubina. Nawet nie żartuję. Aż w końcu po pół roku się stamtąd zwinąłem, bo czułem, że jakbym jeszcze kolejne pół roku tam przetrwał, to albo bym tam zapuścił korzenie, albo zdziadział tak jak oni i obudziłbym się w wieku 50 lat dalej tam jebiąc taką popelinę i narzekając na potrzebę zrobienia czegoś ekstra.

Fanatyk0piorunów

@30ohm Zakładam, że maszyna nie ma połączenia sieciowego? Powiedz proszę, że nie ma...

Pokaż więcej komentarzy (10)

Lider

w Programowanie

15piorunów

Pierwsze README napisane przez w 2005. W następnym commicie który dotyka tego pliku obok zmienił .dircache/index -> .git/index.

https://github.com/git/git/commit/e83c5163316f89bfbde7d9ab23ca2e25604af290#diff-2b7814d3fca2e99e56c51b6ff2aa313ea6e9da6424804240aa8ad891fdfe0900

GIT - the stupid content tracker

"git" can mean anything, depending on your mood.

- random three-letter combination that is pronounceable, and not
actually used by any common UNIX command. **The fact that it is a
mispronounciation of "get" may or may not be relevant.**
- stupid. contemptible and despicable. simple. Take your pick from the
dictionary of slang.
- "global information tracker": you're in a good mood, and it actually
works for you. Angels sing, and a light suddenly fills the room.
- "goddamn idiotic truckload of sh*t": when it breaks

This is a stupid (but extremely fast) directory content manager. It
doesn't do a whole lot, but what it does do is track directory
contents efficiently.

There are two object abstractions: the "object database", and the
"current directory cache".

The Object Database (SHA1_FILE_DIRECTORY)

The object database is literally just a content-addressable collection
of objects. All objects are named by their content, which is
approximated by the SHA1 hash of the object itself. Objects may refer
to other objects (by referencing their SHA1 hash), and so you can build
up a hierarchy of objects.

There are several kinds of objects in the content-addressable collection
database. They are all in deflated with zlib, and start off with a tag
of their type, and size information about the data. The SHA1 hash is
always the hash of the compressed object, not the original one.

In particular, the consistency of an object can always be tested
independently of the contents or the type of the object: all objects can
be validated by verifying that (a) their hashes match the content of the
file and (b) the object successfully inflates to a stream of bytes that
forms a sequence of + + <ascii decimal
size> + <byte\\0> + .

BLOB: A "blob" object is nothing but a binary blob of data, and doesn't
refer to anything else. There is no signature or any other verification
of the data, so while the object is consistent (it is indexed by its
sha1 hash, so the data itself is certainly correct), it has absolutely
no other attributes. No name associations, no permissions. It is
purely a blob of data (ie normally "file contents").

TREE: The next hierarchical object type is the "tree" object. A tree
object is a list of permission/name/blob data, sorted by name. In other
words the tree object is uniquely determined by the set contents, and so
two separate but identical trees will always share the exact same
object.

Again, a "tree" object is just a pure data abstraction: it has no
history, no signatures, no verification of validity, except that the
contents are again protected by the hash itself. So you can trust the
contents of a tree, the same way you can trust the contents of a blob,
but you don't know where those contents came from.

Side note on trees: since a "tree" object is a sorted list of
"filename+content", you can create a diff between two trees without
actually having to unpack two trees. Just ignore all common parts, and
your diff will look right. In other words, you can effectively (and
efficiently) tell the difference between any two random trees by O(n)
where "n" is the size of the difference, rather than the size of the
tree.

Side note 2 on trees: since the name of a "blob" depends entirely and
exclusively on its contents (ie there are no names or permissions
involved), you can see trivial renames or permission changes by noticing
that the blob stayed the same. However, renames with data changes need
a smarter "diff" implementation.

CHANGESET: The "changeset" object is an object that introduces the
notion of history into the picture. In contrast to the other objects,
it doesn't just describe the physical state of a tree, it describes how
we got there, and why.

A "changeset" is defined by the tree-object that it results in, the
parent changesets (zero, one or more) that led up to that point, and a
comment on what happened. Again, a changeset is not trusted per se:
the contents are well-defined and "safe" due to the cryptographically
strong signatures at all levels, but there is no reason to believe that
the tree is "good" or that the merge information makes sense. The
parents do not have to actually have any relationship with the result,
for example.

Note on changesets: unlike real SCM's, changesets do not contain rename
information or file mode chane information. All of that is implicit in
the trees involved (the result tree, and the result trees of the
parents), and describing that makes no sense in this idiotic file
manager.

TRUST: The notion of "trust" is really outside the scope of "git", but
it's worth noting a few things. First off, since everything is hashed
with SHA1, you can trust that an object is intact and has not been
messed with by external sources. So the name of an object uniquely
identifies a known state - just not a state that you may want to trust.

Furthermore, since the SHA1 signature of a changeset refers to the
SHA1 signatures of the tree it is associated with and the signatures
of the parent, a single named changeset specifies uniquely a whole
set of history, with full contents. You can't later fake any step of
the way once you have the name of a changeset.

So to introduce some real trust in the system, the only thing you need
to do is to digitally sign just one special note, which includes the
name of a top-level changeset. Your digital signature shows others that
you trust that changeset, and the immutability of the history of
changesets tells others that they can trust the whole history.

In other words, you can easily validate a whole archive by just sending
out a single email that tells the people the name (SHA1 hash) of the top
changeset, and digitally sign that email using something like GPG/PGP.

In particular, you can also have a separate archive of "trust points" or
tags, which document your (and other peoples) trust. You may, of
course, archive these "certificates of trust" using "git" itself, but
it's not something "git" does for you.

Another way of saying the same thing: "git" itself only handles content
integrity, the trust has to come from outside.

Current Directory Cache (".dircache/index")

The "current directory cache" is a simple binary file, which contains an
efficient representation of a virtual directory content at some random
time. It does so by a simple array that associates a set of names,
dates, permissions and content (aka "blob") objects together. The cache
is always kept ordered by name, and names are unique at any point in
time, but the cache has no long-term meaning, and can be partially
updated at any time.

In particular, the "current directory cache" certainly does not need to
be consistent with the current directory contents, but it has two very
important attributes:

(a) it can re-generate the full state it caches (not just the directory
structure: through the "blob" object it can regenerate the data too)

As a special case, there is a clear and unambiguous one-way mapping
from a current directory cache to a "tree object", which can be
efficiently created from just the current directory cache without
actually looking at any other data. So a directory cache at any
one time uniquely specifies one and only one "tree" object (but
has additional data to make it easy to match up that tree object
with what has happened in the directory)


and

(b) it has efficient methods for finding inconsistencies between that
cached state ("tree object waiting to be instantiated") and the
current state.

Those are the two ONLY things that the directory cache does. It's a
cache, and the normal operation is to re-generate it completely from a
known tree object, or update/compare it with a live tree that is being
developed. If you blow the directory cache away entirely, you haven't
lost any information as long as you have the name of the tree that it
described.

(But directory caches can also have real information in them: in
particular, they can have the representation of an intermediate tree
that has not yet been instantiated. So they do have meaning and usage
outside of caching - in one sense you can think of the current directory
cache as being the "work in progress" towards a tree commit).

Osobistość

w IT

18piorunów

Miesiąc temu narzekałem, że muszę ciągle aktualizować swoje aplikacje bo cały czas jakieś krytyczne podatności znajdują w next.js i innych bibliotekach a teraz trafiłem na Twitterze na taki obrazek xD. Eh pora zautomatyzować za pomocą AI żeby mi samo bumpowało wersje paczek bo mi się już nie chce tego robić ręcznie i sprawdzać czy działa.

Kosmonauta3piorunów

@Catharsis nie zdążę jednej wersji podbić, a już jest następna podatność. Innymi słowy, idź pan w c⁎⁎j z tym...

Pokaż więcej komentarzy (11)

Inspirator

w Hydepark

7piorunów

Otwieram 50 kart z pojedynczymi wpisami na Twitterze. Przeglądarka zjada kilkanaście GB RAM-u. Wiecie, ile w tym jest realnej treści (tekst + obrazki)? Jakieś 10 MB. Reszta — ponad 99% — to 50 kopii tej samej maszynerii, ładowanej od zera w każdej karcie.

Winne jest jedno ciche założenie, które wszyscy traktują jak prawo natury: „jedna karta = jedna osobna, w pełni załadowana strona". A wcale nie musi tak być.

Opisałem pomysł, jak to skasować, nie zmieniając niczego, co widzisz w przeglądarce — plus czemu to nie jest ani nowe, ani ryzykowne (bo ten wzorzec siedzi już w History API), i co z tego mają same serwisy.

https://claude.ai/public/artifacts/6bed38d9-9ca1-474c-a3dc-5403c9204085

Da się przełamać ten paradygmat, czy gadam głupoty?

Osobistość0piorunów

Każda karta jest sandboxowana i ma to swój powód dla bezpieczeństwa i innych takich. Plus nie wiem skąd te liczby bo odpaliłem teraz z ciekawości 47 kart Twittera u siebie i cały mój system operacyjny zużywa jedynie 14,5 GiB z czego Chrome jakieś ~11 GiB a mam w nim otwarte jeszcze masę innych kart.

Osobistość0piorunów

@fewtoast Mi się bardzo podoba ten pomysł i na pierwszy rzut oka ma sporo sensu.
W dłuższej perspektywie nigdy nie mam otwartych wielu kart przeglądarki, ale czasami jak przeglądam jakiś sklep to otworzę z 20 kart, aby porównać produkty i faktycznie bez sensu ładować wszystko od zera, skoro różnią się paroma komponentami i danymi. Tylko to wszystko musiałby ogarniać przeglądarka, nie? Takie SPA tylko o poziom wyżej, brzmi fajnie.

Ale tylko sprecyzuję. Przeglądarka wciąż pytałaby o całą stronę, tylko po odpytaniu i sprawdzeniu, nie dublowałaby rzeczy w ram, tak?
Czyli np. odpalam na karcie hejto.pl tworzy się jakiś kontener "hejto.pl" i on ma np.
aaa.js, bbb.png, ccc.js
Odpalam drugą kartę hejto.pl, leci request po całą stronę, ale przeglądarka sprawdza, że aaa.js, bbb.png, ccc.js jest już załadowany w ramie i jest w obrębie tego samego kontenera (hejto.pl), więc nie dubluję tego w ram, tylko reużywa tego, tak?

Pokaż więcej komentarzy (31)

GURU

w Hydepark

49piorunów

Powiedz że twój system jest podatny na SQL Injection nie mówiąc że jest podatny na SQL Injection xD

Fenomen10piorunów

Ja to tylko tu zostawię... (Ja nie wiedziałem 🙃

SQL injection (SQLi) to technika cyberataku, w której haker umieszcza złośliwy kod SQL w polach formularza lub zapytaniach aplikacji. Umożliwia to ominięcie zabezpieczeń logowania, kradzież, modyfikację lub usunięcie danych, a w skrajnych przypadkach – przejęcie kontroli nad serwerem.
Jak to działa w praktyce?
Podatność: Wiele stron (np. logowanie lub wyszukiwarki) pobiera dane od użytkownika, a następnie dynamicznie dopisuje je do bazy danych.
Atak: Zamiast wpisać zwykły login, atakujący wstrzykuje komendy SQL (np. ' OR 1=1 --), które zmieniają logikę zapytania w bazie.
Skutek: Baza danych traktuje złośliwy wpis jako część kodu, wykonuje go i zwraca nieuprawnione informacje.

GURU2piorunów

@Arkil Tak, a ten komunikat tutaj to mniej więcej powiedzienie: "Nasz system jest na to podatny, YOLO" xD

Pokaż więcej komentarzy (6)

Tytan

w Hydepark

12piorunów

Dobra.
Narazie to tyle, stworzyłem ostatnią opcję, która jest mi potrzebna do systemu informowania o życiu.

Anioły pokazują już ilość żyć.
Po wejściu w jego obszar, tworzą się złote motyle.
W dokładnie ilości żyć gracza, krążą powoli wokół niego.
Po wyjściu motyle znikają.
Nic nie dzieje się nagle, powolne pojawianie, powolne znikanie.

Dlaczego złote?
Ponieważ ten kolor symbolizuje spokój, bezpieczeństwo.
Tym kolorem są oznaczane Anioły, które służą jak punkty odrodzeń i teleportacji.
Tak samo niegroźne rośliny w tle.

Dodatkowo na screenie widać, dzialanie.
W menu mamy aktualną ilość żyć, oraz aktualną ilość motyli (oznaczone zieloną kropką).
Tak więc widoczność żyć jest w 3 miejscach.

Na dziś to tyle, zrobiłem co chciałem, poszło to nawet sprawnie, bez udziwnień i wygląda to całkiem ładnie.
Wszak nie zrezygnowałem z tego pomysłu jak z klasycznych pasków życia.
https://youtu.be/6Qr74pYLXeY

- tag do obserwowania bądź czarnolistowania

Tytan

w Hydepark

22piorunów

I oto jest.
Finalny wygląd otrzymania obrażeń przez bohaterkę.

Po otrzymaniu obrażeń, z gracza wylatuje cząstka duszy, która szuka najbliższej latarni.
Po osiągnięciu celu zamienia się w motyla, który krąży wokół fioletowego światła.

Dusze nie będą możliwe do odzyskania, od momentu przemiany będą pełniły funkcję dekoracyjną na poziomach.
Będzie można przypomnieć sobie "O tutaj umarłem 2 razy" bo krążą tutaj 2 motyle.
Dodatkowo po wyjściu z poziomu i powrocie, motyle wciąż tam będą, zostaną przy swojej latarni na zawsze.

Ale skąd gracz będzie wiedział ile żyć mu pozostało?
W końcu sama utrata duszy nie mówi wprost "Straciłeś życie, zostało Ci ich 3"
Nie ma tam informacji, nie ma tam nic poza samą duszą.

Ale dowiedzieć tego można się na 3 sposoby.
Wejście na poziom.
Po wejściu na poziom, na środku ekranu, w górnej części wyświetlają się informacje o poziomie
Jego nazwa, opis oraz właśnie ilość pozostałych dusz + zebrany ember
Tak więc po wejściu widzimy ile ich posiadamy.

Dodatkowo na poziomach, gdzie spędzimy więcej czasu i możemy zapomnieć ile ich mamy, bo zebraliśmy / straciliśmy życie.
Umieszczone są złote Anioły, pełnią one funkcję respawn point, teleportacyjną oraz od teraz właśnie i informacyjną.
Wokół anioła pojawią się złote dusze, symbolizować będą to ile gracz ma żyć.
Ich ilość będzie odpowiadała dokładnie ilości żyć.

Oraz najbardziej oczywista wersja, w samym menu.
Gdzie gracz może podejrzeć mapę, wybrane umiejętności i inne statystyki, widnieje także wpisana czytelnie ilość żyć.


Dusze będą leciały do najbliższej latarni, nawet jeżeli ta znajduje się poza ekranem.
Nie posiadają kolizji, więc nie będą przeszkadzały podczas walki.
Motyle poruszają się losowo, dodając atmosfery wokół, emanują własnym światłem, więc oświetlają także poziom.
Ich ilość na latarnię została ograniczona do 5
Aby nie tworzyć zbędnego spawmu i tłoku świateł, kazdy kolejny motyl jest po prostu usuwany z gry aby zachować odpowiedni klimat.

Teraz pozostało mi tylko stworzyć coś ciekawego, co określi śmierć.
Skoro obrażenia pozostają w grze, to i także śmierć powinna.


- tag do obserwowania bądź czarnolistowania

https://youtu.be/fQDHWqgE_UE

Kompan0piorunów

Bardzo fajny pomysł, na konsoli typu Trimui Brick będzie można w nią zagrać ?

Tytan0piorunów

@KC5emtz Z tego co widzę jest tam Linux.
Już w poprzednich wersjach gry, ktoś pisał, że na Linuxie odpalił ją bez problemu

Nie wiem jednak jak ta mz mapowaniem klawiszy, bo kontroler dodam do gry
Pytanie tylko czy sama konsola będzie miała możliwość interakcji, żeby zmienić bindy na swoje

Autorytet1piorunów

@Gagger jakby dało rade to bedzie bomba! Trimui smart pro mam i bym grał dniami i nocami!

Kompan0piorunów

@Gagger konsolka ma te system do emulacji starych konsol i w każdej grze jest opcja zmiany lub ustawienia przycisków

Tytan0piorunów

@KC5emtz Jeżeli uda się wejść w ustawienia to nie bedzie problemu

Na Linuxie gra śmiga, nie było problemów, o ile pamiętam i się nie mylę to był to proton

Pokaż więcej komentarzy (7)

Gruba ryba

w Hydepark

13piorunów

Now Fable 5 is my best Friend!

Kosmonauta1piorunów

Rzeczywiście fable robi aż tak dobrą robote?

Gruba ryba0piorunów

@m_h Testuję :grinning: Jak postawi mi działający system to Ci powiem :grinning:

Gruba ryba0piorunów

@Legendary_Weaponsmith @m_h Na ten moment różnica jest taka że zastanawiam się czy nie wykupić następnyum razem pełnego pakietu za 200$ bo jednak jest jeszcze wygodniejszy. Między modelami jest taka głóœna różnica. Jeśli model wykonuje jakieś duże zadanie i ma wątki poboczne to śledzę je i rozwijam jakiś kierunek rozwoju aplikacji w kolejnych krokach. Fable mocniej się skupia i lepiej dokańcza wątki poboczne, a mimo to dobrze skupia się też na wątku głównym. Mogę to samo zrobić z opusem, ale w zasadzie wymaga to mniej pracy po mojej stronie. Fable to żarłok, można go porównać do opusa na planie zwykłym. Niby można lecieć na sonnecie za 20$ ale jednak wygodniej opusem, bo więcej i szybciej zrobi. Czy to jest jakiś przełom? Raczej nie, a czy widać różnicę? Tak różnica jest zauważalna ale nie na tyle żebym od razu wskakiwał na wyższy pakiet, aczkolwiek na tyle dobra że zastanawia mnie to. Aczkolwiek kiedy przejdę we wrześniu na samozatrudnienie i będzie to moje narzędzie do codziennej pracy - wtedy bez obaw wskoczę na wyższą wersję, zwłąszcza biorąc pod uwagę że czasami opus nie mieści mi się w limitach...

Pokaż więcej komentarzy (5)

Tytan

w Hydepark

20piorunów

Cóż takiego może robić samotny typ o 1szej w nocy?

Ano dalej wymyślać jedną głupią animację do gry, żeby była jak najbardziej klimatyczna i pasująca do gry.
Żeby Mireczki z Hejto mogłby potem sobie zagrać i zachwycać się każdym jej aspektem.

Ponad tydzień myślenia nad zwykłym informowaniem gracza o utracie życia.
Przeszedłem przez setki pasków życia, potem w ogóle z niego zrezygnowałem.
Gracz miał tracić część duszy, miała po prostu z niego wypadać i rozpadać się na części o ziemię
Następnie tło na poziomie miało się rozrywać i porywać ducha gracza, zostawiając za sobą zamknięte ale widoczne rozdarcie.

A na co teraz wpadłem?
Chyba na tą perełkę, która zostanie w grze TYM pomysłem.
Gracz podczas obrażeń będzie tworzył część swojej duszy, małą fioletową.
Dusza ta powędruje samodzielnie do najbliższej latarni na poziomie, gdy tylko do niej dotrze, zamieni się w świetlistego motyla, który będzie krążył wokół wspomnianej latarni.

Co mi się podoba w tym pomyśle?
To właśnie te krążenie, gracz idzie na poziom dalej, następnie wraca, a motyl tam krąży, wciąż tam jest, będzie zapisany do pamięci i będzie widoczny aż do ukończenia gry, na 365 poziomach gracz będzie mógł stworzyć dziesiątki motyli krążących wokół latarni.
Wiedzieć gdzie umarł najwięcej razy, bo będzie tam kilka motyli.

Na filmie widać, jak gra sprawdza gdzie jest najbliższa latarnia a następnie przesuwa duszę w jej stronę.
Zostało mi tylko stworzyć teksturę motyla, aby ten mógł latać wokół niej już na wieczność.

https://youtu.be/QPR1IhdAtyY

- tag dla wpisów o mojej grze

GURU1piorunów

Fajne tylko skąd gracz będzie wiedział ile życia mu zostało?

Tytan0piorunów

@Kronos

Wchodzisz na poziom

Jest tam nazwa

Opis

Ilosśxć żyć + zebrana waluta

Podchodzisz do Anioła

Respią sie kule wokół niego

Ich ilość = ilość żyć gracza

W menu

Jest tam zakładka statystyk i jest tam opisane juz po prostu

Życia 2/3

Autorytet2piorunów

Nie śpię bo myślę nad animacją umierania ludzika w grze! I za to Cię szanujemy! Dawaj mnie tę grę! xD

Zazdroszczę kreatywności.

Tytan1piorunów

@Fen Za chwilę wrzucę wynik tego pomysłu bo już zaprogramowałem całość i stworzyłem grafiki

Pokaż więcej komentarzy (8)

Tytan

w Hydepark

13piorunów

Dejta mie sznur i wytrzymałom belke (╯°□°)╯︵ ┻━┻

Bo nie szczymia.

Człowiek ponad tydzień siedzi i myśli nad tym jaki pasek życia będzie klimatyczny i będzie wqyglądał dobrze w grze.
Po tygodniu, prawie tysiącu projektów, setkach wizualizacji w grze doszedł do wniosku, że paska życia nie będzie.
Kilkadziesiąt godzin kombinowania.

W końcu wymyśliłem, że informowanie odbędzie się prosto w grze, nie na UI, bo wszystkie wyglądają źle, jak naklejki na ekranie.
Tak więc wpadł pomysł, że gracz będzie coś tracił, część duszy.
Animacja wypadania, roztrzaskania się o ziemię i zniknięcie, prosta animacja z przyjemnym widokiem.

I okazuje się, że nie ma ciekawej animacji.
Tak więc wpadł kolejny pomysł.
Który oczywiście wpada do puli "zaprojektować > sprawdzić > przetestować > zdecydować"

Co zamiast wypadającej duszy?
Rozdarta mapa, kopia gracza zostaje wciągnięta i wyrwa się zamyka, zostawiając ślad na mapie, na zawsze.
Gra oznaczy miejsca śmierci, zostawiając ostatnią klatkę animacji na tle poziomów, gracz będzie mógł widzieć miejsce swojej śmierci przez całą grę.

Jak mi wpadnie do tego głupiego łba coś jeszcze, to nie szczymia (╯ ͠° ͟ʖ ͡°)╯┻━┻

Wirtuoz1piorunów

@Gagger Dasz zagrać w alfę? Tylko żebym dożył tego dnia

Tytan0piorunów

Fajne, dobre, oryginalne. Grafika ładna, dobrze się kojaży.

Pokaż więcej komentarzy (10)

Tytan

w Hydepark

11piorunów

Z jednego dylemtu w drugi ( ͡° ʖ̯ ͡°)

Jak już ogarnąłem co ma być zamiast paska życia i jak to wyglądać, pojawił się kolejny problem.
Jakoś tak średnio mi ten dymek pasuje, a stworzyłem już 3
Oby nie skończyło się kolejnym tygodniem nad wymyśleniem prostgo dymu

https://youtu.be/emuK6uMYn1Y

- Tag do obserwowania / czarnolistowania

GURU0piorunów

Drugi najlepszy.

Osobistość0piorunów

@Gagger drugi spoko, mysle, że jak będzie to wylatywać bardziej z gracza a nie gdzieś, obok, plus jak będzie animacja "skaleczenia" gracza jakieś miganie postaci, zbladnięcie to wtedy będzie też inny odbiór tego dymka
ale ogólnie fajne to

Tytan1piorunów

@SaucissonBorderline Ogólnie tutaj był zrobiony klawisz do respu całej logiki tylko.
Ogólnie jak wpadasz w pułapkę/otrzymujesz obrażenia, to masz całą otoczkę

Postać ma jęknięcie z bólu, odskakuje w losową stronę.
Tutaj sprawdzałem jak wyglądają animacje.

Ale z jakiegoś powodu (znowu, jak wcześniej z paskiem życia) coś mi nie pasuje, nie wygląda to ładnie i nie pasuje mi to do całości.
Będę musiał poszukać lepszeg rozwiązania, albo kolorów do tych animacji

Osobistość0piorunów

@Gagger czaje czaje, że to próba ale może właśnie jak będziesz miał to w całej otoczce to siądzie 😉

Tytan1piorunów

@SaucissonBorderline Nie, wiem co próbujesz zrobić, wszystkie efekty razem dadzą inny wynik.
Ale widzę już po samej animacji, że nie zmieni się nic, nawet jakbym stanął na głowie.

To po prostu nie ta animacja, nie ten styl, nie to.
Wcześniej męczyłem się jakoś ponad tydzień, żeby spośród około 600-700 typów pasków życia wybrać ten jeden, robiłem setki wizualizacji, dziesiątki projektów w grze i nic, aż właśnie wpadl mi po tygodniu ten pomysł co teraz jest.

Tutaj będzie identycznie, będę kombinował, myślał, zmieniał aż nie znajdę tego co szukam.
Najgorsze jest tylko to, że nie wiem czego szukam, ale wiem, że będzie to super ( ͡° ͜ʖ ͡°)

Osobistość1piorunów

@Gagger pewnie po przekopaniu się przez kolejne opcje w końcu wypracujesz ten efekt którego szukasz :)

Tytan1piorunów

@SaucissonBorderline Wiem, to akurat jest pewne.
Tylko znów muszę przedrzeć się przez masę pomysłów, żeby dostać olśnienia i wymyślić wlaśnie ten najlepszy sposób.

Osobistość0piorunów

@Gagger pamiętaj o odejsciu,
pomaga zajęcie się innym zadaniem by za chwile wrócić do tego problemu, wtedy widać więcej 😉

Tytan1piorunów

@SaucissonBorderline Już trzeci rok bawię w gamedev, mam jeszcze inny projekt gry, który robię jak ten pierwszy złapał blokadę.
Pomaga mi także rozmowa z znajomymi o tym co i jak mogłoby być.

Pokaż więcej komentarzy (15)

Twórca

w Programowanie

19piorunów

W końcu, po około pół roku wytężonej pracy (i odpoczynku), mogę przedstawić nową wersję Czkawki/Krokieta/Cedinii 12.0 do wyszukiwania duplikatów, podobnych obrazów, wideo i wielu innych dziwnych rzeczy.

Ponieważ mój poprzedni post dotyczący problemów z dystrybucją aplikacji na Androida do szerszego grona odbiorców spotkał się z taktownym milczeniem, zostałem zmuszony do wydania aplikacji bez publikacji w zewnętrznych sklepach.

Zapewne rzuciła się wam w oczy nowa, dość bezsensowna (choć zapewne swojsko brzmiąca) nazwa - Cedinia. Jest to nowa aplikacja na Androida, instalowana z pliku APK (ponieważ nie znalazłem innej sensownej metody dystrybucji). Funkcjonalnie oferuje niemal wszystkie narzędzia dostępne w Krokiet, ale jej interfejs został dostosowany do ekranów dotykowych (testowana była jednak tylko na jednym moim telefonie, więc na innych urządzeniach mogą wystąpić problemy z UI).

Co do wersji gtk, to porzuciłem jej rozwój, bo przez długi czas sprawiała problemy - od braku uruchamiania się u części użytkowników, przez crashe przy wklejaniu, po problemy ze skalowaniem interfejsu. Dzięki temu na Windowsie pozostanie dystrybowana jedna binarka exe, zamiast paczki zip z wieloma zależnymi dllkami wymaganymi przez GTK.

Jak w każdej wersji, pojawiło się też kilka nowości tj. porównywarka obrazów, menu kontekstowe, szybka (choć mniej dokładna) weryfikacja uszkodzonych plików z użyciem ffprobe, nowe okno zaznaczania elementów, osobne przyciski do trwałego usuwania oraz przenoszenia do kosza czy także redukcja szumów w module optymalizacji wideo (opartym o ffmpeg).

Artykuł na medium, gdyby ktoś szerzej chciał o nowej wersji przeczytać - https://medium.com/@qarmin/krokiet-czkawka-12-0-c5dad2116793

Repozytorium — https://github.com/qarmin/czkawka

Pliki do pobrania wraz z listą zmian — https://github.com/qarmin/czkawka/releases

Licencja — MIT/GPL w zależności od programu (czyli w skrócie za darmo)



Kosmonauta0piorunów

Jakby kogoś ciekawiło:

LLM says:

W tym kontekście Krokiet/Czkawka to nie jedzenie ani odruch, tylko program do sprzątania plików.
Chodzi o aplikację autora qarmin, która służy m.in. do znajdowania:
duplikatów plików,
pustych folderów,
podobnych obrazów,
podobnych filmów / muzyki,
uszkodzonych plików,
plików tymczasowych i innych śmieci na dysku.

Brzmi ciekawie, może się kiedyś przydać. Chociaż zazwyczaj (Ubuntu) robiłem to jakimś skryptem w bashu.

Pokaż więcej komentarzy (3)