Senin, 01 April 2019

Symbian, Android, dan iOS


Sistem operasi pada perangkat mobile sangat beragam mulai dari awal kehadirannya dengan sistem operasi Symbian yang pada masanya banyak digunakan oleh raksasa ponsel saat itu nokia hingga sistem operasi yang banyak digunakan saat ini yaitu android yang dibentuk oleh Google dan iOS yang dibentuk oleh Apple. Berdasarkan pada laman http://gs.statcounter.com/os-market-share/mobile/worldwide (diakses 1 April 2019 pukul 20.00), penggunaan sistem operasi terbanyak masih dipengan oleh android dengan market share sebesar 75% dan iOS pada 22%. Hal ini membuat sistem operasi android menjadi sistem operasi yang banyak digunakan diseluruh dunia saat ini. Banyaknya pengguna sistem operasi android dikarenakan banyaknya perusahaan perangkat mobile yang menggunakan sistem operasi ini seperti contohnya Samsung, Xiaomi, Huawei, dan masih banyak lagi. Sedangkan untuk sistem operasi iOS hanya digunakan pada produk-produk yang dikeluarkan langsung oleh Apple.

 

 Symbian

Symbian merupakan salah satu sistem operasi perangkat mobile yang banyak digunakan pada masanya. Perusahaan perangkat mobile yang terkenal menggunakan sistem operasi ini adalah Nokia. Pada masanya, sistem operasi ini masih digunakan untuk melakukan panggilan suara atau telfon, sms, mms, dan internet yang masih sangat terbatas dikarenakan fasilitas internet pada saat itu belum semurah dan semudah saat ini. Kebutuhan dari pengguna juga masih sebatas untuk melakukan komunikasi berupa suara dan teks yang masih berbasis kepada layanan operator selular (telfon dan sms), dan penggunaan pengiriman file baik berupa foto maupun audio via mms masih jarang digunakan.

Kelebihan yang dapat dirasakan pada sistem operasi ini dapat terlihat dari daya tahan baterai yang dapat bertahan hingga 7 hari bahkan lebih dengan kapasitas baterai yang tidak sebesar saat ini. Hal ini dapat dipengaruhi dari layanan yang ditawarkan tidak sebanyak sistem operasi saat ini yang selalu terkoneksi ke internet. Sistem operasi ini banyak dikenal pada hp yang menggunakan siste keypad dimana masih terdapat tombol fisik yang digunakan untuk mengetik dan mengopersikan perangkat ini. Perangkat ini juga masih ada yang menggunakan tampilan warna yang hitam putih yang dapat juga berpengaruh pada daya tahan baterai.

Untuk kekurangan dari sistem operasi ini, fitur-fitur yang ditawarkan masih sangat minim, hanya sebatas telfon, sms, dan mms, terkadang ada yang menyisipkan game-game sederhana yang tersemat didalamnya. Namun kekurangan ini tidak terasa pada masa itu, karena kebutuhan dan teknologi yang tersedia pada masa itu belum semaju saat ini. 
 
Android

Android merupakan sistem operasi perangkat mobile yang banyak digunakan saat ini, berbeda dengan Symbian, sistem operasi android lebih mengarah pada perangkat layar sentuh yang sudah meniggalkan tombol fisik yang digunakan untuk pengoprasian perangkat. Sistem operasi ini berbasis linux dimana merupakan sistem operasi yang open source. Sistem operasi ini digunakan oleh banyak perangkat mobile dari perusahaan yang berbeda-beda. Hal ini dikarenakan sifat dari android yang open source dan dapat dikostumisasi sesuai kebutuhan dari perangkat dan ciri khas dari perusahaan yang mengeluarkan perangkat mobile tersebut. Sistem operasi android dimulai dari versi android alpha yang merupakan versi awal hingga versi terbaru saat ini yaitu android P atau Pie. Bila diperhatikan, penamaan versi android ini diambil dari nama makanan yang dimulai dari versi android C atau Cupcake hingga android P atau Pie.
Kelebihan dari sistem operasi android yang saya rasakan adalah kemudahannya untuk kostumisasi dari sistem operasi ini, pengguna dapat melakukan tune up bahkan menggunakan kemampuan dari hardware melebihi dari limit yang diberikan oleh perusahaan yang mengeluarkan perangkat mobile secara default. Hal ini membuat pengguna bisa menyesuaikan performa yang dibutuhkan pada perangkatnya, baik seperti underclock yang dapat menghemat daya namun dengan performa yang rendah, atau bahkan overclock yang dapat meningkatkan performa namun daya yang dibutuhkan lebih besar. Selain itu, aplikasi pada sistem operasi android lebih beragam yang dapat diperoleh baik secara gratis maupun berbayar melalui play store yang dimiliki langsung oleh google.

