Best of C Programming — August 2024
- 1
- 2
Community Picks·2y
shadps4-emu/shadPS4: PS4 emulator for Windows,Linux,MacOS
shadPS4 is an early PlayStation 4 emulator for Windows, Linux, and macOS, written in C++. Although it's still in the early stages with limited game compatibility, small games like Sonic Mania and Undertale are already working. Interested developers can check the build instructions for various platforms and contribute to the project via GitHub.
- 3
Game Developers·2y
How to become a Game Developer?
An individual shares their journey from playing video games to studying game development in college, seeking advice on the key skills and knowledge required to become a game developer. They have basic knowledge of C/C++ with OOP concepts and are learning Data Structures and Algorithms, as well as some Java and Python basics.
- 4
Community Picks·2y
Writing a game the hard way - from scratch using C. #1
The post explores creating a retro-style video game from scratch using a C compiler and basic tools, mimicking the development processes of the 1980s and early 1990s. The author delves into the historical context of game development during that era, highlighting the use of shareware, lack of internet resources, and the simplicity of games driven largely by hardware limitations. The project is not intended as a tutorial but as a narrative journey, where the author plans to build a basic top-down arena shooter with rudimentary elements before expanding its features.
- 5
Khronos·2y
Ultra Engine 0.9.7 Released
Ultra Engine 0.9.7 introduces a new decals system, particle emitters, and enhanced entity and material properties. It also includes upgraded flowgraphs, over 30 bug fixes, and various improvements to compatibility and functionality. The update aims to enhance performance and visuals for game and simulation development.
- 6
InfoQ·2y
What Can You Learn From the Fastest Code in the World?
Explore various optimization techniques to enhance code speed, especially in networking scenarios where processing packets efficiently is critical. Techniques covered include inline functions, compiler optimizations, advanced data structures like Swiss Tables, interleaved processing to reduce cache misses, and loop unrolling. Practical examples are used to demonstrate how these methods can reduce processing time from 1000 clocks per packet to just 65 clocks. The importance of benchmarking and understanding trade-offs in optimizations is also highlighted.
- 7
Lobsters·2yWhy am I writing a Rust compiler in C?
The author is working on a project called Dozer, which involves writing a Rust compiler in pure C to address bootstrapping issues with Rust. They explain the significance of bootstrapping and the complexities involved in the process, tracing the origins of compilers back to their earliest forms. The goal is to make Rust more accessible earlier in the bootstrapping process without relying on C++.
- 8
- 9
Hacker News·2y
Writing a C Compiler
The post provides a comprehensive guide to writing a C compiler, divided into three parts. The first part covers the basic elements such as unary and binary operators, loops, and functions. The second part delves into more complex data types like long integers, floating-point numbers, pointers, arrays, and dynamic memory allocation. The final part focuses on optimizing programs, including register allocation. The post also includes appendices on debugging assembly code and assembly generation.
- 10
Hacker News·2y
nicbarker/clay: High performance UI layout library in C.
Clay, a high performance 2D UI layout library in C, offers microsecond layout performance and a flex-box like model. It features zero dependencies, Wasm support, static arena-based memory usage, and a renderer-agnostic output. The library can compile to a 15kb uncompressed .wasm file for browser use, and it supports nested declarative syntax and various UI element macros like containers, text, images, and more. Additionally, it provides simple APIs for pointer interactions and scroll container handling. Clay was designed for immediate mode rendering but can also be integrated into retained mode systems using its API for visibility culling and custom elements.
- 11
- 12
- 13
Hacker News·2y
PhobosLab
high_impact is a small, open-source, 2D game engine written in C, which compiles to various platforms including Windows, Mac, Linux, and WebAssembly for browsers. Inspired by the original Impact JavaScript game engine from 2010, it provides essential features for game development, such as loading tile-maps, handling physics and collisions, sprite animation, text rendering, and audio playback. The engine is designed to be simple and minimalistic, encouraging developers to extend it with their own game-specific logic.
- 14
- 15
Lobsters·2yPlatformLab/NanoLog: Nanolog is an extremely performant nanosecond scale logging system for C++ that exposes a simple printf-like API.
NanoLog is an extremely performant nanosecond-scale logging system for C++ that can achieve over 80 million logs per second at a median latency of just over 7 nanoseconds. It achieves this by extracting static log information at compile-time, logging dynamic components during runtime, and deferring formatting to an offline process. NanoLog is available in two versions: a Preprocessor version and a C++17 version, each with its own integration method. The C++17 version is recommended for ease of use. The generated logs are in a binary format and must be decompressed to be human-readable.
- 16
Google Open Source Blog·2y
Introducing the Pigweed SDK: A modern embedded development suite
Google introduces the Pigweed SDK, a modern suite for embedded development, especially aimed at 32-bit microcontrollers like those in the Raspberry Pi Pico family. The SDK includes extensive middleware libraries, RTOS abstractions, a powerful RPC interface, and full support for Clang/LLVM toolchains. It features Visual Studio Code integration, GitHub Actions support, and a Bazel-based build system. The new release enhances development, debugging, and testing processes, aiming to reduce maintenance and debugging overheads. Official support for the new Raspberry Pi Pico 2 (RP2350) is also included, along with guides and sample applications to help developers get started quickly.