Programování

Extrakce informací o systému Linux a hardwaru pomocí Pythonu

Extrakce informací o systému Linux a hardwaru pomocí Pythonu

Hledání informací o hardwaru a systému v systému Linux je užitečný a zajímavý úkol. Můžeme extrahovat podrobnosti o operačním systému, podrobnosti o uživateli, podrobnosti o paměti, podrobnosti o CPU a mnohem více pomocí jednoduchých kódů pythonu v systému Linux. Ačkoli můžeme provádět mnoho z těchto věcí pomocí terminálového a bash skriptování, python je mnohem zajímavější.

Jako milovník pythonu chceme, aby každý úkol byl prováděn pomocí tohoto jazyka, takže extrahování systémových a hardwarových informací pomocí pythonu je skvělý úkol. Můžeme se současně naučit jak Linux, tak python. Tento článek bude poměrně dlouhý, takže si udělejte čas a přečtěte si celý článek a pro lepší pochopení spusťte každý kód.

Každý z kódů můžete zkopírovat do IDE pythonu a spustit jej. Pokud nemáte IDE pythonu nebo chcete porovnávat IDE, přečtěte si naši příručku o top 10 IDE pro Linux. Mimochodem, používám VS Code jako IDE pro psaní kódu. Je to open-source a snadno se používá. Pokud chcete použít Visual Studio Code, přečtěte si našeho průvodce instalací VS kódu v Linuxu.

Extrahování systémových informací pomocí Pythonu

V tomto článku vyvineme program, který extrahuje následující podrobnosti:

K získání těchto podrobností použijeme moduly přítomné ve standardní knihovně Pythonu. Některé z modulů, které budeme používat, jsou OS, platforma atd. Také jsem vložil zdrojový kód do Githubu; ukázku programu si můžete stáhnout stažením z mého úložiště Github a jeho spuštěním.

Chcete-li postupovat podle tohoto tutoriálu, doporučujeme mít ve vašem systému nainstalovanou nejnovější verzi pythonu. Můžete postupovat podle našeho průvodce instalací pythonu v systému Linux.

Požadavky

Mnoho knihoven, které používáme v tomto kurzu, je přítomno ve standardní knihovně pythonu. Musíme pouze nainstalovat balíček psutil. Můžete to zkontrolovat importem. Pokud nemáte psutil nainstalovaný, můžete jej snadno nainstalovat pomocí pip nástroje. Chcete-li nainstalovat pip do našeho systému, musíme v terminálu spustit následující příkaz.

pip nainstalujte psutil

Získání základních podrobností systému

Nyní, když jste nainstalovali psutil, se podívejme, jak jej použít ke shromažďování OS pomocí pythonu. Používali jsme plošina modul přítomný ve standardní knihovně pythonu pro shromažďování těchto základních systémových informací. Musíte zkopírovat následující kód do svého oblíbeného IDE pythonu a spustit jej.

# import požadovaných modulů platforma pro import # tisk architektury tisku OS ("[+] Architecture:", platforma.architecture () [0]) # Zobrazení tisku stroje („[+] Machine:“, platforma.machine ()) # tisk informací o vydání operačního systému print ("[+] Release operačního systému:", platforma.release ()) # vytiskne aktuálně používaný název systému tisk ("[+] Název systému:", platforma.system ()) # Tento řádek vytiskne verzi tisku vašeho operačního systému (platforma "[+] Verze operačního systému:".version ()) # Tím se vytiskne uzel nebo název hostitele tisku operačního systému ("[+] Uzel:" + platforma.node ()) # Toto vytiskne systémovou platformu print ("[+] Platform:", platforma.platform ()) # Toto vytiskne tisk informací o procesoru ("[+] Processor:", platforma.procesor())

Ve výše uvedeném kódu jsme nejprve importovali modul platformy přítomný ve standardní knihovně pythonu. Po importu modulu používáme funkce modulu platformy k získání požadovaných informací. Při spuštění kódu na mém zařízení jsem dostal následující výstup.

základní informace o systému pomocí pythonu

Jak vidíme na výstupu, program zobrazuje mnoho důležitých podrobností o operačním systému, jako je architektura systému, platforma a mnoho dalšího.

Doba provozu systému

Můžeme také získat čas spuštění systému a dobu provozu systému v pythonu. Musíme použít psutil knihovna, kterou jsme nainstalovali dříve. Můžeme získat provozuschopnost systému čtením souboru provozuschopnosti v adresáři proc v systému Linux.