Pengguna juga dapat memilih kostumisasi bawaan dari perusahaan penyedia perangkat mobile karena setiap perusahaan memiliki kostumisasi dari segi tampilan dan performa yang berbeda-beda bahkan menjadi ciri khas dari perangkat perusahaan tersebut meskipun masih sama-sama menggunakan android. Seperti perusahaan Xiaomi yang menggunakan sistem operasi yang dinamakan MIUI, Oppo dengan ColorOS, Asus dengan ZenUI dan banyak lagi kostumisasi yang dibuat oleh perusahaan perangkat mobile. Selain menggunakan kostumisasi default, pengguna juga dapat menggunakan kustomisasi atau yang bisa disebut dengan rom yang disediakan oleh pihak ketiga seperti contohnya LinageOS, Resurrection Remix OS, dan lainnya sesuai dengan selera dari pengguna. Selain itu, sistem operasi android saat ini tidak hanya terdapat pada perangkat mobile smartphone saja, sistem operasi ini dapat juga ditemui pada televisi, decorder tv digital, bahkan jam tangan.

Untuk kekurangan dari sistem operasi android adalah untuk beberapa pengguna yang tidak terlalu mengerti dengan kostumisasi tidak dapat melakukannya, dikarenakan beberapa perusahaan perangkat mobile memberlakukan aturan garansi hangus apabila melakukan kostumisasi. Pilihan dari pengguna juga sangat banyak sehingga terkadang dapat menjadikanya sebagai kelebihan maupun kekurangan. Selain itu, penggunaan aplikasi yang banyak dapat membuat baterai cepat habis dan juga daya tahan baterai dari android tidak selama Symbian walaupun dari segi fitur, sistem operasi android lebih beragam dan kebanyakan selalu terkoneksi ke internet.

 iOS

iOS merupakan sistem operasi yang dibuat oleh Apple. iOS merupakan sistem operasi yang eksklusif dikarenakan perangkat yang menggunakan sistem operasi ini adalah perangkat perangkat yang merupakan buatan Perusahaan Apple sendiri. Hal ini membuat pengguna dari sistem operasi iOS lebih sedikit dari Android. Versi dari iOS dimulai dari iPhone OS 1 hingga yang terbaru adalah iOS 12.

Kelebihan dari sistem operasi iOS adalah eksklusifitasnya yang membuat iOS terkesan mewah dan memiliki settingan tersendiri yang berbeda dengan android dikarenakan perangkat keras yang digunakan memiliki konfigurasi tersendiri dan hanya dimiliki oleh Apple. Pengggunaan dari sistem operasi ini juga lebih pada penggunaan layar sentuh. Multitasking lebih terasa ringan saat melakukan perpindahan dari suatu aplikasi ke aplikasi lainnya. Dari segi tampilan, menurut saya tampilan dari iOS lebih minimalis namun elegan. Untuk daya tahan baterai, kemampuan daya tahan dari iOS berbeda-beda sesuai tipe dan penggunaan perangkat oleh pengguna.

Kekurangan dari sistem operasi ini adalah tidak semua kalangan dapat merasakan iOS dikarenakan harga perangkat Apple yang dapat dikatakan mahal. Hal ini juga merupakan salah satu faktor penggunanya tidak sebanyak android. Selain itu, untuk menginstall aplikasi tidak dapat melalui pihak ketiga, sehingga aplikasi yang dapat diinstall pada perangkat ini hanya berasal dari apple app store.
Baca SelengkapnyaSymbian, Android, dan iOS

Sabtu, 24 November 2018

FTP Server Menggunakan PROFTPD pada Raspbian

Kali ini saya akan mencoba membuat sebuah FTP Server yang dapat digunakan sebagai sarana untuk melakukan pengambilan file dari server oleh client. FTP Server yang saya buat menggunakan proftpd yang ter-install pada raspberry pi 3 model B dengan OS Raspbian. untuk client, saya menggunakan browser yang terinstal pada laptop. Kedua device yang digunakan, baik server maupun client harus berada pada satu jaringan yang sama. Skema yang saya gunakan seperti gambar berikut  


