• 13
• 18
• 19
• 27
• 9
• ### Similar Content

• Hi everyone! I'm currently working on a series of books about 2D Shader Development.

The idea is to synthesize a bunch of techniques that are specifically useful for 2D, even if they work on 3D as well.

I released the first book last week. It's 4.99 on Amazon or free on the series website, https://www.2dshaders.com

This is an independent initiative, I don't work for any publisher whatsoever. The contents of the books are the result of a 4-year span where I started teaching this in Argentina and USA, always making the workshop better. Now I'm expanding it to make more sense in book form.

I'd love to hear your opinions on the idea and if you get the book let me know what you think.

By the way, the examples are in Unity, but the concepts from the book should be easily transferable to any graphics api/engine.

Hope you like it!

• While looking out for that pesky Terrator, our little alien is doing a bit of relaxed mining down on the new gas planet "Lelantos" this weekend....
#gamedev #indiedev #madewithunity #screenshotsaturday

• I have a native iOS game (objective c, XCode build) which I am considering to port to other platforms.
Core gameplay is based on solely on geographical maps, and custom drawing over maps. It also has Core Data. This part is complete in development.
What is not done yet is: monetization, gamification (leaderboards, challenges) and multiplayer functionality.
As I think more about it, I am tempted to think if this is the right time to move to a cross platform tool such as Unity. But before dedicating time to port my 5 years side-project effort in Objective C, I really want to know if its worth it.
- Does Unity support such plugins / assets that will fulfill all my above requirements?
- Unity Personal seems to have only 20 concurrent users - is it too costly scaling if I decide for extending to web and android platforms?
- What is the general workflow involved in publishing to iOS, Android, PC, and web platforms while using Unity? I mean to ask about various points of signing stuff, paying fees and getting certified.
- How long will it really take to port my entire Objective C project into Unity? I am somewhat familiar with C# but I am finding it hard fidgeting with Unity IDE as lot of things are focused around FPS and 3D while my game is still 2d - not much action involved. I seem bit overwhelmed by the list of features I see there. All in all, I do not want to lose my momentum while still making sure its portable to everywhere.
- Any assets I could use (for free to try basis in debug) that are relevant for my game?
- Last but not the least, are there any costs that I need to be paying upfront to Unity, for using it (apart from their monthly subscription model)? I don't understand their costing for multiplayer in conjunction with their subscription fees - if someone could kindly elaborate.
• By GytisDev
Hello,
me and few friends are developing simple city building game with unity for a school project, think something like Banished but much simpler. I was tasked to create the path-finding for the game so I mostly followed this tutorial series up to episode 5. Then we created simple working system for cutting trees. The problem is that the path-finding is working like 90% of the time, then it get stuck randomly then there's clearly a way to the objective (tree). I tried looking for some pattern when it happens but can't find anything. So basically I need any tips for how I should approach this problem.
Use this image to visualize the problem.
• By aymen
please any know how can i' calculate the centroid from any number vertices

# Unity RFC: Epoch Programming Language, Release 12

This topic is 2153 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

For the last few years, I've been hacking (on and off) on a programming language project called Epoch. Epoch began right here on GDNet as an experiment in designing a forward-thinking language for rich abstraction and powerful computational modeling. Despite the fact that I have had far less time to dedicate to this project than I would like, progress has been steady (albeit slow!) and Release 12 of the language is now available.

• Release Notes
• Complete source code (VS2010 format)
• Windows runtime binaries

Epoch still has a ways to go before it is truly production-ready, but even now, the language is reasonably capable and can be used for simple Win32 applications with no problems. (This is underscored by the Era prototype IDE for the language, which is written in Epoch, and included in the distribution.)

For the curious, here's a simple Epoch program:

fib : 0 -> 1 fib : 1 -> 1 fib : integer n -> integer f = fib(n - 1) + fib(n - 2) deep_thought : -> integer answer = 0 { integer a = fib(5) integer b = fib(8) answer = a + b } entrypoint : { integer the_answer = deep_thought() print(the_answer) }

I'm very interested in community feedback on all aspects of the language.

• How does the syntax strike you?
• Does the language seem interesting? As a theoretical project? As it currently exists?
• Would you find the concepts behind Epoch to be useful for your work?
• What kinds of things would you like to see in a language like this?
• What would motivate you to try it out?

Despite its age, Epoch is still a relatively young and malleable project. I hope to be able to turn it into a truly great language, and I appreciate the community's part in helping make that happen.

##### Share on other sites
"How does the syntax strike you?"