Zkopírujte následující kód do svého oblíbeného IDE pythonu a spusťte jej.

z datetime import datetime import psutil # Použití knihovny psutil k získání doby zavádění systému boot_time = datetime.fromtimestamp (psutil.boot_time ()) print ("[+] Čas spuštění systému:", boot_time)

Tento kód vytiskne čas spuštění, což znamená čas, kdy byl systém spuštěn. Při spuštění programu na mém PC jsem dostal následující výstup.

doba zavádění systému pomocí pythonu

Můžeme také vidět dobu provozu systému, což je doba, po kterou je systém spuštěn. Musíme si přečíst soubor provozuschopnosti adresáře proc, jak je znázorněno v následujícím kódu.

# načtení času systému ze souboru uptime v adresáři proc s otevřeným ("/ proc / uptime", "r") jako f: uptime = f.číst().split ("") [0].strip () uptime = int (float (uptime)) uptime_hours = uptime // 3600 uptime_minutes = (uptime% 3600) // 60 print ("[+] Uptime systému:" + str (uptime_hours) + ":" + str ( uptime_minutes) + "hours")

Mám následující výstup na spuštění kódu.

doba provozu systému pomocí pythonu

Procesy

Můžeme také použít python k získání seznamu aktuálně spuštěných procesů, celkový počet procesů. Musíme spustit následující kód.

import os pids = [] pro podadresář v os.listdir ('/ proc'): pokud subdir.isdigit (): str.append (subdir) print ('Celkový počet procesů: 0').formát (len (pids)))

Při spuštění kódu jsem dostal výstup, jak je znázorněno na následujícím obrázku.

celkový počet procesů

uživatelské informace

Můžeme také získat seznam všech uživatelů přítomných v našem zařízení Linux pomocí knihovny pwd přítomné ve standardní knihovně pythonu. Chcete-li to provést, musíte zkopírovat následující kód do svého IDE pythonu a spustit jej.

importovat uživatele pwd = pwd.getpwall () pro uživatele v users: print (user.pw_name, uživatel.pw_shell)

Při spuštění výše uvedeného kódu získáte všechny uživatele přítomné ve vašem zařízení a jejich skořápky.

Informace o CPU

Shromáždili jsme nyní podrobnosti systému, abychom shromáždili nějaké informace o CPU používaném naším strojem. Můžeme shromažďovat informace o CPU z našeho stroje se systémem Linux dvěma způsoby. První a nejjednodušší způsob je použít psutil a druhým způsobem je čtení souboru / proc / cpuinfo.

Podívejme se, jak můžeme použít knihovnu psutil k získání informací o CPU. Musíte zkopírovat následující kód do svého oblíbeného IDE pythonu a spustit jej.

# import požadovaných balíků import psutil # Tento kód vytiskne počet přítomných jader CPU ("[+] Počet fyzických jader:", psutil.cpu_count (logical = False)) print ("[+] Počet celkových jader:", psutil.cpu_count (logický = True)) print ("\ n") # Toto vytiskne maximální, minimální a aktuální frekvenci CPU cpu_frequency = psutil.cpu_freq () print (f "[+] Maximální frekvence: cpu_frequency.max:.2f Mhz ") tisk (f" [+] minimální frekvence: cpu_frequency.min:.2f Mhz ") print (f" [+] Aktuální frekvence: cpu_frequency.proud:.2f Mhz ") print (" \ n ") # Tím se vytiskne využití CPU na jádro pro i, procento ve výčtu (psutil.cpu_percent (percpu = True, interval = 1)): print (f "[+] využití CPU jádra i: procento%") print (f "[+] celkové využití CPU: psutil.cpu_percent ()% ")

Podívejme se, co se děje ve výše uvedeném programu. V prvním řádku jsme importovali psutil modul, který pomůže shromáždit podrobnosti CPU. Ve druhém a třetím řádku použijeme cpu_count () funkce psutil modul spočítat počet jader CPU. Poté jsme pomocí funkce cpu_freq () získali maximální, minimální a aktuální frekvenci. Nakonec použijeme funkci cpu_percent fo psutil k vyhledání využití procesoru. Při spuštění kódu v mém stroji jsem dostal následující výstup.

Informace o CPU pomocí psutil

