|
The indie gamedev community is awesome: so willing to share tips, tricks, advice, and even detailed tutorials explaining important concepts. Here, I’ve rounded up a few dozen of my favourite examples from around the internet, covering coding, maths, game design, and being a game developer. Read these, then code us up an online, multiplayer version of Risk Legacy, please.
|
|
|
|
|
Really? Lazyfoo is not on the list? o.o Seems fishy
|
|
|
|
|
If you’re not familiar with it, TypeScript adds a lot of necessary features to JavaScript to make it suitable for building real apps, while still “compiling down” to JavaScript to maintain JS’s single biggest advantage: ubiquity. Further, TypeScript has tooling inside Visual Studio so that it works nicely with a wide variety of Windows projects, including Win8/JS projects. However, while Microsoft has made a nice Win8/TS sample available, there are currently no Visual Studio project templates for building my own apps. Luckily, it was easy enough to build some... Start your TypeScript projects with these Visual Studio templates.
|
|
|
|
|
When Joe Woodland dreamed up the bar code in the late 1940s, it looked like a bull’s-eye — a series of concentric circles. But although Woodland went to work for IBM in the early ’50s and helped Big Blue push the UPC into the market, he sold his original bull’s eye patent to another company, and the code IBM settled on looked more like a rectangle — a series of short, parallel lines.... Laurer first realized the code could be construed as some sort of apocalyptic signpost while it was still under development in the early 1970s. His daughter happened to be studying the Book of Revelation, and he couldn’t help but notice that the code harbored a few 6′s — though not the 6′s alleged by the urban legend that’s still bouncing around the internet. And when he had opened the fourth seal, I heard the voice say, "Attention shoppers...."
|
|
|
|
|
My response? They (the [REDACTED] protestors) are all ID-TEN-Ts and have a non ending BrainNotFoundException, coupled with an IAmVeryGullibleexception and an IAmStupidException.
Bob Dole The internet is a great way to get on the net.
2.0.82.7292 SP6a
|
|
|
|
|
This might come as a surprise to readers not into computer programming, but professional and hobbyist programmers alike all use the same tools as we did 60 years ago — one-dimensional, sequential plain text. It’s like writing a single document in Word without using any formatting, with the goal of instructing a large symphony orchestra to perform a complex musical piece. That app you’re using could as well have been built in the 1950s, had we the same powerful hardware back then. We are thoughtlessly using Grandpa’s old toolbox to build a spaceship. Your favourite fancy-pants modern programming language is from the 1950s.
|
|
|
|
|
What an idiot. "Writing code" just works. Nothing better has come along because there (probably) is nothing better.
Would you want to try dragging and dropping images? It's very limited in what it can do. Currently I'm writing a lot of SSIS packages -- and it just sucks! It's horrible to work with and in a many many cases I'm left writing code anyway.
How would you discuss problems and solutions with colleagues if you can't use words to do it.
I'm just glad I never used punch cards or switches.
|
|
|
|
|
We're also using glass in our windows, which is essentially the same technology that the ancient Egyptians were using in 2000 BC.
We're also using clay bricks to make houses, which is essentially the same technology that the ancient Mesopotamians were using in 3000 BC.
We're also using water to bathe ourselves, which is essentially the same technology that has been used since before the last ice age.
Invent something better if you don't like it.
|
|
|
|
|
Rasmus Andersson-
I'm amazed that the majority of people commenting on your article have a 'what we have is as good as it can get ' mentality. I think from the first line of your article I had a bit of an epiphany--not one that I can fully explain yet and not one that I would dare describe to a seemingly short-sighted group of peers.
Several contributors point out that processors execute operations in a sequential manner, and that it 'all comes down to 1s and 0s in the end' or something like that. Well guess what guys, assembly language takes a certain variant of programming discipline to do well. And even at that level, while you are telling the processor to load data and executable code with values in registers from specific memory segments, even assembler is an abstraction. Assembly code is compiled down to the actual bit values that a processor can understand.
My point here is that as programming has evolved; we've seen the introduction of object-oriented languages. Yes, of course it still all comes down to bit vales for the processor at run-time, but OO design helps us as HUMANS to take abstract needs and use the concept of classifications (more often than not called classes) to allow ourselves to create solutions for complex real-world business requirements using a much higher level of abstraction.
Even modern OSs and run-time platforms help us to abstract with high-level languages because we don't have to worry about handling the threads notifying our applications of events triggered by the user, e.g. button clicks, scroll bar movements, etc. We are to a certain extent freed from a lot of the mundane, thanks to the OS, the compiler and in many cases the run-time support. And let’s not forget the extensive pre-built libraries we have at our disposal.
Yes, we have all of the above, better ways to organize software using classes, conceptual tiers for separation of concerns, software designs lending themselves to extensibility and reuse. But as Rasmus points out, we still sit at a console typing text to ‘classify’ much of these pieces of code, and defining how they will interact once they become objects during program execution
Text is linear, even when defining classes that may interact in a multidimensional manner when used in an application.
We use linear text to describe how multiple threads should run simultaneously. That is certainly an example of using a one-dimensional language to describe a multi-dimensional process.
Rasmus Andersson is perhaps a bit too forward-looking for the audience here (no put-down intended). I happen to think he is quite correct in challenging future creators of development tools and environments to take us to the next level, where we can concentrate more on the problem, in an abstract way, much more in the way the user would describe it, and be able to translate the solution in a manner that is more efficient than writing text for the most part (although I will always believe in the ability to get to the lowest-level instruction layer when needed).
In any case, whether you happen to agree with Rasmus or not, we may want to prepare psychologically for a future in software design and development in which being adept at writing code textually in a classic IDE is of diminishing value, and the ability to embrace radically different tools that increase productivity immensely are going to be what keeps us as good developers in business.
|
|
|
|
|
Well, there is Alice, which I used in college years ago to create games in a graphical environment.
And then there are the multitudinous designers available (e.g., Entity Designer, Windows Forms Designer, WPF Design Surface, SharePoint Workflow Designer, markup designers, and so on).
And there are IDE's like Code Bubbles that are textual, but add lots of graphical niceties.
|
|
|
|
|
The name Windows RT wasn’t chosen to convey a message about Windows moving to ARM processors. Nor was it chosen to convey that it was a Tablet OS. The name appears to have been chosen primarily for one reason, it is an operating system devoted to running Windows RunTime apps. It splits the mainstream Windows product into two families. Windows for running Win32 “desktop” and Windows RunTime applications and Windows RT that drops the legacy Win32 application support. Windows RT is Microsoft’s go forward client operating system.
|
|
|
|
|
What’s the best way to kick off 2013? By emulating a 28 year old computer in your browser of course! SAE is the Scripted Amiga Emulator, an open source project created by Rupert Hausberger. His aim is ‘simply’ to make classic Amiga emulation possible in modern web browsers. And to that end he’s written an Amiga emulator in native JavaScript. Not a pre-compiled Java/C to JS hybrid, but basic JavaScript that anyone with the know-how can play with. You do need a beast of a PC to run SAE... maybe better to dig out that old Amiga after all.
|
|
|
|
|
Computers are ubiquitous in modern life. They offer us portals to information and entertainment, and they handle the complex tasks needed to keep many facets of modern society running smoothly. Chances are, there is not a single person in Ars' readership whose day-to-day existence doesn't rely on computers in one manner or another. Despite this, very few people know how computers actually do the things that they do. How does one go from what is really nothing more than a collection—a very large collection, mind you—of switches to the things we see powering the modern world? Telling a computer what to do is actually quite simple when broken down into simple concepts.
|
|
|
|
|
Finding errors earlier and more easily is one of the advantages of TypeScript. You can use optionally static typed (optionally) variables, functions, objects to help detect possible mismatches in your code right in your editor. Simply add the appropriate type or define an interface for more complex and custom types, and you are off and running! Defining types is by far my favorite feature of TypeScript. Types are still optional, but this is a nice option if you're the typed type type.
|
|
|
|
|
When you make a game, you often have enemies for the player to combat. You want these enemies to seem intelligent and present a challenge to the player to keep the game fun and engaging.... Obviously I can’t cover everything in this introductory tutorial, but I can show you how to get started with a hands-on example of adding AI into a simple game! In the process of adding AI into this game, you’ll learn about two common AI techniques along the way: steering and finite state machines. Cake and grief counseling will be available at the conclusion of the newsletter.
|
|
|
|
|
While we have been developing a website that displayed user uploaded images in fixed size regions, we have encountered some interesting problems. Should we resize the image to fit the fixed size region? Should we crop the image? Maybe we should mix the two? The no-brainer solution is to crop the image by focusing on the center. This naîve solution gave amazingly acceptable results, but sometimes it fails badly if the interesting region lies outside the cropped zone. Our algorithm should be able to somehow locate automatically the interesting part of the image. Here's an algorithm for automatically estimating what's the most important part of an image.
|
|
|
|
|
I made the mistake of publicly commenting on someone's idea of a RESTful API. And already - I've probably lost you. I don't know any single term more explosive and zeal-inducing than REST and "what it means to be RESTful". It needs explaining. Because clearly you don't know REST.
|
|
|
|
|
The flurry of database action over the past year rendered the usual discussion around structured or unstructured, SQL, NoSQL, and NewSQL databases even more, um, nuanced than before. Matthew Aslett, research manager at 451 Research took the bull by the horns and updated his previous (one-month-old) database road map to include all sorts of new entries. And here (drumroll please) is the result. Continue past key-value and turn right at Big Table. If you run into sharding, you've gone a table too far.
|
|
|
|
|
The number of seconds since the very beginning of 1970, known as Unix time, is often maintained in a single variable in the computer’s operating system. When Unix was first designed, this number was stored in 32 bit variable. That means that the number could range from 0 to 232. Zero corresponds to the midnight January 1, 1970 (UTC). So what time does 232 correspond to? That will be 3:14:07 (UTC) on January 19, 2038. Bad things will happen then to computers that still are still using 32 bit integers to store Unix time. Two-step authentication, cryptography and a little introduction to Message Authentication Codes (MAC).
|
|
|
|
|
Merry Christmas, makers! We’re guessing a lot of you found Raspberry Pis under the tree this morning and are eager to start hacking around with it. We’ve compiled a list of a few of our favorite quick tips that may come in handy as you explore the platform. sudo make me a robot.
|
|
|
|
|
Microsoft’s recent move to disband the Expression Studio suite, and discontinue some of its component products, is the latest example of a retrenchment that is returning the Developer Division (DevDiv) to its roots. Understanding that history will help make sense of the last couple of years of DevDiv moves, whether you think they make sense or not. Apple blocked Adobe’s Flash, took Silverlight down with it... and put DevDiv back on track.
|
|
|
|
|
Russian firm ElcomSoft on Thursday announced the release of Elcomsoft Forensic Disk Decryptor (EFDD), a new forensic tool that can reportedly access information stored in disks and volumes encrypted with desktop and portable versions of BitLocker, PGP, and TrueCrypt. EFDD will still set you back a solid $299. EFDD offers access to encrypted information either by completely decrypting everything or by doing so for individual files in real time. You can choose to either decrypt all files and folders stored in the cryptographic container (full, unrestricted forensic access to all stored information) or mount the encrypted volume as new drive letter for instant access (information is decrypted on-the-fly). This $299 tool makes your disk encryption obsolete.
|
|
|
|
|
All is not doom and gloom - the program still has to acquire Encryption Keys, as they say on their website, by one of 3 methods....
By analyzing the hibernation file (if the PC being analyzed is turned off);
By analyzing a memory dump file
By performing a FireWire attack (PC being analyzed must be running with encrypted volumes mounted).
'g'
|
|
|
|
|
Garth J Lancaster wrote: By analyzing a memory dump file [edit: if the PC being analyzed is turned off :S https://en.wikipedia.org/wiki/Cold_boot_attack[^]]
I guess following the best practices on TrueCrypt website (disable hibernation & sleep), and disabling the firewire in BIOS, combined with a panic button to purge RAM should be sufficient
|
|
|
|
|
http://opensource.apple.com/[^]
All MacOSes, between 10.0.0 and newest 10.8.2, all iOSes since 1.0 through 6.0.1, XCode since 1.2 till newest 4.5, and more. Kernel, drivers, graphic routines, I/O, everything. And, a set of reference documentation (e.g. how to write kernel modules).
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|