It looks like some kind of functional language? (I didn't use any that kind of language before).
I'm confused by its typing. Is it strong typing, or weak typing, or hybrid?
fib:0 -> 1, no type? For other part, with strong type integer?

"What would motivate you to try it out?"

1, Giant commercial companies are using it.
and 2, Community support
and 3, Some successful productions are written in it.

##### Share on other sites
Epoch is a procedural language at heart, but it does draw a lot of inspiration from functional languages. I plan to support pure functional programming as an optional subset of the language, with compile-time enforcement of immutability (or contained mutability) and other features familiar to functional programmers.

The type system is strong and static; all types are known at compile time, and types never change unless explicitly casted. However, type annotation is optional in many contexts, because Epoch provides a type inference engine to deduce the types of most expressions in the language.

##### Share on other sites
How does the pattern matching (if that's what's being done) work in the fib example above?

##### Share on other sites
Calls to fib() with an argument of 0 match the first pattern, and return 1; similarly with calls with an argument of 1. This can be determined in some cases statically at compile time, in which case the calls are directly made to the appropriate overload; other cases must be detected at runtime, which will first check for the correct overload to resolve to, and then try the default case overload if none of the special cases match. This provides a basic recursive pattern match with a valid base case for termination.

##### Share on other sites
Does it compile as equality checks or is there some fancy symbol compare going on under the hood?

##### Share on other sites
Pattern matching on primitive types is equality-based, yes. I haven't settled on a mechanism for type-decomposition in pattern matching largely because I haven't settled on a lot of details of the type system yet :-)

##### Share on other sites
Note: I haven't had time to examine the code, or deeply examine the website, so apologies if any of these questions are too obvious. Nor am I particularly trying to be nit-picky, I'm sure you're aware of some of these.

How does the syntax strike you?
[/quote]
I like the idea, but there does seem to be heavy historical precedent that programmers like a certain syntax. The following thoughts struck me:

Is assume it is currently not possible to omit the "variable name" of the return value. It would be nicer to be able to write:
 fib : integer n -> integer = fib(n - 1) + fib(n - 2) 

Is there some syntactic (or other) restriction that prevented you from writing deep_thought like so?
 deep_thought : -> integer answer = fib(5) + fib(8) 
Perhaps you wrote it long hand just to show more examples of complex functions.

It also appears that you are forced to declare (and initialise) the "result" variable, which forces it to be in scope for the entire function, which might cause bugs where it is unintentionally used in the function body (for example, having the "return" variable named something like "i"). Have you considered a visual basic style "assign to the function name to set the return value"?

Is it possible to early return from a function? Maybe you have a list of example programs or the syntax somewhere on the site, but I didn't find it.

The syntax for a parameterless function is a little poor, the colon followed by arrow do not look great together.

##### Share on other sites
Anonymous returns are possible; they look like this:

add : integer a, integer b -> a + b

The reason that an anonymous return cannot be used in the fib example is because the type inference engine cannot determine that all possible values given to fib() will recurse down to the base case, and therefore cannot infer that the return type of the general case overload is integer, even though the two base case overloads are integer return type.

deep_thought was written longhand just to show how it could be done; there is no reason why it couldn't be:

deep_thought : -> fib(5) + fib(8)

Variable name shadowing is prohibited in Epoch so there is (IMO) no real risk of accidentally using the return value variable as something else in the function body. I personally don't like the FunctionName=returnvalue syntax, but that's just me; I'm not opposed to changing it if a substantial majority of people find it clearer.

Early returns can be accomplished using the built-in return() statement.

##### Share on other sites
I always feel bad for not commenting more, though I don't have much to say...

How does the syntax strike you?

It's fine. I dislike using simply lines as delimiters, and I kinda dislike the current return value form but understand it. It's syntax... *shrug*

Does the language seem interesting? As a theoretical project? As it currently exists?
[/quote]

It was a lot more interesting when the focus was auto-parallelization and targetting GPUs and the such. That served as a strong differentiator (for me) as to 'what does Epoch provide that I can't nicely get with ____'.

Would you find the concepts behind Epoch to be useful for your work?
[/quote]

Not really, but I also don't have a lot of experience with GPU processing and I would be hesitant to have a developing language be my first entry there.

What kinds of things would you like to see in a language like this?
[/quote]

I like seeing progress, even if it makes me sad at the lack of my own. I like seeing differentiation. Lots of languages can do the basic things in a cute manner. What hard things can it do for me?

What would motivate you to try it out?
[/quote]

Tons more free time and motivation. And if I had a problem that it was well suited for enough for me to learn it and risk the cutting edge concerns.