Kedua device terhubung pada satu jaringan yang sama melalui router.
Langkah pertama yang perlu dilakukan untuk membuat FTP Server pada Raspbian adalah menginstall proftpd dengan terlebih dahulu masuk sebagai super user agar dapat melakukan installasi pada system file linux dengan perintah sudo su , jika memakai password, maka akan diminta untuk memasukkan password akun, namun pada Raspbian saya tidak menggunakan password. Jika sudah masuk sebagai super user, kita dapat melakukan installasi proftpd denga perintah apt install proftpd.

Ketik y untuk melanjutkan installasi, tunggu hingga proses download dan installasi dari proftpd selesai.

 

Jika sudah selesai, maka proses installasi dari proftpd sudah selesai. Kita dapat melakukan perubahan pada konfigurasi dari proftpd dengan perintah nano /etc/proftpd/proftpd.conf. silahkan dilakukan konfigurasi yang dibutuhkan, namun saya tidak melakukan perubahan pada konfigurasi default dari proftpd.


Setelah melakukan perubahan jangan lupa di save. Setelah disave, reload kembali proftpd agar konfigurasi baru yang dilakukan teraplikasi dengan perintah service proftpd reload. 


FTP Server yang kita buat sekarang sudah dapat kita akses melalui browser. Dengan memasukkan url ftp:\\ip_raspbian. Ip Raspbian dapat diketahui dengan perintah ifconfig pada terminal. Jika diminta memasukkan username dan password, isikan username dan password default dari Raspbian karena disini saya tidak melakukan perubahan pada username dan password default dari Raspbian yaitu username : pi dan password : raspberry.


Setelah masuk, pengambilan data dari server sudah dapat dilakukan.

Baca SelengkapnyaFTP Server Menggunakan PROFTPD pada Raspbian

Jumat, 06 April 2018

Game Engine Architecture

Group Members
  • Aldo Sudibyo
  • Arman Maulana
  • Fajar Setiawan
  • I Kadek Arya Yogi
  • I Made Shabda Krisna A

Structure of a Typical Game Team
Before we delve into the structure of a typical game engine, let’s first take a brief look at the structure of a typical game development team. Game stu-dios are usually composed of five basic disciplines: engineers, artists, game designers, producers, and other management and support staff (marketing, legal, information technology/technical support, administrative, etc.). Each discipline can be divided into various subdisciplines. We’ll take a brief look at each below.
Engineers
The engineers design and implement the software that makes the game, and the tools, work. Engineers are often categorized into two basic groups: runtime programmers (who work on the engine and the game itself) and tools program-mers (who work on the off-line tools that allow the rest of the development team to work effectively). On both sides of the runtime/tools line, engineers have various specialties. Some engineers focus their careers on a single engine system, such as rendering, artificial intelligence, audio, or collision and phys-ics. Some focus on gameplay programming and scripting, while others prefer to work at the systems level and not get too involved in how the game actu-ally plays. Some engineers are generalists—jacks of all trades who can jump around and tackle whatever problems might arise during development.
Artist
As we say in the game industry, “content is king.” The artists produce all of the visual and audio content in the game, and the quality of their work can literally make or break a game. Concept artists produce sketches and paintings that provide the team with a vision of what the final game will look like. They start their work early in the concept phase of development, but usually continue to provide visual direction throughout a project’s life cycle. It is common for screen shots taken from a shipping game to bear an uncanny resemblance to the concept art.
Game Designers
The game designers’ job is to design the interactive portion of the player’s experience, typically known as gameplay. Different kinds of designers work at different levels of detail. Some (usually senior) game designers work at the macro level, determining the story arc, the overall sequence of chapters or levels, and the high-level goals and objectives of the player.
Producers
The role of producer is defined differently by different studios. In some game companies, the producer’s job is to manage the schedule and serve as a human resources manager. In other companies, producers serve in a senior game design capacity. Still other studios ask their producers to serve as liaisons be-tween the development team and the business unit of the company (finance, legal, marketing, etc).
Other Staff
The team of people who directly construct the game is typically supported by a crucial team of support staff. This includes the studio’s executive management team, the marketing department (or a team that liaises with an external marketing group), administrative staff, and the IT department, whose job is to purchase, install, and configure hardware and software for the team and to provide technical support.
What Is a Game
The general term “game” encompasses board games like chess and Monopoly, card games like poker and blackjack, casino games like roulette and slot machines, military war games, computer games, various kinds of play among children, and the list goes on. In academia we sometimes speak of “game theory,” in which multiple agents select strategies and tactics in order to maximize their gains within the framework of a well defined set of game rules. When used in the context of console or computer-based entertainment, the word “game” usually conjures images of a three dimensional virtual world featuring a humanoid, animal, or vehicle as the main character under player control.
What Is a Game Engine
The term “game engine” arose in the mid-1990s in reference to first-person shooter (FPS) games like the insanely popular Doom by id Software. Doom was architected with a reasonably well defined separation between its core software components (such as the three-dimensional graphics rendering system, the collision detection system, or the audio system) and the art assets, game worlds, and rules of play that comprised the player’s gaming experience. The value of this separation became evident as developers began licensing games and re-tooling them into new products by creating new art, world layouts, weapons, characters, vehicles, and game rules with only minimal changes to the “engine” software. This marked the birth of the “mod community” a group of individual gamers and small independent studios that built new games by modifying existing games, using free toolkits provided by the original developers.





