Cheap Xbox Games

Hex grids: code generator

 tháng 3 29, 2015     grids, haxe, hexagons, project     No comments   


In the last post I described how I had expected to generate lots of algorithm variants, but ended up discovering a better approach. The new system is different from the system I used when I wrote the hex grid guide. It's simpler and more modular, and I have ideas for making it even simpler. If I am able to simplify enough, I may not need to generate algorithms dynamically. In any case, the final step is to convert the algorithms in abstract format into a specific programming language.




Transforming the algorithms into code was easier than figuring out how to structure the algorithms, but it was also more tedious. For expressions, it's pretty straightforward. A syntax tree like Add(Name("x"), Int(3)) turns into x+3 in Python/C/Java/JS or (+ x 3) in Racket/Scheme/Lisp/Clojure. For statements, it's pretty straightforward too, but there are a few more differences between languages, including indentation and placement of braces. For declarations, languages start differing more, with functions, structs, classes, methods, modules, namespaces, etc. I wanted to generate code that uses each language's canonical style, including naming conventions and comments. I'll show some examples, using the distance function:





Function("cube_distance", Int, [Param("a", Cube), Param("b", Cube)],
Return(
Int(
Divide(
Add(
Add(Call("abs",
Subtract(Field("a", "x"), Field("b", "x"))),
Call("abs",
Subtract(Field("a", "y"), Field("b", "y")))),
Call("abs",
Subtract(Field("a", "z"), Field("b", "z")))
),
Int(2)
)
)
)
)




Python
Python uses / for float division and // for integer division. My syntax tree does not. Instead, when I see a pattern Call(Int, Divide(a, b)) I want to output a//b instead of int(a/b). This shows up in the distance function:



def cube_distance(a, b):
return (abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z)) // 2




Python doesn't need a separate class to hold int and float coordinates, so FractionalCube should be merged into Cube.






C++
C++ uses / for float division and / for integer division, but it depends on the types of the operands. My syntax tree doesn't track the types of the subexpressions, so I don't know which I'll get. As a result, I end up with an unneccessary int() in the distance function:



int cube_distance(Cube a, Cube b)
{
return int((abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z)) / 2);
}






Racket
Division is tricky here too. Racket uses quotient instead of / when the result is going to be an integer. Like Python's output, I can look for Call(Int, Divide(a, b)) and output (quotient a b) instead of (truncate (/ a b)). Racket also supports multi-argument addition, so I could convert (+ (+ a b) c) into (+ a b c). Here's the distance function in Racket:



(define (cube-distance a b)
(quotient
(+ (abs (- (cube-x a) (cube-x b)))
(abs (- (cube-y a) (cube-y b)))
(abs (- (cube-z a) (cube-z b))))
2))




The naming convention is cube-distance instead of cube_distance.






C#, Java
Declarations are different here. Instead of top-level functions, I need to make everything into a method. For now, I'm using static methods, but it might make sense to use instance methods for some of the algorithms. Here's what distance looks like in C#:



public class Cube
{
...
static public int Distance(Cube a, Cube b)
{
return (int)((Math.Abs(a.x - b.x) + Math.Abs(a.y - b.y) + Math.Abs(a.z - b.z)) / 2);
}
}




Instead of cube_distance, I should use Cube.Distance in C# and Cube.distance in Java.








The differences between languages got larger as I moved to bigger functions. The sequence and record data types translate easily: C++ arrays/structs, Python lists/records, C# arrays/classes, Racket vectors/structs. But some algorithms use sets and maps, and it's less clear what types to use there. For Racket and Haskell, I want to use a more functional style, but for C++ and Python, I use an imperative style. In the end:




  • I didn't implement the more complex algorithms. They're harder, and I decided I should prioritize getting the simple ones working across many languages and many grid types. If I had known this from the beginning, I would've used a simpler proto-algorithm approach.

  • I didn't implement the more complex approach of adapting code for each grid type. Instead, I used the simpler approach of having each grid type convert to Cube coordinates, and then use the cube algorithms. If I had known this from the beginning, I would've written the algorithms by hand instead of writing a proto-algorithm to algorithm conversion step.

  • I didn't implement all the grid types. Instead of all the variants of Cube, Axial, and Offset, I only implemented one Cube variant, one Axial variant, and two Offset variants. If I had known this from the beginning, I would've written a simpler system.

  • The code for Axial coordinates is mostly different from the code for Offset coordinates. I was expecting more code to be shared. This made think that I probably shouldn't treat these two the same.

  • I now realize that my choice of Cube/Axial isn't great. Instead of q=x, r=z I should have picked q=x, r=y! I could have switched the y and z axes on the cube diagram. If I merge Cube and Axial I'll make this change then.

  • I wrote the proto-algorithms expecting that I'd output functional style (Racket, Haskell), object-oriented style (C#, Java, Haxe), and module style (C++, Python, Javascript). Looking back, I probably should have used object-oriented style everywhere. The style differences somewhat complicated things.

  • I also wrote the proto-algorithms expecting that I'd use them on the page itself, and also convert them to code for a downloadable library. That complicated things. I should have focused on downloadable libraries.

  • The code generator for Racket mostly works but it wasn't a purely functional style (because my "proto-algorithms" are imperative). I had planned to make the standard algorithms work in a purely functional style but some of the more complex algorithms will probably be too much work to justify a separate version. Looking back, I shouldn't have spent time trying to figure out a functional style for Racket; it wasn't worth spending time on a different style for just one language.

  • I didn't implement variants in code style, such as indentation and brace placement. When I started the project it seemed like it would be cool, but it just doesn't seem important anymore.

  • I didn't implement a "pro" version of the code that would use small arrays with 2 or 3 elements instead of named fields. Thinking of them as arrays or matrices would also potentially allow SIMD or GPU instructions. Pointy vs flat variants become an index swizzle. Converting hex to pixel and pixel to hex become matrix multiplies.