Jak vidíme na výstupu, program na terminálu vydal všechny podrobnosti CPU. Můžeme také získat název CPU čtením souboru / proc / cpuinfo pomocí pythonu. K tomu musíme spustit následující kód.

# čtení souboru cpuinfo pro tisk názvu # přítomného CPU s otevřeným ("/ proc / cpuinfo", "r") jako f: file_info = f.readlines () cpuinfo = [x.pás().split (":") [1] pro x v file_info, pokud "název modelu" v x] pro index, položka ve výčtu (cpuinfo): print ("[+] procesor" + str (index) + ":" + položka )

Můžeme také shromažďovat další informace o CPU pomocí souboru / proc / cpuinfo. Četl jsem pouze název modelu CPU, ale můžete soubor otevřít a zobrazit další informace obsažené v souboru a můžete je použít v programu. Tady je výstup.

Informace o CPU pomocí souboru cpuinfo

Shromáždíme nějaké informace o paměti pomocí pythonu.

Informace o paměti

Stejně jako informace o CPU můžeme také získat informace o paměti ze dvou míst. Jeden používá nástroj psutil a druhý čtením souboru proc / meminfo. Začneme tím, že začneme shromažďovat informace o paměti pomocí knihovny psutil. Zkopírujte následující kód do svého oblíbeného IDE pythonu a spusťte jej.

# import požadovaných modulů import psutil # zápis funkce pro převod bytů na GigaByte def bytes_to_GB (bajty): gb = bajty / (1024 * 1024 * 1024) gb = kulatý (gb, 2) návrat gb # použití funkce virtual_memory () vrátí n-tici virtual_memory = psutil.virtual_memory () # Toto vytiskne podrobnosti o primární paměti print ("[+] Total Memory present:", bytes_to_GB (virtual_memory.celkem), "Gb") print ("[+] Celková dostupná paměť:", bytes_to_GB (virtual_memory.k dispozici), "Gb") print ("[+] Celková využitá paměť:", bytes_to_GB (virtual_memory.použité), "Gb") print ("[+] Využité procento:", virtuální_paměť.procent, "%") print ("\ n") # Tím se vytisknou podrobnosti paměti swap, pokud jsou k dispozici swap = psutil.swap_memory () print (f "[+] Celková swapová paměť: bytes_to_GB (swap.celkem) ") print (f" [+] Výměna paměti zdarma: bytes_to_GB (swap.free) ") print (f" [+] Použitá swapová paměť: bytes_to_GB (swap.used) ") print (f" [+] Použité procento: swap.procent%")

Podívejme se, co se děje ve výše uvedeném kódu. V prvním řádku jsme importovali knihovnu psutil a poté použili její funkci virtual_memory (), která vrací n-tici s informacemi o virtuální paměti. Poté použijeme funkci swap_memory () k získání informací o odkládací paměti. Také jsme vytvořili název funkce bytes_to_GB (), který převede bajty na GigaBytes pro lepší čitelnost. Mám následující výstup.

informace o paměti pomocí psutil

Můžeme také použít soubor meminfo obsažený v adresáři proc systému Linux k načtení informací o paměti, jako je celková paměť, použitá paměť atd. Chcete-li to provést, spusťte následující kód.

# Shromažďování informací o paměti z tisku souboru meminfo ("\ nČtení souboru / proc / meminfo: \ n") s otevřeným ("/ proc / meminfo", "r") jako f: lines = f.readlines () print ("[+]" + řádky [0].strip ()) tisk ("[+]" + řádky [1].pás())

A tady je výstup:

informace o paměti pomocí souboru meminfo

Informace o disku

Dosud jsme viděli některé základní podrobnosti o systému, podrobnosti o CPU, podrobnosti o paměti. Nyní se podívejme na informace o disku přítomném v našem stroji. Abychom extrahovali informace o disku, použijeme k usnadnění našeho úkolu modul psutil a nemusíme znovu objevovat kolo. Podívejte se na níže uvedený kód, abyste viděli funkční příklad kódu. Můžete zkopírovat kód a spustit v IDE vašeho oblíbeného pythonu.