Engine Differences Across Genres

  • First-Person Shooters (FPS)
The first-person shooter (FPS) genre is typified by games like Quake, Unreal Tournament, Half-Life, Counter-Strike, and Call of Duty. These games have historically involved relatively slow on-foot roaming of a poten-tially large but primarily corridor-based world.
 Call of Duty 2

  • Platformers and Other Third-Person Games
“Platformer” is the term applied to third-person character-based action games where jumping from platform to platform is the primary gameplay mechanic. Typical games from the 2D era include Space Panic, Donkey Kong, Pitfall!, and Super Mario Brother.
jax & dexter : the precursor legacy
Gears of War

  • Fighting Games
Fighting games are typically two-player games involving humanoid characters pummeling each other in a ring of some sort. The genre is typified by games like Soul Calibur and Tekken.

Fight Night Round 3

Tekken 3

  • Racing Games
The racing genre encompasses all games whose primary task is driving a car or other vehicle on some kind of track. The genre has many subcategories. 
Grand Turismo 5

  • Real-Time Strategy (RTS)
The modern real-time strategy (RTS) genre was arguably defined by Dune II: The Building of a Dynasty (1992). Other games in this genre include Warcraft, Command & Conquer, Age of Empires, and Starcraft. In this genre, the player deploys the battle units in his or her arsenal strategically across a large play-ing field in an attempt to overwhelm his or her opponent.


Command and Conquer 3

Age of Empires


  • Massively Multiplayer Online Games (MMOG)
The massively multiplayer online game (MMOG) genre is typified by games like Neverwinter Nights, EverQuest, World of Warcraft, and Star Wars Galaxies, to name a few. An MMOG is defined as any game that supports huge numbers of simultaneous players (from thousands to hundreds of thousands), usually all playing in one very large, persistent virtual world (i.e., a world whose internal state persists for very long periods of time, far beyond that of any one player’s gameplay session).
World of Warcraft
The Unreal Family of Engines
Epic Games Inc. burst onto the FPS scene in 1998 with its legendary game Un-real. Since then, the Unreal Engine has become a major competitor to Quake technology in the FPS space. Unreal Engine 2 (UE2) is the basis for Unreal Tournament 2004 (UT2004) and has been used for countless “mods,” university projects, and commercial games. Unreal Engine 3 (UE3) is the next evolution-ary step, boasting some of the best tools and richest engine feature sets in the industry, including a convenient and powerful graphical user interface for creating shaders and a graphical user interface for game logic programming called Kismet. Many games are being developed with UE3 lately, including of course Epic’s popular Gears of War.
Open Source Engines
Open source 3D game engines are engines built by amateur and professional game developers and provided online for free. The term “open source” typi-cally implies that source code is freely available and that a somewhat open de-velopment model is employed, meaning almost anyone can contribute code. Li-censing, if it exists at all, is often provided under the Gnu Public License (GPL) or Lesser Gnu Public License (LGPL).
Runtime Engine Architecture
A game engine generally consists of a tool suite and a runtime component. We’ll explore the architecture of the runtime piece first and then get into tools architecture in the following section.
Likee all software systems, game engines are built in layers. Normally up-per layers depend on lower layers, but not vice versa. When a lower layer depends upon a higher layer, we call this a circular dependency. Dependency cycles are to be avoided in any software system, because they lead to un-desirable coupling between systems, make the software untestable, and in-hibit code reuse. This is especially true for a large-scale system like a game engine.



