Book Image

Lua Quick Start Guide

By : Gabor Szauer
4 (1)
Book Image

Lua Quick Start Guide

4 (1)
By: Gabor Szauer

Overview of this book

Lua is a small, powerful and extendable scripting/programming language that can be used for learning to program, and writing games and applications, or as an embedded scripting language. There are many popular commercial projects that allow you to modify or extend them through Lua scripting, and this book will get you ready for that. This book is the easiest way to learn Lua. It introduces you to the basics of Lua and helps you to understand the problems it solves. You will work with the basic language features, the libraries Lua provides, and powerful topics such as object-oriented programming. Every aspect of programming in Lua, variables, data types, functions, tables, arrays and objects, is covered in sufficient detail for you to get started. You will also find out about Lua's module system and how to interface with the operating system. After reading this book, you will be ready to use Lua as a programming language to write code that can interface with the operating system, automate tasks, make playable games, and much more. This book is a solid starting point for those who want to learn Lua in order to move onto other technologies such as Love2D or Roblox. A quick start guide is a focused, shorter title that provides a faster paced introduction to a technology. It is designed for people who don't need all the details at this point in their learning curve. This presentation has been streamlined to concentrate on the things you really need to know.
Table of Contents (10 chapters)

User data

Lua has a special data type called userdata. Userdata can store arbitrary C data structures as Lua data—it's just some arbitrary amount of memory. Userdata can have meta tables, which enables us to extend the type using the same mechanism we would use to extend tables. Like tables, userdata is compared by reference, not by value.

To create a new block of userdata memory, use the void* lua_newuserdata (lua_State*, size_t) function. The first argument of this function is the Lua state to work on, and the second argument is the number of bytes to reserve for user data. The function returns a pointer to the block of memory that Lua has reserved for this user data.

A three-dimensional vector might be stored in userdata like as follows:

struck Vec3 {
float x, y, z;
}

int make_up_vector(lua_State *L) {
Vec3* newVec = (Vev3*)lua_newuserdata(L, sizeof(Vec3));
...