It's been a fun project, and as usual there are so many more things I want to do with this, but there are so many other things I want to do too, so I want to wrap this up.




  • Should I switch to the simpler system that merges Axial and Cube together? This will require a major update to the hex grid guide. It would make my advice much simpler. Instead of "use Cube for calculations and Axial for storage" I could say "use Axial everywhere". However, I'm worried that it will annoy anyone who's using the current hex grid page, because the new system will be incompatible.

  • Should I treat pointy vs flat as an x/y switch or as a 90° rotation? I am leaning towards x/y switch. I will also have to switch q/r to keep q being "columns" and r being "rows".




What's my next step? Testing. I have unit tests for the generated code, and they all pass, but I want to test the code in a real project. What real project do I have? The hex grid page itself. I'm going to replace the hand-written hex grid code for the page with the generated code. This will give me confidence that I have the right design and set of algorithms.




What are other things I need to do before I publish? Add comments to the generated code, implement more outputs (Javascript, Typescript, Java, Objective C, Racket), add an option for overloaded operators (+ and ==) in languages where that's standard style, and figure out instance vs class methods.




That's it for now. My blog posts aren't polished but I hope they give you a "behind the scenes" view of the stuff that goes through my head and the things I try while working on these projects. I also find that trying to write down what I'm doing helps me work out the design and details, and this series of posts was no exception. By "thinking out loud" I've been able to resolve some of the issues I had been trying to figure out. I hope to have the rest of the code generator finished in a few weeks.

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

Hex grids: choosing data structures and generating algorithms

 tháng 3 26, 2015     grids, haxe, hexagons, project     No comments   


In the last blog post I described the project I've been working on: generating hex grid code libraries, for lots of different types of hex grids.
I wanted to transform "proto-algorithms" into algorithms for a specific type of hex grid, and then convert the algorithm into code.. That was the pattern I initially expected to follow, so I'd end up with maybe 50 algorithms multiplied by 70 grid types multiplied by 20 languages, or a total of 70,000 code snippets.




I tried experimenting with other hex grid algorithms to see how they might transform depending on geometry, and realized that most of them don't work like the hex distance example in the previous blog post. I spent some time looking at all the algorithms to determine:




  • Do I want to transform the code handling cube coordinates into code handling each other coordinate system? Code to code transforms are hard.

  • Do I want to transform the data for other coordinate systems into data for cube coordinates, then run an algorithm for cube coordinates? Data to data transforms are easy.

  • Does it even make sense to run the algorithm in a non-canonical coordinate system? Many of the algorithms are best with with cube coordinates.

  • Does the algorithm work purely on the grid system, or does it also involve how the hex is drawn on the screen? Most of the algorithms do not involve the screen layout.




I concluded that I had vastly overestimated the number of different algorithms that need to be generated. Many of the variants end up being exactly the same code. For example, I wanted to generate variants for people who have a y-axis pointing up vs down, but only two of the algorithms have to change; all the others can stay the same. Also, it is a lot of work for me to transform the code handling cube coordinates into code handling other systems, but a compiler's optimizer can do all that work for me for free if I use data-to-data transforms. I shouldn't bother writing code-to-code transforms.




While trying to figure out the best way to write the variants, I ended up with this structure:





codegen-classes.png





Cube
is the canonical coordinate system used for algorithms. I've implemented only one of many variants.

FractionalCube
is used to represent non-grid locations. I needed this for line drawing and for pixel to hex conversion.

Hex
is the coordinate system used for storage. I've implemented Axial (only one variant) and Offset (even and odd parity).

Layout
is used to convert from hexes to screen coordinates for drawing and from screen coordinates to hexes for mouse clicks. I've implemented Pointy and Flat topped hex layouts.

Point
is the coordinate system for screen coordinates. This will typically come from your graphics library, but for the generated code I've included a placeholder data structure.




To implement these, I wanted a language that lets me work easily with abstract syntax trees. My usual choices are PLT Scheme (Racket) or ML (OCaml). Scheme is a little nicer for this because it gives me an easy way to define the proto-algorithms using macros so that I don't have to write my own parser. For this particular project though I wanted to run the code generator on the server (to generate all variants and run unit tests on the generated code) and in the browser (to generate custom code based on your preferences). I chose Haxe, an ML-influenced language with the programming features I wanted (tagged unions and pattern matching and macros) and also the platform features I wanted (can run on the server but can also generate Javascript to run in the browser). Also, my hex grid code is already written in Haxe, so I was hoping to be able to reuse it for the proto-algorithms.




I wrote code that reads function definitions and outputs code to generate the syntax trees for those definitions. For example, if I write x+3, Haxe will give me something like EBinOp(OpAdd, CIdent("x"), CInt(3)). I want to produce something like Add(Name("x"), Int(3)), so I need the macro to return something like ECall(CIdent("Add"), [ECall(CIdent("Name"), [CString("x")]), ECall(CIdent("Int"), [CInt(3)])]). I have code that reads code and generates code that generates code. Scheme/Racket is an ideal language for that kind of thing.