# import požadovaných modulů import psutil # přístup ke všem diskovým oddílům disk_partitions = psutil.disk_partitions () # zápis funkce pro převod bajtů na Giga bajty def bytes_to_GB (bajty): gb = bajty / (1024 * 1024 * 1024) gb = kulatý (gb, 2) návrat gb # zobrazení oddílu a informace o použití oddílu v disk_partitions: print ("[+] Partition Device:", partition.zařízení) print ("[+] File System:", oddíl.fstype) print ("[+] Mountpoint:", partition.mountpoint) disk_usage = psutil.disk_usage (oddíl.mountpoint) print ("[+] Celkové místo na disku:", bytes_to_GB (disk_usage.celkem), "GB") print ("[+] Volné místo na disku:", bytes_to_GB (disk_usage.zdarma), "GB") print ("[+] Využité místo na disku:", bytes_to_GB (disk_usage.použitý), „GB“) print („[+] Použité procento:“, disk_usage.%, "%") # získat statistiky čtení / zápisu od boot disk_rw = psutil.disk_io_counters () print (f "[+] Celkem přečteno od spuštění: bytes_to_GB (disk_rw.read_bytes) GB ") print (f" [+] Celkem Write sice boot: bytes_to_GB (disk_rw.write_bytes) GB ")

V kódu jsme nejprve importovali knihovnu psutil, která je nutná ke shromažďování informací o disku. Pak jsme použili jeho disk_partitions () funkce k získání seznamu dostupných diskových oddílů s jejich informacemi. K získání využití těchto oddílů používáme také funkci disk_usage (). Nakonec použijeme disk_io_counters () funkce pro získání celkového čtení / zápisu disku od spuštění.  Zde je příklad výstupu.

informace o disku pomocí pythonu

V závislosti na disku a diskových oddílech můžete získat další výstup.

Informace o síti

Můžeme také shromažďovat síťové informace o systému pomocí knihovny psutil. Chcete-li tak učinit, zkopírujte následující kód do svého IDE pythonu a spusťte jej.

# import požadovaných modulů import psutil # zápis funkce pro převod bajtů na gigabajty def bytes_to_GB (bajty): gb = bajty / (1024 * 1024 * 1024) gb = kulatý (gb, 2) návrat gb # shromáždění všech síťových rozhraní ( virtuální a fyzické) ze systému if_addrs = psutil.net_if_addrs () # tisk informací o každém síťovém rozhraní pro interface_name, interface_addresses v if_addrs.items (): for address in interface_addresses: print ("\ n") print (f "Interface:", interface_name) if str (address.rodina) == 'AddressFamily.AF_INET ': print ("[+] IP adresa:", adresa.adresa) print ("[+] Netmask:", adresa.maska ​​sítě) print ("[+] Broadcast IP:", adresa.broadcast) elif str (adresa.rodina) == 'AddressFamily.AF_PACKET ': print ("[+] MAC Address:", adresa.adresa) print ("[+] Netmask:", adresa.maska ​​sítě) print ("[+] Broadcast MAC:", adresa.broadcast) # získání statistik čtení / zápisu sítě od boot print ("\ n") net_io = psutil.net_io_counters () print ("[+] Celkový počet odeslaných bajtů:", bajty_to_GB (net_io.bytes_sent)) print ("[+] Celkový počet přijatých bajtů:", bytes_to_GB (net_io.bytes_recv))

Zde je ukázkový výstup z mého testovacího počítače.

síťové informace pomocí pythonu

Další informace o hardwaru

Můžeme také použít psutil knihovna získat další informace o hardwaru, například informace o baterii, rychlost otáčení ventilátorů, informace o teplotě různých zařízení, atd. Uvidíme, jak to dokážeme jeden po druhém.

Pokud používáte notebook, můžete použít psutil.sensor_battery () pro získání informací o baterii. Chcete-li tak učinit, zkopírujte a spusťte následující kód v IDE Pythonu.

import psutil baterie = psutil.sensors_battery () print ("[+] Procento baterie:", kulaté (baterie.procenta, 1), "%") print ("[+] Zbývající čas baterie:", kulatý (baterie.secsleft / 3600, 2), "hr") print ("[+] Napájení připojeno:", baterie.power_plugged)

Ve výše uvedeném kódu používáme sensor_battery () funkce pro získání informací o baterii, jako je procento baterie, zbývající čas, napájení připojeno nebo ne. Při spuštění kódu v mém stroji jsem dostal následující výstup.

informace o baterii pomocí pythonu

Můžeme také použít knihovnu psutil k získání otáček ventilátoru (otáček za minutu) pomocí funkce Sensors_fan (), když je ventilátor v provozu. Psutil lze také použít k získání teploty různých zařízení. Můžeme to udělat pomocí funkce sensors_temperatures () psutilu. Nechávám to udělat pro vaši praxi.