Target Hardware
The target hardware layer, shown in isolation in Figure represents the computer system or console on which the game will run. Typical platforms include Microsoft Windows- and Linux-based PCs, the Apple iPhone and Macintosh, Microsoft’s Xbox and Xbox 360, Sony’s PlayStation, PlayStation 2, PlayStation Portable (PSP), and PLAYSTATION 3, and Nintendo’s DS, Game-Cube, and Wii. Most of the topics in this book are platform-agnostic, but we’ll also touch on some of the design considerations peculiar to PC or console development, where the distinctions are relevant.
Device Drivers
As depicted in Figure, device drivers are low-level software components provided by the operating system or hardware vendor. Drivers manage hard-ware resources and shield the operating system and upper engine layers from the details of communicating with the myriad variants of hardware devices available.
Operating System
On a PC, the operating system (OS) is running all the time. It orchestrates the execution of multiple programs on a single computer, one of which is your game. The OS layer is shown in Figure. Operating systems like Microsoft Windows employ a time-sliced approach to sharing the hardware with mul-tiple running programs, known as pre-emptive multitasking. This means that a PC game can never assume it has full control of the hardware it must “play nice” with other programs in the system.
Third-Party SDKs and Middleware

Most game engines leverage a number of third-party software development kits (SDKs) and middleware, as shown in Figure. The functional or class-based interface provided by an SDK is often called an application program-ming interface (API). We will look at a few examples.



Data Structures and Algorithms
Like any software system, games depend heavily on collection data structures and algorithms to manipulate them. Here are a few examples of third-party libraries which provide these kinds of services
STL. The C++ standard template library provides a wealth of code and algorithms for managing data structures, strings, and stream-based I/O.
STLport. This is a portable, optimized implementation of STL.
Boost. Boost is a powerful data structures and algorithms library, designed in the style of STL. (The online documentation for Boost is also a great place to learn a great deal about computer science!)
Loki. Loki is a powerful generic programming template library which is exceedingly good at making your brain hurt.
Graphics
Most game rendering engines are built on top of a hardware interface library, such as the following :

  • Glide is the 3D graphics SDK for the old Voodoo graphics cards. This SDK was popular prior to the era of hardware transform and lighting (hardware T&L) which began with DirectX 8
  • OpenGL is a widely used portable 3D graphics SDK
  • DirectX is Microsoft’s 3D graphics SDK and primary rival to OpenGL
  • libgcm is a low-level direct interface to the PLAYSTATION 3’s RSX graph-ics hardware, which was provided by Sony as a more efficient alternative to OpenGL
  • Edge is a powerful and highly-efficient rendering and animation engine produced by Naughty Dog and Sony for the PLAYSTATION 3 and used by a number of first and third-party game studios

Collision and Physics
Collision detection and rigid body dynamics (known simply as “physics” in the game development community) are provided by the following well-known SDKs.
  • Havok is a popular industrial-strength physics and collision engine.
  • PhysX is another popular industrial-strength physics and collision en-gine, available for free download from NVIDIA.
  • Open Dynamics Engine (ODE) is a well-known open source physics/collisionp package.
Artificial Intelligence
Kynapse. Until recently, artificial intelligence (AI) was handled in a cus-tom manner for each game. However, a company called Kynogon has produced a middleware SDK called Kynapse. This SDK provides low-level AI building blocks such as path finding, static and dynamic object avoidance, identification of vulnerabilities within a space (e.g., an open window from which an ambush could come), and a reasonably good interface between AI and animation.
Platform Independence Layer
Most game engines are required to be capable of running on more than one hardware platform. Companies like Electronic Arts and Activision/Blizzard, for example, always target their games at a wide variety of platforms, because it exposes their games to the largest possible market. Typically, the only game studios that do not target at least two different platforms per game are first-party studios, like Sony’s Naughty Dog and Insomniac studios.
By wrapping or replacing the most commonly used standard C library functions, operating system calls, and other foundational application pro-gramming interfaces (APIs), the platform independence layer ensures consis-tent behavior across all hardware platforms. This is necessary because there is a good deal of variation across platforms, even among “standardized” librar-ies like the standard C library.


Resource 
Baca SelengkapnyaGame Engine Architecture