In the process of implementing the proto-algorithm to algorithm compiler, I made some discoveries and realizations:




  • My diagrams are written in Javascript, which doesn't have a separate int and float type, but in many languages I need to distinguish these. As a result, I created a type FractionalCube with floats that's separate from Cube with ints. FractionalCube is used for two main algorithms, pixel to hex and line drawing, and both of those need a helper routine, hex rounding.

  • I realized that my explanation for pointy vs flat top hexagons is inconsistent. In one section, I claim it's a rotation of 30°. In other sections, I claim the algorithms are simply different. In my underlying code, I often swap x and y. The code is simplest if swapping x and y, or rotating 90°, but the names of axes stay most consistent (q for columns, r for rows) if I rotate by 30°. I don't know which I should use.

  • It's also possible to generalize even further, and rotate by any angle. This is less "simple" because it means I need to insert an additional rotation step in a few places, but it's more general. I'm not yet ready to switch to this.

  • In the offset grid section, I claim that there are four types, odd-r, even-r, odd-q, and even-q. However, if pointy vs flat is a swapping of x and y (instead of a rotation by 30°), then odd-r and odd-q are related by swapping both x/y and q/r. Much simpler! This means there are really only two offset types, odd-parity and even-parity.

  • It's also possible to generalize even further, and say that the offset can be by any odd number. The odd-parity (odd-r and odd-q) variants become an offset by -1 and the even-parity (even-r and even-q) variants become an offset by +1. This simplifies even more. I'm not yet ready to switch to this.

  • The remaining grid variants involve renaming the axes and changing their signs. I'd like to implement this at some point, but I don't know if it's really worth it.

  • Cube and Axial coordinate systems are pretty much the same, except Cube explicitly stores the third coordinate, and Axial calculates it when needed. It might make sense to merge the two, and call the axes q, r, s. I need to think about this more.

  • Offset and Axial share much less code than I had expected. One of the algorithms (hex_direction) doesn't work with offset grids, and two of the algorithms (hex_neighbor and hex_add) have different implementations for offset and axial. If I merge Cube and Axial, then Offset would be its own thing. I need to think about this more.

  • It's pretty clean to separate out anything involving the screen from everything else, which only involves the grid. This means variants like the y-axis pointing up or down go away, except for a small part of the code. Screen transformations include translations (centering hex 0,0 at x,y other than 0,0), scaling (setting the size of the hex, including hexes that are taller or shorter than usual), rotations (primarily 90° but any angle is possible), and transformations for isometric views.




I started this project thinking I would need to generate lots of algorithms. I thought the algorithm generation step would take the most work, and the code generation step would be relatively easy. I ended up spending a lot more time thinking about how to represent the modules. I don't actually need to generate lots of algorithms. Instead, I am considering changing the page to use a simpler approach:





codegen-simpler.png





If I do that, it will be a major change to the hex grid guide.




In the next post I'll talk about the code generation.


Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

Hex grids: procedurally generating code

 tháng 3 24, 2015     grids, haxe, hexagons, project     No comments   


I've been questioning some of my approach to writing tutorials. Most of the time I provide algorithms, math, and pseudocode but not runnable code. Part of the reason is that I've been on so many platforms and languages in the past, and I don't want to spend time on things that are useful today but not five years from now. Part of the reason is that I learn better by studying pseudocode and producing runnable code. And part of the reason is that many of the topics I cover (pathfinding, simulation, AI) aren't really about code, but about techniques that are useful when writing code. Most of it has to be adapted for each game.




Hex grids are different though. There's not as much to be learned by studying the code; I think most of it is learned through the diagrams and explanations. Adaptation is sometimes tricky, and I don't want you spending your time on trivial bugs like missing a negative sign. So I decided to try, for this one page, providing some useful code.




Which language? Which platform? Which of the 70+ grid types? How many combinations of these can I practically provide code for?




Well, of course, the solution is procedural generation, right? Right??




I attempted to procedurally generate downloadable libraries to handle hex grids.




The plan was:




  1. Write some "proto-algorithms" that could work with any geometry.

  2. Ask the reader about the geometry of hex grids being used.

  3. Mix the "proto-algorithm" with a description of the geometry, generating algorithms in some abstract format.

  4. Ask the reader about the programming language and style.

  5. Turn the generated algorithms into downloadable code.




design of my hex grid code generator




For example, I would write a "proto-algorithm" by hand for hex distances:





/* Distance between two hexes */
function hex_distance(a, b) {
var ac = cube(a);
var bc = cube(b);
var dx = ac.x - bc.x;
var dy = ac.y - bc.y;
var dz = ac.z - bc.z;
return abs(dx) + abs(dy) + abs(dz);
}




Let's say that the reader uses an axial coordinate system where x=q, y=-r, z=r-q. This is different from the one I use in my hex grid guide. So if you wanted to take the hex distance algorithm from my page and adapt it for this coordinate system, it'd be a little tricky, with some renaming and sign flipping. I should be able to generate it instead, by inlining the cube conversion:





function hex_distance(a, b) {
var ax = a.q;
var ay = -a.r;
var az = a.r - a.q;
var bx = b.q;
var by = -b.r;
var bz = b.r - b.q;
var dx = ax - bx;
var dy = ay - by;
var dz = az - bz;
return abs(dx) + abs(dy) + abs(dz);
}




and then simplifying that code:





function hex_distance(a, b) {
var dx = a.q - b.q;
var dy = -a.r + b.r;
var dz = a.r - a.q - b.r + b.q;
return abs(dx) + abs(dy) + abs(dz);
}




and simplifying more:





function hex_distance(a, b) {
return abs(a.q - b.q) + abs(b.r - a.r) + abs(a.r - a.q - b.r + b.q);
}




Then if the reader says, I want Java code for this, with three space indentation, I could convert this abstract format into Java code:





public abstract class AbstractSpringBeanFactoryProxy { ... }




No, no, not like that! Sorry. ;-) How about this:





public class Hex {
public int q, r;
...
/**
* Distance between two hexes
*/
public static distance(Hex a, Hex b) {
return Math.abs(a.q - b.q) + Math.abs(b.r - a.r) + Math.abs(a.r - a.q - b.r + b.q);
}
...
}




Wouldn't that be cool? Custom-built algorithms for your choice of hex grid, in your choice of language, in your preferred programming style? With comments? And if I'm generating code that could be error-prone, I should have unit tests too, right? And of course I should procedurally generate the unit tests. And if I'm generating unit tests, I should generate all possible grid variants and all possible languages on the server, and compile and run the unit tests, so that I make sure that whichever choices the reader makes, the code will be correct.




combinations of code to generate on the server and client




I knew it was a little ambitious, and probably way overkill, but I decided to try anyway.




Well, as expected, I didn't succeed. In the next blog post, I'll describe what happened.

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

Hex grids: simplifying the variants

 tháng 3 22, 2015     grids, hexagons, math     No comments   


On the original hex grid guide I had claimed there were over 70 variants of hex grids. Most of these turn out to be merely a different choice of axes, either by renaming them or by negating the sign. Here are some variants of offset coordinates:




rename q and r offset axes




And here are some variants of axial coordinates:




rename q and r axial axes




Axial and Cube are really the same, except Cubes explicitly store the third coordinate and in Axial we calculate it in the accessor, when needed.




rename cube axes




Why would you want some of the other labelings? If I use an alternate labeling of offset coordinates, I can rotate the entire grid from pointy top to flat top and back:




rotate offset hex grid




This simplifies the math. It means I no longer need to treat pointy and flat top hexes separately, but instead I can focus on just a few basic grid types (cube, axial, even offset, odd offset) and then produce the pointy and flat top from those. I can further simplify by merging axial and cube together. I don't yet know if I want to do that. Can I merge even and odd offset? Yes, probably, but I think I won't right now.




parity-offset.png




Pointy top vs Flat top is a rotation. I had originally claimed it was a rotation of 30° but it is simpler to think of it as a rotation of 90°. It's even simpler to think of it as a permutation of x,y into y,x (renaming axes). There are also several coordinate systems that I don't cover on the page, and don't plan to anytime soon. However I might add a supplemental page that describes them.




I believe the new descriptions of coordinate systems will be simpler than the previous ones. However, they're also different, and I worry about changing the system that I've described in some incompatible way.




  1. Should I unify Axial and Cube?

  2. Even if I don't, should I rename Cube's coordinates from x,y,z to q,r,s? That way they match up more closely, and Cube is no longer confused with cartesian coordinates.

  3. Should I unify even Offset (even-q, even-r) and odd Offset (odd-q, odd-r)? I think the math is slightly uglier but it'd work just fine.

  4. Should I try to support all possible axis assignments, or just some "canonical" ones like I do now?

  5. Should I try to preserve the specific choices of axes on the current page, or choose the ones that make things simpler?




Update: [2015-03-28] I'm no longer convinced that swapping x,y is the easiest way to deal with pointy vs flat top. It's the simplest implementation, but it causes "q" and "r" to no longer correspond to "column" and "row", and I think it might be worth preserving that mnemonic. A 90° rotation is nice to implement too but I think the 30° rotation best preserves q/r.

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

SDL2 FPS & on Finding New Open Source Games

 tháng 3 08, 2015     No comments   

I took a quick look whether one could find some open source games news (new game projects to be specific) by sorting SourceForge game projects by date but no luck, only established projects seem to show up there.

So I did the same on GitHub, and after making educated guesses whether projects might be worth clicking based on their title and short description, I f ound graphitemaster/neothyne.


The project uses SDL2, is about half a year old, doesn't have shooting functionality but at least movement feels kind of nice and definitely fast. In fact I'm honestly surprised that SDL is usable for 3D.
Neothyne is an attempt at getting back to the roots of good old twitch shooting akin to that of Quake World..
It certainly feels more like Cube 1 or Quake, rather than OpenArena, Sauerbraten or Nexuiz.

What surprised me even more that it compiles in mere seconds.



To come back to the point of finding games: My impression is that development is getting faster, projects are getting more but also less ambitious (read: more realistic to achieve) and less care is being given to licenses but at the same time more legal resources are being used because of OpenGameArt's and Freesound's popularity.

Personally, I have been using old onboard graphics for two years or more (no chance to run anything interesting 3D) because I'd prefer to upgrade from a HTC Wildfire (Buzz) to a OnePlus One, rather than buying a new Power Supply and Graphics card, having a louder computer and the knowledge that it's using more electricity.