Závěrečný scénář

Nyní pojďme spojit všechny kódy s vytvořením konečného programu, abychom shromáždili všechny podrobnosti o systému a hardwaru, o kterých jsme diskutovali. Následující program můžete zkopírovat a spustit ve vašem python IDE.

# import požadovaných modulů platforma pro import z datetime import datetime import psutil import os # Nejprve vytiskneme základní informace o systému # pomocí modulu modulu print ("\ n \ t \ t \ t Základní systémové informace \ n") print (" [+] Architecture: ", platforma.architektura () [0]) tisk ("[+] Stroj:", platforma.stroj ()) tisk ("[+] Vydání operačního systému:", platforma.release ()) print ("[+] Název systému:", platforma.system ()) print ("[+] Verze operačního systému:", platforma.version ()) print ("[+] Uzel:" + platforma.node ()) print ("[+] Platforma:", platforma.platform ()) print ("[+] Procesor:", platforma.processor ()) # Použití knihovny psutil k získání času zavádění systému boot_time = datetime.fromtimestamp (psutil.boot_time ()) print ("[+] Čas spuštění systému:", boot_time) # načtení času systému ze souboru uptime v adresáři proc s otevřeným ("/ proc / uptime", "r") jako f: uptime = F.číst().split ("") [0].strip () uptime = int (float (uptime)) uptime_hours = uptime // 3600 uptime_minutes = (uptime% 3600) // 60 print ("[+] Uptime systému:" + str (uptime_hours) + ":" + str ( uptime_minutes) + "hours") # získání celkového počtu procesů aktuálně běžících pids = [] pro podadresář v os.listdir ('/ proc'): pokud subdir.isdigit (): str.append (subdir) print ('Celkový počet procesů: 0').formát (len (pids))) # Zobrazení tisku informací o CPU ("\ n \ t \ t \ t informací o CPU \ n") # Tento kód vytiskne počet přítomných jader CPU ("[+] počet fyzických jádra: ", psutil.cpu_count (logical = False)) print ("[+] Počet celkových jader:", psutil.cpu_count (logický = True)) print ("\ n") # Toto vytiskne maximální, minimální a aktuální frekvenci CPU cpu_frequency = psutil.cpu_freq () print (f "[+] Maximální frekvence: cpu_frequency.max:.2f Mhz ") tisk (f" [+] minimální frekvence: cpu_frequency.min:.2f Mhz ") print (f" [+] Aktuální frekvence: cpu_frequency.proud:.2f Mhz ") print (" \ n ") # Tím se vytiskne využití CPU na jádro pro i, procento ve výčtu (psutil.cpu_percent (percpu = True, interval = 1)): print (f "[+] využití CPU jádra i: procento%") print (f "[+] celkové využití CPU: psutil.cpu_percent ()% ") # čtení souboru cpuinfo pro tisk názvu # přítomného CPU s open (" / proc / cpuinfo "," r ") jako f: file_info = f.readlines () cpuinfo = [x.pás().split (":") [1] pro x v file_info, pokud "název modelu" v x] pro index, položka ve výčtu (cpuinfo): print ("[+] procesor" + str (index) + ":" + položka ) # psaní funkce pro převod bajtů na GigaByte def bytes_to_GB (bajty): gb = bajty / (1024 * 1024 * 1024) gb = kulatý (gb, 2) návrat gb # Pomocí funkce virtual_memory () vrátí n-tici virtual_memory = psutil.virtual_memory () print ("\ n \ t \ t \ t Informace o paměti \ n") # Tím se vytisknou podrobnosti o primární paměti print ("[+] Celková přítomná paměť:", bytes_to_GB (virtual_memory.celkem), "Gb") print ("[+] Celková dostupná paměť:", bytes_to_GB (virtual_memory.k dispozici), "Gb") print ("[+] Celková využitá paměť:", bytes_to_GB (virtual_memory.použité), "Gb") print ("[+] Využité procento:", virtuální_paměť.procent, "%") print ("\ n") # Tím se vytisknou podrobnosti paměti swap, pokud jsou k dispozici swap = psutil.swap_memory () print (f "[+] Celková swapová paměť: bytes_to_GB (swap.celkem) ") print (f" [+] Výměna paměti zdarma: bytes_to_GB (swap.free) ") print (f" [+] Použitá swapová paměť: bytes_to_GB (swap.used) ") print (f" [+] Použité procento: swap.procent% ") # Shromažďování informací o paměti ze souboru meminfo tisk (" \ nČtení souboru / proc / meminfo: \ n ") s otevřeným (" / proc / meminfo "," r ") jako f: lines = f.readlines () print ("[+]" + řádky [0].strip ()) tisk ("[+]" + řádky [1].strip ()) # přístup ke všem diskovým oddílům disk_partitions = psutil.disk_partitions () print ("\ n \ t \ t \ t Informace o disku \ n") # zobrazení informace o oddílu a využití oddílu v disk_partitions: print ("[+] Zařízení oddílu:", oddíl.zařízení) print ("[+] File System:", oddíl.fstype) print ("[+] Mountpoint:", partition.mountpoint) disk_usage = psutil.disk_usage (oddíl.mountpoint) print ("[+] Celkové místo na disku:", bytes_to_GB (disk_usage.celkem), "GB") print ("[+] Volné místo na disku:", bytes_to_GB (disk_usage.zdarma), "GB") print ("[+] Využité místo na disku:", bytes_to_GB (disk_usage.použitý), „GB“) print („[+] Použité procento:“, disk_usage.%, "%") # získat statistiky čtení / zápisu od boot disk_rw = psutil.disk_io_counters () print (f "[+] Celkem přečteno od spuštění: bytes_to_GB (disk_rw.read_bytes) GB ") print (f" [+] Celkem Write sice boot: bytes_to_GB (disk_rw.write_bytes) GB ") # shromažďování všech síťových rozhraní (virtuálních i fyzických) ze systému if_addrs = psutil.net_if_addrs () print ("\ n \ t \ t \ t Informace o síti \ n") # tisk informací o síťových rozhraních eah pro název_rozhraní, adresy_rozhraní v if_addrs.items (): for address in interface_addresses: print (f "Interface:", interface_name) if str (address.rodina) == 'AddressFamily.AF_INET ': print ("[+] IP adresa:", adresa.adresa) print ("[+] Netmask:", adresa.maska ​​sítě) print ("[+] Broadcast IP:", adresa.broadcast) elif str (adresa.rodina) == 'AddressFamily.AF_PACKET ': print ("[+] MAC Address:", adresa.adresa) print ("[+] Netmask:", adresa.maska ​​sítě) print ("[+] Broadcast MAC:", adresa.broadcast) # získání statistik čtení / zápisu sítě od boot net_io = psutil.net_io_counters () print ("[+] Celkový počet odeslaných bajtů:", bajty_to_GB (net_io.bytes_sent)) print ("[+] Celkový počet přijatých bajtů:", bytes_to_GB (net_io.bytes_recv)) # Získání informace o baterii baterie = psutil.sensor_battery () print ("\ n \ t \ t \ t Informace o baterii \ n") print ("[+] Procento baterie:", kulaté (baterie.procenta, 1), "%") print ("[+] Zbývající čas baterie:", kulatý (baterie.secsleft / 3600, 2), "hr") print ("[+] Napájení připojeno:", baterie.power_plugged)