This is also the reason why the above video is so tiny. :) No 720p 3D for my GPU.

If you find it interesting to browse through lists of game projects, trying to find a playable one that suits your interest, I recommend the GitHub search. Just don't rely on the "game" search key too much and imagine what the developer might use to describe it (probably genre names...).

For your entertainment, a list of "game" project short descriptions from GitHub.

  • Actual game for the Capstrong DePaul capstone team
  • recreating cs203-game1 repository because of a corruption in the original repo that I can't figure out how to fix atm
  • the tic tac toe game on node.js
  • Survival game
  • kouluprojekti2
  • Hotline Miami inspiered HTML5/JS game for school project
  • Island is a programming game designed as a support for Software Engineering classes
  • game
  • Just a little game I'm working on
  • Card game...
What's your favorite? Can you find anything better?
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Bài đăng mới hơn Bài đăng cũ hơn Trang chủ

Popular Posts

  • Games Design and Games programming students team up.
    Our Games design students collaborating with web design coding students @JAMUCLAN . Coding Tutor Mark Porter and Design tutor, Bev Bush brou...
  • Hexoshi - inspired by Metroid
    Hexoshi ( forum thread ) is a libre game generally inspired by the Metroid series, notably the older versions. It is seeking funding using ...
  • Cara Klaim PS+ 14 Hari Secara Gratis (new trick 2019)
    Sebuah trick yang saya coba beberapa hari yang lalu, saya menggunakan trick ini untuk mengklaim game gratisan PS+ Region 2 karena di region...
  • Introduction to TiltBrush by Google.
    My first experience of drawing with Tiltbrush with the Vive headset was exciting as it felt like a very new experience.   We also arranged...
  • White Paper Games launch 'The Occupation' at EGX Rezzed 2017.
    White Paper Games are showing their new game 'The Occupation' at EGX Rezzed this week, March 2017. See the trailer here : Check out...
  • Marco Carmo is Games Design Nominee for Lancs Arts festival 2018
    Many congratulations to  Marco Carmo  who is our Nominee for Games Design in the Media Tech Lancashire Arts Festival Awards 2018.  #lancsart...
  • Review Indie Game: Sigi - A Fart for Melusina (PS4)
    Sigi - A Fart for Melusina merupakan sebuah game 2D plat former adventure buatan dari  pixel.lu , game ini bercerita kan tentang petualanga...
  • Review Indie Game: FullBlast (PS4)
    FullBlast , merupakan sebuah game indie pesawat arcade developer dari Ratalaika Games , Game yang cukup menarik, dan saat memainkan nya kita...
  • Posting iseng Out of Box
    Iseng-iseng posting out of box aja, setelah coba searching di youtube dengan key "Kenapa Harus ASUS ROG?" ternyata banyak juga vid...
  • Examples of work by UCLan first year Games Design students.

OpenGameArt Summer Game Jam #3 has begun

One of our affiliate websites OpenGameArt (OGA), a free repository for public domain and copyleft licensed art, has just begun hosting this...

Tìm kiếm Blog này

Được tạo bởi Blogger.

Lưu trữ Blog

  • tháng 7 2019 (1)
  • tháng 6 2019 (11)
  • tháng 5 2019 (7)
  • tháng 4 2019 (10)
  • tháng 3 2019 (7)
  • tháng 2 2019 (14)
  • tháng 1 2019 (16)
  • tháng 12 2018 (20)
  • tháng 11 2018 (14)
  • tháng 10 2018 (12)
  • tháng 9 2018 (25)
  • tháng 8 2018 (6)
  • tháng 7 2018 (5)
  • tháng 6 2018 (10)
  • tháng 5 2018 (12)
  • tháng 4 2018 (33)
  • tháng 3 2018 (5)
  • tháng 2 2018 (10)
  • tháng 1 2018 (25)
  • tháng 12 2017 (5)
  • tháng 11 2017 (5)
  • tháng 10 2017 (2)
  • tháng 9 2017 (6)
  • tháng 8 2017 (3)
  • tháng 7 2017 (8)
  • tháng 6 2017 (13)
  • tháng 5 2017 (12)
  • tháng 4 2017 (17)
  • tháng 3 2017 (14)
  • tháng 2 2017 (10)
  • tháng 1 2017 (9)
  • tháng 12 2016 (3)
  • tháng 11 2016 (13)
  • tháng 10 2016 (14)
  • tháng 9 2016 (3)
  • tháng 7 2016 (3)
  • tháng 6 2016 (5)
  • tháng 5 2016 (1)
  • tháng 4 2016 (8)
  • tháng 3 2016 (2)
  • tháng 2 2016 (3)
  • tháng 1 2016 (3)
  • tháng 12 2015 (5)
  • tháng 11 2015 (8)
  • tháng 10 2015 (2)
  • tháng 9 2015 (5)
  • tháng 8 2015 (3)
  • tháng 7 2015 (2)
  • tháng 6 2015 (2)
  • tháng 5 2015 (6)
  • tháng 4 2015 (6)
  • tháng 3 2015 (5)
  • tháng 2 2015 (4)
  • tháng 1 2015 (4)
  • tháng 12 2014 (4)
  • tháng 11 2014 (4)
  • tháng 10 2014 (5)
  • tháng 9 2014 (5)
  • tháng 8 2014 (4)
  • tháng 7 2014 (8)
  • tháng 6 2014 (9)
  • tháng 5 2014 (4)
  • tháng 4 2014 (6)
  • tháng 3 2014 (8)
  • tháng 2 2014 (5)
  • tháng 1 2014 (8)
  • tháng 12 2013 (8)
  • tháng 11 2013 (8)
  • tháng 10 2013 (9)
  • tháng 9 2013 (11)
  • tháng 8 2013 (8)
  • tháng 7 2013 (7)
  • tháng 6 2013 (10)
  • tháng 5 2013 (12)
  • tháng 4 2013 (14)
  • tháng 3 2013 (8)
  • tháng 2 2013 (3)
  • tháng 1 2013 (2)
  • tháng 7 2012 (2)
  • tháng 6 2012 (1)
  • tháng 5 2012 (1)
  • tháng 4 2012 (1)
  • tháng 2 2012 (1)
  • tháng 1 2012 (2)
  • tháng 12 2011 (1)
  • tháng 10 2011 (1)
  • tháng 9 2010 (3)
  • tháng 8 2010 (1)
  • tháng 6 2010 (1)
  • tháng 4 2010 (1)
  • tháng 2 2010 (1)
  • tháng 1 2010 (1)
  • tháng 11 2009 (1)
  • tháng 8 2009 (1)
  • tháng 7 2009 (1)
  • tháng 6 2009 (3)
  • tháng 5 2009 (3)
  • tháng 4 2009 (1)
  • tháng 3 2009 (2)
  • tháng 1 2009 (3)
  • tháng 12 2008 (1)
  • tháng 11 2008 (2)
  • tháng 8 2008 (1)
  • tháng 6 2008 (2)
  • tháng 2 2008 (2)
  • tháng 11 2007 (1)
  • tháng 7 2007 (1)
  • tháng 6 2007 (2)
  • tháng 4 2007 (1)
  • tháng 3 2007 (1)
  • tháng 2 2007 (1)