Při spuštění tohoto kódu získáme následující výstup.

nástroj pro extrakci systémových a hardwarových informací pomocí pythonu

Pokud chcete program vylepšit nebo si chcete stáhnout kód, můžete tak učinit z mé stránky Github.

Závěr

Toto je úplný návod ke shromažďování zajímavých informací o systému a hardwaru pomocí pythonu. Pokud máte problém s kopírováním kódu, můžete také najít celý zdrojový kód v mém repozitáři Github. Můžete také vidět náš průvodce prací s operačním systémem v pythonu, kde najdete další zajímavé vylepšení pythonu.

Hry Vulkan pro uživatele Linuxu
Vulkan pro uživatele Linuxu
S každou novou generací grafických karet vidíme, že vývojáři her posouvají hranice grafické věrnosti a přibližují se k fotorealismu. Ale navzdory vešk...
Hry OpenTTD vs Simutrans
OpenTTD vs Simutrans
Vytvoření vlastní simulace dopravy může být zábavné, uvolňující a mimořádně lákavé. Proto se musíte ujistit, že vyzkoušíte co nejvíce her, abyste našl...
Hry Výukový program OpenTTD
Výukový program OpenTTD
OpenTTD je jednou z nejpopulárnějších her pro obchodní simulaci. V této hře musíte vytvořit skvělé dopravní podnikání. Začnete však na začátku kolem r...