Nhãn

  • ‘Drawing for Games’ session!
  • 'Plinky Plonk' version 2 is out!
  • #DS16 Uclan Games Design Private view.
  • #UCLanCF - MA Show
  • 0ad
  • 14 Uclan Games Design Alumni are credited on Lego Starwars Force Awakens.
  • 2d
  • 2x0ng
  • 3D
  • 3rd Year student
  • 9-Bit Idol pitch for Dare To Be Digita
  • A Grand Day Out with UCLan Games Design.
  • a las barricadas
  • A very Merry Christmas to you all
  • AAA Game Review
  • Action Games
  • Adam Mattis.
  • Adventure Games
  • alienarena
  • Alpha Texturing
  • ALUMNI GAMES DESIGNERS HAVE ‘THE FORCE’
  • Alumni Robin Willians work results in demand for GTA vehicle.
  • Alumni Sian Knight begins job with Fat Fraken Studios.
  • ancientbeast
  • Andy Gahan
  • Andy Wood of Double Fine Productions QA Session
  • annex-glest-mod
  • antargis
  • arcade
  • arewealone
  • art
  • Arthur Parsons
  • Arthur Parsons of TTGames awarded an Honorary Fellowship from Uclan
  • Arthur Parsons visit to Uclan Games Design Course 2017
  • article
  • arxendofsun
  • arxliberatis
  • assaultcube
  • Athletic achievements by Uclan Games Design student
  • AtomicGameEngine
  • Augsburg University of Applied Sciences visit to Uclan
  • award
  • BA Games Design at UCLan
  • BA(Hons) Games Design at Uclan.
  • BA(Hons) Games Design UCLan Graduates
  • Bajakan
  • ball-rolling
  • Bank BTN
  • Berita
  • Best Game Award at Uclan Games Jam 2016 .
  • bge
  • BIG CONGRATULATIONS to WHITEPAPERGAMES
  • Blackvoxel
  • blender
  • bombable
  • bos
  • bos-wars
  • boswars
  • BugBox- visual programming experiment.
  • bullet
  • bushidoblocks
  • bygfoot
  • canvas
  • cataclysm
  • Chocolate Doom
  • codecombat
  • commercial
  • community
  • competition
  • Computer
  • conquests
  • contest-gamedev
  • corebreach
  • Crates and Barrels
  • creativecommons
  • Crosby Game WIP
  • crowdfunding
  • crowdsourcing
  • crystalspace
  • Cube2
  • cytopia
  • Dan Bavin starts new job at Ninja Theory
  • Dan Bavin wins Creative Focus Award for Design 2015
  • darkmod
  • darkplaces
  • data dealer
  • deadmorning
  • Debut
  • deceiver
  • design
  • Design Director at Travellers Tales
  • devcorner
  • dhewm3
  • Diablo
  • Digital
  • Doom
  • Doom3
  • Double presentation by Alumni for UCLan Games Design
  • duckmarines
  • eatthewhistle
  • ecksdee
  • emiliapinball
  • emscripten
  • Emulator
  • Engine
  • engines
  • erebus
  • escoria
  • European Women in Games Conference 2016
  • Even more recent graduates now working in the Games industry
  • event-conference
  • Excellent NSS Uni Stats for Uclan BA(Hons) Games Design.
  • extremetuxracer
  • FGD
  • Fighting Games
  • Finale of the Games Design Degree Show
  • Finalist in 'Break Through Talent' Award.
  • First week of Uclan Games Jam 2015
  • First Year Games Design Students make games at UCLan
  • First year project examples
  • flare
  • flash
  • flightgear
  • Fraud
  • Freeablo
  • freedink
  • freegamer
  • freeorion
  • freesound
  • Freshers Games Design Challenge 2018
  • frogatto
  • FS-UAE
  • Further good news for UCLAN 3rd year student
  • future
  • Gagal
  • Game
  • Game by Nellie Sandblom as published on Scirra Arcade.
  • game engine
  • GameDevelop
  • Games
  • Games Course Alumni Postcards
  • Games Design and Games programming students team up.
  • Games Design course visit from Concept Games Artist
  • Games Design day of Speakers from industry.
  • Games design first years using 'actual' Ether-One assets.
  • Games Design Graduation ceremony 2018
  • Games Design students at the Harris.
  • Games Guru
  • Games student chosen for Noise Festival
  • Games students visit Blackpool Zoo and Tower
  • Gatget Review
  • genre-adventure
  • genre-buildingsim
  • genre-cards
  • genre-educational
  • genre-engine
  • genre-exploration
  • genre-flighsim
  • genre-fps
  • genre-mmo
  • genre-platformer
  • genre-precision
  • genre-puzzle
  • genre-racing
  • genre-roguelike
  • genre-rpg
  • genre-rts
  • genre-sandbox
  • genre-shooter
  • genre-space
  • genre-stealth
  • genre-tbs
  • geometry
  • gigalomania
  • Girls design games @jamuclan
  • glamour
  • GLSL
  • godot
  • Gorynlich
  • Grads In Games visit to UCLAN for the Get in the Game Careers Talk Tour
  • Graduate success
  • graphics
  • Gratis
  • grids
  • gsoc
  • h-craft
  • Hand Painted texturing
  • Hardware
  • haxe
  • HDD
  • hedgewars
  • hero of allacrost
  • hexagons
  • hexenedgeofchaos
  • hexoshi
  • Horror Games
  • html5
  • http://gamescourse.blogspot.co.uk/2017/03/ba-games-design-at-uclan.html
  • https://www.uclan.ac.uk/about_us/case_studies/game-jam-2018.php
  • ideas
  • idtech2
  • idtech3
  • idtech4
  • Indie Games Review
  • indiegogo
  • Induction week for BA(Hons) Games Design Uclan.
  • Info Handheld 3DS
  • Info PS4
  • Info TV
  • infrastructure
  • International Women's Day celebration
  • Introducing Pinterest to students as a visual research tool
  • Introduction to PanoPainter.
  • Introduction to TiltBrush by Google.
  • ioquake3
  • ironbane
  • irrlamb
  • irrlicht
  • James Burton - MA Games Design - UCLan
  • jediknight
  • jme
  • jmonkey3
  • jrpg
  • Jual
  • keeperrl
  • Knowledge
  • language
  • Lego Game Design Live brief
  • licensing
  • lincityng
  • linux
  • linuxgameawards
  • lipsofsuna
  • Live Stream on Twitch TV.
  • love
  • löve
  • löve2d
  • lugaru
  • MA Design Degree Show - UCLan. Featuring our MA Games Design students!
  • MA Games Design Show at Uclan 2013
  • mac
  • making-of
  • Mandiri
  • mapgen4
  • maps
  • Marco Carmo is Games Design Nominee for Lancs Arts festival 2018
  • math
  • MCV talk to the finalists ahead of this year’s Women in Games Awards.
  • Meet the Developer - Steven Thornton
  • Meet the Developer. Stephen Morris of Greenfly Studios
  • MegaGlest
  • MIT
  • mode-multiplayer
  • mode-onedevicemultiplayer
  • mode-singleplayer
  • Moonshades
  • More robot games designed by Year 1 Uclan Games design students
  • More Top-down shooter games- designed by year 1 Uclan students.
  • More Uclan Games Graduates from class of 2017 now have jobs!
  • Movie Review
  • My Story
  • Mystery
  • naev
  • neverball
  • New Games Design Students arrive for Induction week
  • Nik Hughes. Realtime Job Update
  • Nintendo Switch
  • noise
  • Nominated for Develop Award
  • nova pinball
  • occulusrift
  • oceansheart
  • octaforge
  • ogre3d
  • olpc
  • open-source
  • openart
  • opencaesar3
  • opencity
  • opendungeons
  • openflashpoint
  • openfootball
  • opengameart
  • openig
  • openjk
  • openmw
  • openra
  • openxcom
  • osx
  • overdose
  • ows
  • pathfinding
  • patreon
  • Pete Bottomley to talk at GDC 2015
  • Peter Dimitrov makes his mark.
  • Peter Dimitrov.
  • Peter Field - Games Designer at Naughty Dog
  • Peter Field from 'Media Molecule' visits Uclan Games design
  • Peter Field of Media Molecule visits Uclan Games Design
  • pinball
  • pixel art
  • Platform Games created by Year 1 Games Design students @UclanCF
  • platform-android
  • platform-handheld
  • platform-html5
  • platform-linux
  • platform-osx
  • platform-webgl
  • platform-windows
  • Playful ideas by Bev Bush - try them on GameJolt.
  • pleethebear
  • Plinky Plonk Xmas App is live
  • Portable Console
  • portrait-marathon
  • PotM
  • power
  • programming
  • project
  • projectfootball
  • projectofthemonth
  • PS Plus
  • PS+
  • PS4
  • PS4 Bajakan
  • PS4 Original
  • PS5
  • PSN Store
  • Puzzle Games
  • racer
  • racing
  • Racing Games
  • ransom
  • Recent Graduate employed as a Games Designer
  • Recent Uclan Games Design Graduates now in work!
  • redeclipse
  • retro
  • retro games
  • retux
  • Review
  • roguerepublic
  • Role-Playing Games
  • ROTC
  • rpg
  • rts
  • Rumor dan isu
  • ryzom
  • Saija Sipila interviewed on Linkedin.
  • Sarah Akers and Will Butterworth visit Uclan Games Design
  • scifi
  • SDD
  • sdl
  • Secret Santa day for Uclan Games Design
  • Shaun Mooney
  • Shooting Games
  • Siân Knight
  • Simulation Games
  • sintel
  • sintelthegame
  • solarus
  • Some of our UCLan Games Design Success Stories.
  • space station 13
  • spacenerdsinspace
  • Spider Man
  • Sports Games
  • SSD
  • standalone
  • Stealth Games
  • steam
  • strategy
  • Strategy Games
  • Strife
  • structure
  • Student Hero Nomination for James Moorby
  • stuntrally
  • style-historical
  • style-retro
  • style-sci-fi
  • summerofcards
  • superpowers
  • supertuxkart
  • Survival Games
  • systemshock
  • Tales of Maj'Eyal
  • TBS
  • td
  • terminal-overload
  • Terra Centauri
  • Tesseract
  • The Castle Doctrine
  • The Great Northern Creative Festival
  • The Great Northern Creative Festival Games Event.
  • The Great Northern Expo award for Games Design 2108
  • The Great Northern Festival - Games Design UCLan
  • The Impact of Play in Society.
  • THE NORTHERN FESTIVAL AWARDS
  • theskyofverdun
  • theyearning
  • Three more Games course Alumni Posters
  • Tips and Trick PS4
  • tobutobugirl
  • tol
  • ToME
  • Top Down Shooter Bugs
  • Top Down Shooter BUGS!
  • torque2d
  • torque3d
  • tournament
  • towerdefense
  • tremulous
  • triangles
  • Trip and Trick PS4
  • tutorial
  • UCLan Alumni selected as part of BAFTA Games Crew.
  • UCLan Alumni Steph McStea named in the 100 rising stars of the UK games industry.
  • Uclan BA(Hons) Games Design Book
  • Uclan Game Jam 2015
  • UCLan Game Jam 2017
  • UCLan Games Alumni 'White Paper Games' featured in both Edge and Games TM Magazines.
  • Uclan Games Design - Night of the Private View 2014
  • UCLan Games Design Alumni
  • Uclan Games Design Alumni are amongst the best at EGX 2017
  • Uclan Games Design Christmas Party 2018.
  • UCLan Games Design Course trip to EGX 2018
  • Uclan Games Design Degree Show 2013
  • Uclan Games Design degree show 2014
  • UCLan Games Design Degree Show 2018
  • UCLan Games Design Degree Show 2019
  • Uclan Games Design Easter Quiz
  • UCLan games design groups present Lego game ideas.
  • Uclan Games Design Induction week 2014
  • Uclan Games Design Second Year student showcase 2014
  • Uclan Games Design Student
  • Uclan Games Design students in Global Game Jam
  • Uclan Games Design visit EUROGAMER 2015
  • Uclan Games Grad Steph McStea is now...
  • Uclan Games Jam 2016 Finale and Awards
  • Uclan Games Student designs Summer Reading Scheme characters for The SCART Club
  • UCLan Games Student enters Rookies Competition 2019
  • Uclan Games students working with 'Soccer Manager'.
  • UCLan Global Game Jam 2016
  • Uclan Groups present GAME JAM concepts
  • Uclan Lecturer
  • Uclan's Games Design Alumni
  • Ukie team on the UK pavilion at Gamescom
  • unvanquished
  • UPS
  • Urho3D
  • valyriatear
  • vdrift
  • vdrift-ogre
  • veraball
  • video
  • video games
  • Views of Preston created by Uclan Games Design Students
  • Visit from Tom Kewell of Foundry 42
  • Visit to Uclan Games Design by Joe Nelson
  • visits Uclan Games Design course
  • voadi
  • voronoi
  • vote
  • voxel
  • vue
  • Warner Bros. visits Uclan
  • warsow
  • warzone2100
  • wesnoth
  • White Paper Games launch 'The Occupation.
  • White Paper Games launch 'The Occupation' at EGX Rezzed 2017.
  • WhitePaper Games QA session with Uclan Games Course
  • windows
  • worldforge
  • wtactics
  • WTS
  • Wurmsyn
  • wyrmsun
  • xonotic
  • ya3dag
  • Year 1 Games Design student completes timelapse concept art film.
  • yodasoccer
  • ysoccer
  • zelda
  • zero-k

Báo cáo vi phạm

  • Trang chủ

Giới thiệu về tôi

Admin
Xem hồ sơ hoàn chỉnh của tôi

Copyright © Cheap Xbox Games | Powered by Blogger
Design by Hardeep Asrani | Blogger Theme by NewBloggerThemes.com | Distributed By Gooyaabi Templates